将 Aurora PostgreSQL 日志发布到 Amazon CloudWatch Logs - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 Aurora PostgreSQL 日志发布到 Amazon CloudWatch Logs

您可以配置 Aurora PostgreSQL 数据库集群,以定期将日志数据导出到 Amazon CloudWatch Logs。这样做时,Aurora PostgreSQL 数据库集群的 PostgreSQL 日志中的事件将自动发布 到 Amazon CloudWatch(作为 Amazon CloudWatch Logs)。在 CloudWatch 中,您可以在 Aurora PostgreSQL 数据库集群的日志组 中找到导出的日志数据。日志组包含一个或多个日志流,其中包含来自集群中每个实例的 PostgreSQL 日志中的事件。

通过将日志发布到 CloudWatch Logs,您可以将集群的 PostgreSQL 日志记录保存在高持久性存储中。借助 CloudWatch Logs 中提供的日志数据,您可以评估和改进集群的操作情况。还可以使用 CloudWatch 来创建告警和查看指标。要了解更多信息,请参阅 在 Amazon CloudWatch 中监控日志事件

注意

将您的 PostgreSQL 日志发布到 CloudWatch Logs 会消耗存储空间,并且您需要为该存储空间支付费用。请务必删除所有不再需要的 CloudWatch Logs。

对于现有 Aurora PostgreSQL 数据库集群关闭导出日志选项,不会影响 CloudWatch Logs 中已经保存的任何数据。根据您的日志保留设置,现有日志在 CloudWatch Logs 中仍然可用。要了解有关 CloudWatch Logs 的更多信息,请参阅什么是 Amazon CloudWatch Logs?

对于以下版本,Aurora PostgreSQL 支持将日志发布到 CloudWatch Logs。

  • 14.3 及更高的 14 版本

  • 13.3 及更高的 13 版本

  • 12.8 及更高的 12.x 版本

  • 11.12 及更高的 11.x 版本

开启将日志发布到 Amazon CloudWatch 的选项

要将 Aurora PostgreSQL 数据库集群的 PostgreSQL 日志发布到 CloudWatch Logs,请选择集群的 Log export(日志导出)选项。在创建 Aurora PostgreSQL 数据库集群时,您可以选择 Log export(日志导出)设置。或者,您可以稍后修改集群。当您修改现有集群时,其每个实例的 PostgreSQL 日志将从那时起发布到 CloudWatch 集群。对于 Aurora PostgreSQL,PostgreSQL 日志(postgresql.log)是唯一发布到 Amazon CloudWatch 的日志。

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 为您的 Aurora PostgreSQL 数据库集群开启 Log export(日志导出)功能。

您可以选择 Log export(日志导出)选项,以开始将 PostgreSQL 日志从 Aurora PostgreSQL 数据库集群发布到 CloudWatch Logs。

从控制台开启 Log export(日志导出)功能
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

  3. 选择要将其日志数据发布到 CloudWatch Logs 的 Aurora PostgreSQL 数据库集群。

  4. 选择修改

  5. Log exports(日志导出)部分中,选择 PostgreSQL log(PostgreSQL 日志)。

  6. 选择 Continue (继续),然后选择摘要页面上的 Modify cluster (修改集群)

您可以开启日志导出选项,以开始使用 Amazon CLI 将 Aurora PostgreSQL 日志发布到 Amazon CloudWatch Logs。为此,请使用以下选项运行 Amazon CLI 命令 modify-db-cluster

  • --db-cluster-identifier—数据库集群标识符。

  • --cloudwatch-logs-export-configuration — 为数据库集群导出到 CloudWatch Logs 而设置的日志类型的配置设置。

您还可以运行以下 Amazon CLI 命令之一来发布 Aurora PostgreSQL 日志:

通过以下选项运行上述 Amazon CLI 命令之一:

  • --db-cluster-identifier—数据库集群标识符。

  • --engine — 数据库引擎。

  • --enable-cloudwatch-logs-exports — 为数据库集群导出到 CloudWatch Logs 而启用的日志类型的配置设置。

根据您运行的 Amazon CLI 命令,可能需要其他选项。

以下命令创建一个 Aurora PostgreSQL 数据库集群以将日志文件发布到 CloudWatch Logs。

对于 Linux、macOS 或 Unix:

aws rds create-db-cluster \ --db-cluster-identifier my-db-cluster \ --engine aurora-postgresql \ --enable-cloudwatch-logs-exports postgresql

对于 Windows:

aws rds create-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --engine aurora-postgresql ^ --enable-cloudwatch-logs-exports postgresql

以下命令修改现有的 Aurora PostgreSQL 数据库集群以将日志文件发布到 CloudWatch Logs。--cloudwatch-logs-export-configuration 值是 JSON 对象。此对象的键是 EnableLogTypes,其值为 postgresql

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster \ --db-cluster-identifier my-db-cluster \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql"]}'

对于 Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --cloudwatch-logs-export-configuration '{\"EnableLogTypes\":[\"postgresql\"]}'
注意

使用 Windows 命令提示符时,确保在 JSON 代码中转义双引号 ("),方法是使用反斜杠 (\) 作为其前缀。

以下示例修改现有的 Aurora PostgreSQL 数据库集群以禁用将日志文件发布到 CloudWatch Logs。--cloudwatch-logs-export-configuration 值是 JSON 对象。此对象的键是 DisableLogTypes,其值为 postgresql

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["postgresql"]}'

对于 Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbinstance ^ --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"postgresql\"]}"
注意

使用 Windows 命令提示符时,必须在 JSON 代码中转义双引号 ("),方法是使用反斜杠 (\) 作为其前缀。

您可以开启日志导出选项,以开始使用 RDS API 发布 Aurora PostgreSQL 日志。为此,您可以使用以下选项运行 ModifyDBCluster 操作:

  • DBClusterIdentifier – 数据库集群标识符。

  • CloudwatchLogsExportConfiguration – 为数据库集群导出到 CloudWatch Logs 而启用的日志类型的配置设置。

您还可以通过运行以下 RDS API 操作之一,使用 RDS API 发布 Aurora PostgreSQL 日志:

使用以下参数运行 RDS API 操作:

  • DBClusterIdentifier—数据库集群标识符。

  • Engine — 数据库引擎。

  • EnableCloudwatchLogsExports — 为数据库集群导出到 CloudWatch Logs 而启用的日志类型的配置设置。

根据您运行的 Amazon CLI 命令,可能需要其他参数。

在 Amazon CloudWatch 中监控日志事件

随着 Aurora PostgreSQL 日志事件已发布并可用作 Amazon CloudWatch Logs,您可以使用 Amazon CloudWatch 查看和监控事件。有关监控的更多信息,请参阅查看发送到 CloudWatch Logs 的日志数据

当您开启日志导出时,将使用前缀 /aws/rds/cluster/ 以及 Aurora PostgreSQL 的名称和日志类型自动创建一个新的日志组,如下模式所示。

/aws/rds/cluster/your-cluster-name/postgresql

例如,假设一个名为 docs-lab-apg-small 的 Aurora PostgreSQL 数据库集群将其日志导出到 Amazon CloudWatch Logs。它在 Amazon CloudWatch 中的日志组名称如下所示。

/aws/rds/cluster/docs-lab-apg-small/postgresql

如果存在具有指定名称的日志组,Aurora 将使用该日志组为 Aurora 数据库集群导出日志数据。Aurora PostgreSQL 数据库集群中的每个数据库实例都会将其 PostgreSQL 日志作为不同的日志流上载到日志组。您可以使用 Amazon CloudWatch 中提供的各种图形和分析工具,检查日志组及其日志流。

例如,您可以在 Aurora PostgreSQL 数据库集群的日志事件中搜索信息,并使用 CloudWatch Logs 控制台、Amazon CLI 或 CloudWatch Logs API 来筛选事件。有关更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的搜索和筛选日志数据

原定设置情况下,创建新的日志组时,对其保留期使用 Never expire(永不过期)。您可以使用 CloudWatch Logs 控制台、Amazon CLI 或 CloudWatch Logs API 更改日志保留期。要了解更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的更改 CloudWatch Logs 中的日志数据留存

提示

您可以使用自动化配置(例如 Amazon CloudFormation)创建具有预定义日志保留期、指标筛选条件和访问权限的日志组。

使用 CloudWatch Logs Insights 分析 Aurora PostgreSQL 日志

通过将 Aurora PostgreSQL 数据库集群中的 PostgreSQL 日志发布为 CloudWatch Logs,您可以使用 CloudWatch Logs Insights 在 Amazon CloudWatch Logs 中交互式搜索和分析日志数据。CloudWatch Logs Insights 包括查询语言、示例查询和其他用于分析日志数据的工具,以便您可以识别潜在问题并验证修复方法。要了解更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的使用 CloudWatch Logs Insights 分析日志数据。Amazon CloudWatch Logs

要使用 CloudWatch Logs Insights 分析 PostgreSQL 日志
  1. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,打开 Logs(日志)并选择 Log insights(日志洞察)。

  3. Select log group(s)(选择日志组)中,为您的 Aurora PostgreSQL 数据库集群选择日志组。

    
                        选择 Aurora PostgreSQL 日志组。
  4. 在查询编辑器中,删除当前显示的查询,输入以下内容,然后选择 Run query(运行查询)。

    ##Autovacuum execution time in seconds per 5 minute fields @message | parse @message "elapsed: * s" as @duration_sec | filter @message like / automatic vacuum / | display @duration_sec | sort @timestamp | stats avg(@duration_sec) as avg_duration_sec, max(@duration_sec) as max_duration_sec by bin(5 min)
    
                        在查询编辑器中进行查询
  5. 选择 Visualization (可视化) 选项卡。

    
                        Visualization(可视化)选项卡。
  6. 选择 Add to dashboard(添加到控制面板)

  7. Select a dashboard(选择控制面板)中,选择一个控制面板或输入名称以创建新的控制面板。

  8. Widget type(小组件类型)中,为您的可视化选择一个小组件类型。

    
                         控制面板。
  9. (可选)根据您的日志查询结果添加更多小组件。

    1. 选择 Add widget

    2. 选择小组件类型,例如 Line

      
                                选择一个小组件。
    3. Add to this dashboard(添加到此控制面板)窗口中,选择 Logs(日志)。

      
                                将日志添加到控制面板中。
    4. Select log group(s)(选择日志组)中,为您的数据库集群选择日志组。

    5. 在查询编辑器中,删除当前显示的查询,输入以下内容,然后选择 Run query(运行查询)。

      ##Autovacuum tuples statistics per 5 min fields @timestamp, @message | parse @message "tuples: " as @tuples_temp | parse @tuples_temp "* removed," as @tuples_removed | parse @tuples_temp "remain, * are dead but not yet removable, " as @tuples_not_removable | filter @message like / automatic vacuum / | sort @timestamp | stats avg(@tuples_removed) as avg_tuples_removed, avg(@tuples_not_removable) as avg_tuples_not_removable by bin(5 min)
      
                                在查询编辑器中进行查询
    6. 选择 Create widget

      您的控制面板应类似于下图。

      
                                带有两个图表的控制面板。