【问题标题】:Multiple log streams in CloudWatch - PostgreSQL RDSCloudWatch 中的多个日志流 - PostgreSQL RDS
【发布时间】:2019-07-19 13:44:10
【问题描述】:

我已将日志从 Amazon RDS Postgres 实例发布到 CloudWatch:

  • 发布的日志
  • CloudWatch 日志
  • Postgresql

转到 CloudWatch 服务,我看到有 4 个不同的“流”,其中包含来自同一时间的相似数据:

这四个有什么区别? 我检查过,所有文件中都有诸如 UPDATE、SELECT 等语句。 我不确定我应该分析哪一个。

【问题讨论】:

    标签: postgresql amazon-web-services amazon-rds amazon-cloudwatchlogs


    【解决方案1】:

    迟到总比不到好,但 AWS 支持人员告诉我,在 RDS 中的 PostgreSQL 更高版本中,它们并行写入日志以提高性能。

    我也按照您的方式导航到日志,直接转到 CloudWatch,但显然访问日志的正确方法是转到 AWS 控制台上的 RDS 实例,单击 Configuration 选项卡,然后在最右边的列应该在Published Logs/CloudWatch Logs 部分下有一个可点击的链接(在我的例子中是 PostgreSQL)。

    单击该链接应将您带回 CloudWatch,但现在来自四个并行流的所有日志条目现在应该按顺序排列。

    【讨论】:

    • 查看组合日志的另一个选项是在 CloudWatch 中选择所有这些并选择“搜索日志组”。
    【解决方案2】:

    通过实验我发现@krispyjala 提供的解决方案并不能保证 CloudWatch 中的日志消息将按照它们写入实例日志的相同方式进行排序(日志可以从控制台下载或通过 RDS API)

    亚马逊唯一可行的解​​决方案是启用以毫秒为单位的日志记录,这由无法更改的 RDS 参数 log_line_prefix 控制。

    不幸的是,目前没有可靠的方法将多个 CloudWatch 流加入到单个消息流中,从而保留原始顺序。

    CloudWatch 记录三位信息:原始消息时间戳、消息本身和摄取时间戳。原始消息时间戳只给出了一秒钟,因此我们不能依赖它。摄取时间戳最多可能与原始时间戳相差几天,因此它会受到随机网络和处理延迟的影响,因此在加入流时不能依赖它。

    抱歉,没有解决方案,直到开启以毫秒为单位的日志记录,这是 AWS 代表向我保证的工作(截至 2021 年 4 月 8 日)

    【讨论】:

      猜你喜欢
      • 2019-11-20
      • 2020-02-17
      • 1970-01-01
      • 2017-09-03
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      相关资源
      最近更新 更多