Amazon CloudWatch
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

手动创建或编辑 CloudWatch 代理配置文件

CloudWatch 代理配置文件是一个 JSON 文件,其中包含三个部分:Agent、Metrics 和 Logs。

  • agent 部分包含总体代理配置的字段。如果您使用向导,则不会创建 agent 部分。

  • Metrics 部分指定要收集的自定义指标并将其发布到 CloudWatch。如果只将代理用于收集日志,则可以忽略文件中的指标部分。

  • Logs 部分指定要将哪些日志文件发布到 CloudWatch Logs。如果服务器运行 Windows Server,这可能包括 Windows 事件日志中的事件。

以下几节介绍了该 JSON 文件的结构和字段。您还可以查看该配置文件的架构定义。在 Linux 服务器上,架构定义位于 installation-directory/doc/amazon-cloudwatch-agent-schema.json 中;在运行 Windows Server 的服务器上,架构定义位于 installation-directory/amazon-cloudwatch-agent-schema.json 中。

如果手动创建或编辑 JSON 文件,则可以给它指定任何名称。为了简化故障排除,我们建议您在 Linux 服务器上将其命名为 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json,在运行 Windows Server 的服务器上将其命名为 $Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json

CloudWatch 代理配置文件:Agent 部分

agent 部分可能包含下面列出的字段。向导不会创建 agent 部分。相反,向导忽略该部分,并在该部分的所有字段中使用默认值。

  • metrics_collection_interval – 可选。指定该配置文件中指定的所有指标的收集频率。可以为特定类型的指标覆盖该值。

    这是以秒为单位指定的。例如,如果指定每 10 秒收集 10 组指标并将其设置为 300,则指定每 5 分钟收集一次指标。

    如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关高精度指标的更多信息,请参阅高精度指标

    默认值为 60。

  • region – 指定在监控 Amazon EC2 实例时用于 CloudWatch 终端节点的区域。收集的指标将发送到该区域,例如,us-west-1。如果省略该字段,则该代理将指标发送到 Amazon EC2 实例所在的区域。

    如果监控本地服务器,则不使用该字段,该代理从 awscloudwatchagent 配置文件的 AWS 配置文件中读取区域。

  • credentials – 指定一个在向不同 AWS 账户发送指标和日志时使用的 IAM 角色。如果指定,则此字段包含一个参数 role_arn

  • debug – 可选。指定使用调试日志消息运行 CloudWatch 代理。默认为 false

  • logfile – 指定 CloudWatch 代理将日志消息写入到的位置。如果指定空字符串,则将日志传输到 stderr。如果未指定该选项,则默认位置如下所示:

    • Linux: /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

    • 高于 Windows Server 2003 的 Windows Server 版本:c:\\ProgramData\\Amazon\\CloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log

    提示

    我们建议您为该文件设置日志轮换,以使该文件不会增大而填满磁盘。

下面是 agent 部分的示例:

"agent": { "metrics_collection_interval": 60, "region": "us-west-1", "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "debug": false }

CloudWatch 代理配置文件:Metrics 部分

在运行 Linux 或 Windows Server 的服务器上,metrics 部分包含以下字段:

  • namespace – 可选。用于该代理收集的指标的命名空间。默认为 CWAgent。最大长度为 255 个字符。

  • append_dimensions – 可选。将 Amazon EC2 指标维度添加到该代理收集的所有指标中。对于每个维度,您必须指定一个键值对,其中,键与 Amazon EC2 维度 ImageID:image-idInstanceId:instance-idInstanceType:instance-typeAutoScalingGroupName:AutoScaling-group-name 匹配。

    如果您指定一个值(该值取决于 Amazon EC2 元数据),并且使用代理,则必须确保服务器能够访问 Amazon EC2 的终端节点。有关这些终端节点的更多信息,请参阅 Amazon Web Services 一般参考 中的 Amazon Elastic Compute Cloud (Amazon EC2)

  • aggregation_dimensions – 指定要在其中汇总收集的指标的维度。例如,如果累积 AutoScalingGroupName 维度上的指标,则会汇总每个 Auto Scaling 组的所有实例中的指标,并将这些指标作为一个整体进行查看。

    您可以累积一个或多个维度的指标。例如,指定 [["InstanceId"], ["InstanceType"], ["InstanceId","InstanceType"]] 将单独汇总实例 ID 的指标,单独汇总实例类型的指标以及汇总两个维度组合的指标。

    您也可以指定 [] 以将所有指标累积到一个集合中,而不考虑任何维度。

  • metrics_collected – 必需。指定要收集的指标,包括通过 StatsD 或 collectd 收集的自定义指标。该部分包含几个小节。

    metrics_collected 部分的内容取决于该配置文件适用于运行 Linux 还是 Windows Server 的服务器。

  • credentials – 指定一个在向不同 AWS 账户发送指标时使用的 IAM 角色。如果指定,则此字段包含一个参数 role_arn

    • role_arn – 指定一个在向不同 AWS 账户发送指标时用于身份验证的 IAM 角色的 ARN。有关更多信息,请参阅向不同 AWS 账户发送指标和日志。如果在此指定,它将覆盖在配置文件的 agent 部分指定的 role_arn(如果有)。

Linux

在运行 Linux 的服务器上,配置文件的 metrics_collected 部分还可能包含以下字段:

  • collectd – 可选。指定要使用 collectd 协议检索自定义指标。您可以使用 collectd 软件将指标发送到 CloudWatch 代理。有关更多信息,请参阅使用 collectd 检索自定义指标

  • cpu – 可选。指定要收集的 CPU 指标。该部分仅适用于 Linux 实例。该部分最多可以包含三个字段:

    • resources – 可选。指定要收集的每个 CPU 指标。唯一允许的值为 *。如果包含该字段和值,则收集每个 CPU 的指标。

    • totalcpu – 可选。指定是否报告所有 CPU 内核的汇总 CPU 指标。默认值为 true。

    • measurement – 指定一组要收集的 CPU 指标。可能的值为 time_activetime_guesttime_guest_nicetime_idletime_iowaittime_irqtime_nicetime_softirqtime_stealtime_systemtime_userusage_activeusage_guestusage_guest_niceusage_idleusage_iowaitusage_irqusage_niceusage_softirqusage_stealusage_systemusage_user。如果包含 cpu,则该字段是必需的。

      默认情况下,cpu_usage_* 指标的单位是 Percentcpu_time_* 指标没有单位。

      在每个指标的条目中,您可以选择指定下面的一个或两个字段:

      • rename – 为该指标指定不同的名称。

      • unit – 指定用于该指标的单位,从而覆盖该指标的默认单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

    • metrics_collection_interval – 可选。指定收集 CPU 指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

      这是以秒为单位指定的。例如,如果指定每 10 秒收集 10 组指标并将其设置为 300,则指定每 5 分钟收集一次指标。

      如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关高精度指标的更多信息,请参阅高精度指标

    • append_dimensions – 可选。仅用于 CPU 指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的全局 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。

  • disk – 可选。指定要收集的磁盘指标。该部分仅适用于 Linux 实例。该部分最多可以包含两个字段:

    • resources – 可选。指定一组磁盘装载点。该字段将 CloudWatch 限制为仅从列出的挂载点中收集指标。您可以指定 * 值以从所有装载点中收集指标。默认设置为从所有装载点中收集指标。

    • measurement – 指定一组要收集的磁盘指标。可能的值为 freetotalusedused_percentinodes_freeinodes_usedinodes_total。如果包含 disk,则该字段是必需的。

      要查看每个 disk 指标的默认单位,请参阅Linux 实例上的 CloudWatch 代理收集的指标

      在每个指标的条目中,您可以选择指定下面的一个或两个字段:

      • rename – 为该指标指定不同的名称。

      • unit – 指定用于该指标的单位,从而覆盖该指标的默认单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

    • ignore_file_system_types – 指定在收集磁盘指标时要排除的文件系统类型。有效值包括 sysfsdevtmpfs,等等。

    • metrics_collection_interval – 可选。指定收集磁盘指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

      这是以秒为单位指定的。

      如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关更多信息,请参阅高精度指标

    • append_dimensions – 可选。仅用于磁盘指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。

  • diskio – 可选。指定要收集的磁盘 I/O 指标。该部分仅适用于 Linux 实例。该部分最多可以包含两个字段:

    • resources – 可选。如果指定一组设备,CloudWatch 仅从这些设备中收集指标。否则,将收集所有设备的指标。也可以指定 * 值以从所有设备中收集指标。

    • measurement – 指定一组要收集的磁盘 I/O 指标。可能的值为 readswritesread_byteswrite_bytesread_timewrite_timeio_timeiops_in_progress。如果包含 diskio,则该字段是必需的。

      在每个指标的条目中,您可以选择指定下面的一个或两个字段:

      • rename – 为该指标指定不同的名称。

      • unit – 指定用于该指标的单位,从而覆盖该指标的默认单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

    • metrics_collection_interval – 可选。指定收集磁盘 I/O 指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

      这是以秒为单位指定的。

      如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关高精度指标的更多信息,请参阅高精度指标

    • append_dimensions – 可选。仅用于磁盘 I/O 指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。

  • swap – 可选。指定要收集的交换内存指标。该部分仅适用于 Linux 实例。该部分可以包含一个字段:

    • measurement – 指定一组要收集的交换内存指标。可能的值为 freeusedused_percent。如果包含 swap,则该字段是必需的。

      要查看每个 swap 指标的默认单位,请参阅Linux 实例上的 CloudWatch 代理收集的指标

      在每个指标的条目中,您可以选择指定下面的一个或两个字段:

      • rename 为该指标指定不同的名称。

      • unit – 指定用于该指标的单位,从而覆盖该指标的默认单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

    • metrics_collection_interval – 可选。指定收集交换内存指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

      这是以秒为单位指定的。

      如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关高精度指标的更多信息,请参阅高精度指标

    • append_dimensions 可选。仅用于交换内存指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的全局 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。这是作为高精度指标收集的。

  • mem – 可选。指定要收集的内存指标。该部分仅适用于 Linux 实例。该部分可以包含一个字段:

    • measurement – 指定一组要收集的交换内存指标。可能的值为 activeavailableavailable_percentbufferedcachedfreeinactivetotalusedused_percent。如果包含 mem,则该字段是必需的。

      要查看每个 mem 指标的默认单位,请参阅Linux 实例上的 CloudWatch 代理收集的指标

      在每个指标的条目中,您可以选择指定下面的一个或两个字段:

      • rename – 为该指标指定不同的名称。

      • unit – 指定用于该指标的单位,从而覆盖该指标的默认单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

    • metrics_collection_interval – 可选。指定收集内存指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

      这是以秒为单位指定的。

      如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关高精度指标的更多信息,请参阅高精度指标

    • append_dimensions – 可选。仅用于内存指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。

  • net – 可选。指定要收集的每个联网指标。该部分仅适用于 Linux 实例。该部分最多可以包含两个字段:

    • resources – 可选。如果指定一组网络接口,CloudWatch 仅从这些接口中收集指标。否则,将收集所有设备的指标。也可以指定 * 值以从所有接口中收集指标。

    • measurement – 指定一组要收集的联网指标。可能的值为 bytes_sentbytes_recvdrop_indrop_outerr_inerr_outpackets_sentpackets_recv。如果包含 net,则该字段是必需的。

      要查看每个 net 指标的默认单位,请参阅Linux 实例上的 CloudWatch 代理收集的指标

      在每个指标的条目中,您可以选择指定下面的一个或两个字段:

      • rename – 为该指标指定不同的名称。

      • unit – 指定用于该指标的单位,从而覆盖该指标的默认单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

    • metrics_collection_interval – 可选。指定收集网络指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

      这是以秒为单位指定的。例如,如果指定每 10 秒收集 10 组指标并将其设置为 300,则指定每 5 分钟收集一次指标。

      如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关高精度指标的更多信息,请参阅高精度指标

    • append_dimensions – 可选。仅用于网络指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。

  • netstat – 可选。指定收集 TCP 连接状态和 UDP 连接指标。该部分仅适用于 Linux 实例。该部分可以包含一个字段:

    • measurement – 指定一组要收集的网络状态指标。可能的值为 tcp_closetcp_close_waittcp_closingtcp_establishedtcp_fin_wait1tcp_fin_wait2tcp_last_acktcp_listentcp_nonetcp_syn_senttcp_syn_recvtcp_time_waitudp_socket。如果包含 netstat,则该字段是必需的。

      要查看每个 netstat 指标的默认单位,请参阅Linux 实例上的 CloudWatch 代理收集的指标

      在每个指标的条目中,您可以选择指定下面的一个或两个字段:

      • rename – 为该指标指定不同的名称。

      • unit – 指定用于该指标的单位,从而覆盖该指标的默认单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

    • metrics_collection_interval – 可选。指定收集网络状态指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

      这是以秒为单位指定的。

      如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关高精度指标的更多信息,请参阅高精度指标

    • append_dimensions – 可选。仅用于网络状态指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。

  • processes – 可选。指定要收集的进程指标。该部分仅适用于 Linux 实例。该部分可以包含一个字段:

    • measurement – 指定一组要收集的进程指标。可能的值为 blockeddeadidlepagingrunningsleepingstoppedtotaltotal_threadswaitzombies。如果包含 processes,则该字段是必需的。

      对于所有 processes 指标,默认单位为 Count

      在每个指标的条目中,您可以选择指定下面的一个或两个字段:

      • rename – 为该指标指定不同的名称。

      • unit – 指定用于该指标的单位,从而覆盖该指标的默认单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

    • metrics_collection_interval – 可选。指定收集进程指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

      这是以秒为单位指定的。例如,如果指定每 10 秒收集 10 组指标并将其设置为 300,则指定每 5 分钟收集一次指标。

      如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关更多信息,请参阅高精度指标

    • append_dimensions – 可选。仅用于进程指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。

  • statsd – 可选。指定要使用 StatsD 协议检索自定义指标。CloudWatch 代理充当协议的守护程序。您可以使用任何标准 StatsD 客户端将指标发送到 CloudWatch 代理。有关更多信息,请参阅使用 StatsD 检索自定义指标

下面是一个适用于 Linux 服务器的 metrics 部分示例。在此示例中,会收集三个 CPU 指标、三个 netstat 指标和三个流程指标,并将代理设置为从 collectd 客户端接收其他指标。

"metrics": { "metrics_collected": { "collectd": {}, "cpu": { "resources": [ "*" ], "measurement": [ {"name": "cpu_usage_idle", "rename": "CPU_USAGE_IDLE", "unit": "Percent"}, {"name": "cpu_usage_nice", "unit": "Percent"}, "cpu_usage_guest" ], "totalcpu": false, "metrics_collection_interval": 10, "append_dimensions": { "test": "test1", "date": "2017-10-01" } }, "netstat": { "measurement": [ "tcp_established", "tcp_syn_sent", "tcp_close" ], "metrics_collection_interval": 60 }, "processes": { "measurement": [ "running", "sleeping", "dead" ] } }, "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"],[]] }

Windows Server

在 Windows Server 的 metrics_collected 部分中,您可以包含每个 Windows 性能对象的小节,例如,MemoryProcessorLogicalDisk。有关可用的对象和计数器的信息,请参阅 Microsoft Windows 文档。

在每个对象的小节中,您可以指定要收集的计数器的 measurement 数组。需要为在配置文件中指定的每个对象指定 measurement 数组。您也可以指定 resources 字段以命名从中收集指标的实例。您还可以为 resources 指定 *,以便为每个实例收集单独的指标。如果省略 resources,则将所有实例的数据汇总到一个组中。

在每个对象部分中,您还可以指定以下可选字段:

  • metrics_collection_interval – 可选。指定为该对象收集指标的频率,从而覆盖配置文件的 agent 部分中指定的全局 metrics_collection_interval

    这是以秒为单位指定的。例如,如果指定每 10 秒收集 10 组指标并将其设置为 300,则指定每 5 分钟收集一次指标。

    如果您将该值设置为低于 60 秒,则将每个指标作为高精度指标进行收集。有关更多信息,请参阅高精度指标

  • append_dimensions – 可选。仅用于该对象的指标的其他维度。如果指定该字段,除了用于该代理收集的所有类型的指标的全局 append_dimensions 字段中指定的维度以外,还会使用该字段中的维度。

在每个计数器部分中,您还可以指定以下可选字段:

  • rename – 指定在 CloudWatch 中用于该指标的不同名称。

  • unit – 指定用于该指标的单位。指定的单位必须是有效的 CloudWatch 指标单位,如 MetricDatumUnit 描述中所示。

要使用 StatsD 检索自定义指标,您可以在 metrics_collected 中包括一个 StatsD 子部分。CloudWatch 代理充当协议的守护程序。您可以使用任何标准 StatsD 客户端将指标发送到 CloudWatch 代理。

下面是一个用于 Windows Server 的 metrics 部分的示例。在此示例中,会收集许多 Windows 指标,并且计算机也被设置为从 StatsD 客户端接收其他指标。

"metrics": { "metrics_collected": { "statsd": {}, "Processor": { "measurement": [ {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"}, "% Interrupt Time", "% User Time", "% Processor Time" ], "resources": [ "*" ], "append_dimensions": { "d1": "win_foo", "d2": "win_bar" } }, "LogicalDisk": { "measurement": [ {"name": "% Idle Time", "unit": "Percent"}, {"name": "% Disk Read Time", "rename": "DISK_READ"}, "% Disk Write Time" ], "resources": [ "*" ] }, "Memory": { "metrics_collection_interval": 5, "measurement": [ "Available Bytes", "Cache Faults/sec", "Page Faults/sec", "Pages/sec" ], "append_dimensions": { "d3": "win_bo" } }, "Network Interface": { "metrics_collection_interval": 5, "measurement": [ "Bytes Received/sec", "Bytes Sent/sec", "Packets Received/sec", "Packets Sent/sec" ], "resources": [ "*" ], "append_dimensions": { "d3": "win_bo" } }, "System": { "measurement": [ "Context Switches/sec", "System Calls/sec", "Processor Queue Length" ], "append_dimensions": { "d1": "win_foo", "d2": "win_bar" } } }, "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "aggregation_dimensions" : [["ImageId"], ["InstanceId", "InstanceType"], ["d1"],[]] } }

CloudWatch 代理配置文件:logs 部分

logs 部分包含以下字段:

  • logs_collected – 如果包含 logs 部分,则是必需的。指定从服务器中收集的日志文件和 Windows 事件日志。它可以包含两个字段:fileswindows_events

    • files 指定 CloudWatch 代理收集的常规日志文件。它包含一个字段 (collect_list),它进一步定义这些文件。

      • collect_list – 如果包含 files,则是必需的。包含一组条目,每个条目指定一个要收集的日志文件。其中的每个条目可以包含以下字段:

        • file_path – 指定要上传到 CloudWatch Logs 的日志文件的路径。接受标准 Unix Glob 匹配规则,并添加 ** 以作为超级星号。例如,指定 /var/log/**.log 将导致收集 /var/log 目录树中的所有 .log 文件。有关更多示例,请参阅 Glob 库

          标准星号也可以用作标准通配符。例如,/var/log/system.log*/var/log 中的 system.log_1111system.log_2222 等文件匹配。

          根据文件修改时间,只有最新文件才会推送到 CloudWatch Logs。我们建议您使用通配符指定同一类型的一系列文件(如 access_log.2018-06-01-01access_log.2018-06-01-02)而不是多个不同类型的文件(如 access_log_80access_log_443)。要指定多个类型的文件,请向代理配置文件再添加一个日志流条目,让每种日志文件都转到不同的日志流。

        • log_group_name – 可选。指定要在 CloudWatch Logs 中使用的日志组名称。允许的字符包括 a–z、A–Z、0–9、“_”(下划线)、“-”(连字符)、“/”(正斜杠)和“.”(句点)。

          我们建议您指定此字段以防止混淆。如果您省略该字段,则将最终圆点之前的文件路径作为日志组名称。例如,如果文件路径为 /tmp/TestLogFile.log.2017-07-11-14,则日志组名称为 /tmp/TestLogFile.log

        • log_stream_name – 可选。指定要在 CloudWatch Logs 中使用的日志流名称。您可以在名称中包含 {instance_id}{hostname}{local_hostname}{ip_address} 作为变量。{hostname} 从 EC2 元数据中检索主机名,而 {local_hostname} 使用网络配置文件中的主机名。

          如果省略该字段,则使用 {instance_id} 的默认值。如果还没有日志流,则会自动创建一个日志流。

        • timezone – 可选。指定在日志事件中放置时间戳时要使用的时区。有效值为 UTCLocal。默认为 Local

        • timestamp_format – 可选。使用纯文本和以 % 开头的特殊符号指定时间戳格式。如果省略该字段,则使用当前时间。如果使用该字段,您可以将以下内容作为格式的一部分:

          %y

          使用以零填充的十进制数字形式的没有世纪的年份

          %Y

          使用十进制数字形式的具有世纪的年份

          %b

          使用区域设置的缩写名称形式的月份

          %B

          使用区域设置的完整名称形式的月份

          %m

          使用以零填充的十进制数字形式的月份

          %-m

          十进制数字形式的月份 (不使用零填充)

          %d

          使用以零填充的十进制数字形式的日期

          %-d

          十进制数字形式的日期 (不使用零填充)

          %A

          星期的全称,例如 Monday

          %a

          星期的缩写,例如 Mon

          %H

          使用以零填充的十进制数字形式的小时 (24 小时制)

          %I

          使用以零填充的十进制数字形式的小时 (12 小时制)

          %-I

          十进制数字形式的小时(12 小时制)(不使用零填充)

          %p

          AM 或 PM

          %M

          使用以零填充的十进制数字形式的分钟

          %-M

          十进制数字形式的分钟 (不使用零填充)

          %S

          使用以零填充的十进制数字形式的秒

          %-S

          十进制数字形式的秒 (不使用零填充)

          %Z

          时区,例如 PST

          %z

          时区,以本地时区与 UTC 的偏移量表示。例如:-0700。仅支持此格式。例如,-07:00 不是有效格式。

        • multi_line_start_pattern – 指定用于识别日志消息开头的模式。日志消息由与模式匹配的行以及与模式不匹配的任何以下行组成。

          如果您省略此字段,则会禁用多行模式,而且以非空格字符开头的任何行都会使上一个日志消息结束 (如果存在),并开始新的日志消息。

          如果包含该字段,您可以指定 {timestamp_format} 以使用与您的时间戳格式相同的正则表达式。否则,您可以为 CloudWatch Logs 指定不同的正则表达式,以用于确定多行条目的起始行。

        • encoding – 指定日志文件的编码,以便正确读取该文件。如果您指定错误的编码,则可能导致数据丢失,因为无法解码的字符将被其他字符替代。

          默认编码为 utf-8。以下是所有可能的值:

          ascii, big5, euc-jp, euc-kr, gbk, gb18030, ibm866, iso2022-jp, iso8859-2, iso8859-3, iso8859-4, iso8859-5, iso8859-6, iso8859-7, iso8859-8, iso8859-8-i, iso8859-10, iso8859-13, iso8859-14, iso8859-15, iso8859-16, koi8-r, koi8-u, macintosh, shift_jis, utf-8, utf-16, windows-874, windows-1250, windows-1251, windows-1252, windows-1253, windows-1254, windows-1255, windows-1256, windows-1257, windows-1258, x-mac-cyrillic

  • windows_events 部分指定从运行 Windows Server 的服务器中收集的 Windows 事件类型。其中包括以下字段:

    • collect_list – 如果包含 windows_events,则是必需的。指定要收集的 Windows 事件的类型和级别。要收集的每个日志在该部分中包含一个条目,其中可以包含以下字段:

      • event_name – 指定要记录的 Windows 事件的类型。例如,SystemSecurityApplication,等等。要记录的每种类型的 Windows 事件需要使用该字段。

      • event_levels – 指定要记录的事件的级别。您必须指定要记录的每个级别。可能的值包括 INFORMATIONWARNINGERRORCRITICALVERBOSE。要记录的每种类型的 Windows 事件需要使用该字段。

      • log_group_name – 必需。指定要在 CloudWatch Logs 中使用的日志组名称。

      • log_stream_name – 可选。指定要在 CloudWatch Logs 中使用的日志流名称。您可以在名称中包含 {instance_id}{hostname}{local_hostname}{ip_address} 作为变量。{hostname} 从 EC2 元数据中检索主机名,而 {local_hostname} 使用网络配置文件中的主机名。

        如果省略该字段,则使用 {instance_id} 的默认值。如果还没有日志流,则会自动创建一个日志流。

      • event_format – 可选。指定在 CloudWatch Logs 中存储 Windows 事件时要使用的格式。与在 Windows 事件查看器中一样,xml 使用 XML 格式。text 使用传统 CloudWatch Logs 代理格式。

  • log_stream_name – 必需。指定未在 collect_list 的条目中定义日志流名称的任何日志或 Windows 事件使用的默认日志流名称。

  • credentials – 指定一个在向不同 AWS 账户发送日志时使用的 IAM 角色。如果指定,则此字段包含一个参数 role_arn

    • role_arn – 指定一个在向不同 AWS 账户发送日志时用于身份验证的 IAM 角色的 ARN。有关更多信息,请参阅向不同 AWS 账户发送指标和日志。如果在此指定,它将覆盖在配置文件的 agent 部分指定的 role_arn(如果有)。

下面是一个 logs 部分示例:

"logs":{ "logs_collected":{ "files":{ "collect_list":[ { "file_path":"c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log", "log_group_name":"amazon-cloudwatch-agent.log", "log_stream_name":"my_log_stream_name_1", "timestamp_format":"%H:%M:%S %y %b %-d" }, { "file_path":"c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\test.log", "log_group_name":"test.log", "log_stream_name":"my_log_stream_name_2" } ] }, "windows_events":{ "collect_list":[ { "event_name":"System", "event_levels":[ "INFORMATION", "ERROR" ], "log_group_name":"System", "log_stream_name":"System" }, { "event_name":"Application", "event_levels":[ "INFORMATION", "ERROR" ], "log_group_name":"Application", "log_stream_name":"Application" } ] } }, "log_stream_name":"my_log_stream_name" }

CloudWatch 代理配置文件:完整示例

下面是一个适用于 Linux 服务器的完整代理配置文件示例。

{ "agent": { "metrics_collection_interval": 10, "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log" }, "metrics": { "metrics_collected": { "cpu": { "resources": [ "*" ], "measurement": [ {"name": "cpu_usage_idle", "rename": "CPU_USAGE_IDLE", "unit": "Percent"}, {"name": "cpu_usage_nice", "unit": "Percent"}, "cpu_usage_guest" ], "totalcpu": false, "metrics_collection_interval": 10, "append_dimensions": { "customized_dimension_key_1": "customized_dimension_value_1", "customized_dimension_key_2": "customized_dimension_value_2" } }, "disk": { "resources": [ "/", "/tmp" ], "measurement": [ {"name": "free", "rename": "DISK_FREE", "unit": "Gigabytes"}, "total", "used" ], "ignore_file_system_types": [ "sysfs", "devtmpfs" ], "metrics_collection_interval": 60, "append_dimensions": { "customized_dimension_key_3": "customized_dimension_value_3", "customized_dimension_key_4": "customized_dimension_value_4" } }, "diskio": { "resources": [ "*" ], "measurement": [ "reads", "writes", "read_time", "write_time", "io_time" ], "metrics_collection_interval": 60 }, "swap": { "measurement": [ "swap_used", "swap_free", "swap_used_percent" ] }, "mem": { "measurement": [ "mem_used", "mem_cached", "mem_total" ], "metrics_collection_interval": 1 }, "net": { "resources": [ "eth0" ], "measurement": [ "bytes_sent", "bytes_recv", "drop_in", "drop_out" ] }, "netstat": { "measurement": [ "tcp_established", "tcp_syn_sent", "tcp_close" ], "metrics_collection_interval": 60 }, "processes": { "measurement": [ "running", "sleeping", "dead" ] } }, "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "aggregation_dimensions" : [["ImageId"], ["InstanceId", "InstanceType"], ["d1"],[]] }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "log_group_name": "amazon-cloudwatch-agent.log", "log_stream_name": "amazon-cloudwatch-agent.log", "timezone": "UTC" }, { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/test.log", "log_group_name": "test.log", "log_stream_name": "test.log", "timezone": "Local" } ] } }, "log_stream_name": "my_log_stream_name" } }

下面是一个适用于运行 Windows Server 的服务器的完整代理配置文件示例。

{ "agent": { "metrics_collection_interval": 60, "logfile": "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log" }, "metrics": { "metrics_collected": { "Processor": { "measurement": [ {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"}, "% Interrupt Time", "% User Time", "% Processor Time" ], "resources": [ "*" ], "append_dimensions": { "customized_dimension_key_1": "customized_dimension_value_1", "customized_dimension_key_2": "customized_dimension_value_2" } }, "LogicalDisk": { "measurement": [ {"name": "% Idle Time", "unit": "Percent"}, {"name": "% Disk Read Time", "rename": "DISK_READ"}, "% Disk Write Time" ], "resources": [ "*" ] }, "customizedObjectName": { "metrics_collection_interval": 60, "customizedCounterName": [ "metric1", "metric2" ], "resources": [ "customizedInstaces" ] }, "Memory": { "metrics_collection_interval": 5, "measurement": [ "Available Bytes", "Cache Faults/sec", "Page Faults/sec", "Pages/sec" ] }, "Network Interface": { "metrics_collection_interval": 5, "measurement": [ "Bytes Received/sec", "Bytes Sent/sec", "Packets Received/sec", "Packets Sent/sec" ], "resources": [ "*" ], "append_dimensions": { "customized_dimension_key_3": "customized_dimension_value_3" } }, "System": { "measurement": [ "Context Switches/sec", "System Calls/sec", "Processor Queue Length" ] } }, "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "aggregation_dimensions" : [["ImageId"], ["InstanceId", "InstanceType"], ["d1"],[]] }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log", "log_group_name": "amazon-cloudwatch-agent.log", "timezone": "UTC" }, { "file_path": "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\test.log", "log_group_name": "test.log", "timezone": "Local" } ] }, "windows_events": { "collect_list": [ { "event_name": "System", "event_levels": [ "INFORMATION", "ERROR" ], "log_group_name": "System", "log_stream_name": "System", "event_format": "xml" }, { "event_name": "Application", "event_levels": [ "WARNING", "ERROR" ], "log_group_name": "Application", "log_stream_name": "Application", "event_format": "xml" } ] } }, "log_stream_name": "example_log_stream_name" } }

将 CloudWatch 代理配置文件上传到 Systems Manager Parameter Store

如果在安装了 SSM Agent 的 Amazon EC2 实例或本地服务器上安装 CloudWatch 代理,在手动编辑 CloudWatch 代理配置文件后,必须将其上传到 Systems Manager Parameter Store。为此,您可以使用 Systems Manager put-parameter 命令。

要能够将该文件存储在 Parameter Store 中,您必须使用具有足够权限的 IAM 角色。有关更多信息,请参阅创建 IAM 角色和用户以用于 CloudWatch 代理

可以使用以下命令,其中 parameter name 是在 Parameter Store 中用于该文件的名称,而 configuration_file_pathname 是已编辑的配置文件的路径和文件名。

aws ssm put-parameter --name "parameter name" --type "String" --value file://configuration_file_pathname