跳到主要内容

配置 AWS 外部采集来源

AWS 外部采集来源适用于从 AWS 托管数据库侧补充采集慢日志。当前支持 AWS RDS MySQL 和 AWS RDS PostgreSQL。其中,AWS RDS MySQL 通过 RDS 实例日志接口读取慢日志文件,不依赖 CloudWatch 日志导出。

前提条件

  • 已创建或加入组织,并且该组织已开通数据库 DevOps 专业版数据库 DevOps 企业版,同时请确保您的包年包月订阅未过期。更多信息,请参见管理组织
  • 当前账号已切换到目标组织。更多信息,请参见切换到组织
  • 已在 NineData 中配置 AWS 访问凭证。更多信息,请参见配置云厂商访问凭证
  • 已录入目标 AWS RDS 数据源,建议优先通过 AWS 入口创建或绑定实例。
  • 已确认目标 RDS 实例所在区域和数据库实例标识符。
  • AWS 访问凭证具备查看 RDS 实例、列出 RDS 日志文件和读取 RDS 日志文件内容的权限。
  • 如果目标为 AWS RDS MySQL,实例已开启 MySQL 慢日志,并将慢日志输出到文件。

权限要求

AWS RDS MySQL 通过 RDS 实例日志接口采集慢日志,IAM 用户或角色至少需要包含如下权限。

权限 Action用途
rds:DescribeDBInstances查看目标 RDS 实例信息。
rds:DescribeDBLogFiles获取目标实例的日志文件列表。
rds:DownloadDBLogFilePortion按分片读取 RDS 日志文件内容。
提示

AWS 托管策略 AmazonRDSReadOnlyAccess 只覆盖 RDS 查看类权限,不包含 rds:DownloadDBLogFilePortion。如果使用托管只读策略,请额外补充日志文件读取权限;如果企业策略要求完整文件下载权限,也可以同时授予 rds:DownloadCompleteDBLogFile。创建自定义 IAM 策略时,建议将资源范围限制在需要采集慢日志的 RDS 实例。

步骤一:配置 AWS RDS MySQL 慢日志

如果目标为 AWS RDS MySQL,请先在 RDS 参数组中确认以下参数。

参数建议值说明
slow_query_log1ON开启 MySQL 慢查询日志。
long_query_time按需设置,例如 1查询执行时间超过该阈值时记录为慢查询。
log_outputFILE将慢日志写入 RDS 实例日志文件。
提示

修改参数组后,请确认参数组状态已生效。对于需要重启才能生效的参数,请在业务允许的时间窗口重启 RDS 实例。

步骤二:创建 AWS 外部采集来源

  1. 登录 NineData 控制台

  2. 在左侧导航栏,单击数据库 DevOps > 慢查询分析

  3. 在页面上方页签中,单击外部采集来源

  4. 单击创建外部采集来源,在右侧抽屉中完成如下配置。

    参数说明
    来源类型选择 AWS。
    云厂商访问凭证选择已配置的 AWS 访问凭证。
    采集来源名称自定义采集来源名称。
    采集来源描述选填,填写采集来源说明。
  5. 单击确定完成创建。

步骤三:绑定来源并开启采集

  1. 返回慢查询分析页签,找到目标 AWS RDS 数据源,单击慢查询采集列的开关。

  2. 在弹窗中选择外部来源采集,然后完成如下配置。

    参数说明
    外部采集来源选择已创建的 AWS 外部采集来源。
    来源数据源的唯一标识AWS RDS MySQL 通常填写 DBInstanceIdRegionIdLogFilePrefix
    采集频率选择慢日志采集频率。
  3. 填写 AWS RDS MySQL 唯一标识。

    说明
    DBInstanceIdAWS RDS 的数据库实例标识符,请填写 AWS 控制台中展示的 DB instance identifier。
    RegionIdAWS 区域代码,例如 us-east-1ap-southeast-1。该值必须与实例所在区域一致。
    LogFilePrefix慢日志文件前缀。AWS RDS MySQL 默认慢日志前缀通常为 slowquery/mysql-slowquery.log。归档慢日志文件会在此前缀后追加日期和序号,通常只需填写基础前缀。
  4. 单击确定开启采集。

步骤四:确认采集结果

等待至少一个采集周期后,进入目标数据源的慢查询详情页面,调整时间范围并查看慢日志列表、Top SQL 和趋势图,确认是否已有慢日志记录写入 NineData。

下图展示 AWS RDS MySQL 慢日志成功采集到 NineData 后的详情页。示例中,慢 SQL 总数为 6,SQL 模板归并为 SELECT SLEEP(?) AS slept;,可用于确认慢日志记录已写入 NineData。

AWS RDS MySQL 慢日志采集结果

提示

慢查询详情页面最多展示 3 天以内的慢查询记录。如果目标实例没有新增慢日志,查询结果会为空。

增量采集说明

AWS RDS MySQL 的增量采集会记录已处理的日志文件和文件位置。首次采集会根据配置的前缀读取可用慢日志;后续采集会从上一次成功位置继续读取。若本轮没有新增慢日志,采集结果为空且不会推进到错误位置;若采集中断或失败,重试时会从上一次成功位置继续。

常见问题

现象排查建议
云访问凭证不存在先在 NineData 中创建 AWS 访问凭证。
缺少区域参数补齐 RegionId,并确认区域与目标 RDS 实例一致。
缺少实例标识符补齐 DBInstanceId,并确认该值与 AWS 控制台中的 DB instance identifier 一致。
AWS RDS MySQL 提示慢日志文件不存在确认实例已开启 slow_query_loglog_outputFILE,并检查 LogFilePrefix 是否为实际的 RDS 慢日志文件前缀。
AWS RDS MySQL 采集结果为空确认实例已开启慢日志,所选时间范围内产生了慢查询,并检查 LogFilePrefix 是否与 RDS 慢日志文件前缀一致。
AWS RDS MySQL 日志文件读取失败检查 AWS 访问凭证是否具备读取 RDS 日志文件的权限,并确认 RegionIdDBInstanceId 是否匹配。
数据源连接或云厂商客户端连接失败优先检查数据源是否通过 AWS 入口创建;若不是,确认连接方式、区域和实例标识是否正确。如果 RDS Endpoint 解析失败,请确认实例处于可用状态、Endpoint 未变化,并在 NineData 中重新同步或编辑数据源连接信息。