CloudWatch 代理收集的指标 - Amazon CloudWatch

CloudWatch 代理收集的指标

您可以在服务器上安装 CloudWatch 代理以从服务器中收集指标。您可以在 Amazon EC2 实例和本地部署服务器以及运行 Linux、Windows Server 或 macOS 的电脑上安装该代理。如果在 Amazon EC2 实例上安装该代理,则除了在 Amazon EC2 实例上默认启用的指标以外,它还会收集一些其他指标。

有关在实例上安装 CloudWatch 代理的信息,请参阅 使用 CloudWatch 代理收集指标、日志和跟踪信息

本节中讨论的所有指标均由 CloudWatch 代理直接收集。

Windows Server 实例上的 CloudWatch 代理收集的指标

通过在运行 Windows Server 的服务器上安装 CloudWatch 代理,您可以收集与 Windows 性能监视器中的计数器关联的指标。在创建这些计数器的 CloudWatch 指标名称时,将在对象名称和计数器名称之间添加空格。例如,在 CloudWatch 中为 Processor 对象的 % Interrupt Time 计数器指定指标名称 Processor % Interrupt Time。有关 Windows 性能监视器计数器的更多信息,请参阅 Microsoft Windows Server 文档。

CloudWatch 代理收集的指标的默认命名空间为 CWAgent,不过您可以在配置该代理时指定其他命名空间。

Linux 和 macOS 实例上的 CloudWatch 代理收集的指标

下表列出了您可以使用 Linux 服务器和 macOS 电脑上的 CloudWatch 代理收集的指标。

指标 描述

cpu_time_active

CPU 在任何容量中处于活动状态的时间。该指标以百分之一秒为单位。

单位:无

cpu_time_guest

CPU 为来宾操作系统运行虚拟 CPU 的时间。该指标以百分之一秒为单位。

单位:无

cpu_time_guest_nice

CPU 为来宾操作系统运行虚拟 CPU 的时间,它具有较低的优先级,可能会被其他进程中断。该指标以百分之一秒为单位。

单位:无

cpu_time_idle

CPU 处于空闲状态的时间。该指标以百分之一秒为单位。

单位:无

cpu_time_iowait

CPU 等待 I/O 操作完成的时间。该指标以百分之一秒为单位。

单位:无

cpu_time_irq

CPU 处理中断的时间。该指标以百分之一秒为单位。

单位:无

cpu_time_nice

CPU 处于用户模式的时间,它具有低优先级进程,可能很容易被高优先级进程中断。该指标以百分之一秒为单位。

单位:无

cpu_time_softirq

CPU 处理软件中断的时间。该指标以百分之一秒为单位。

单位:无

cpu_time_steal

CPU 被盗的时间,这是在虚拟化环境中的其他操作系统上所花的时间。该指标以百分之一秒为单位。

单位:无

cpu_time_system

CPU 处于系统模式的时间。该指标以百分之一秒为单位。

单位:无

cpu_time_user

CPU 处于用户模式的时间。该指标以百分之一秒为单位。

单位:无

cpu_usage_active

CPU 在任何容量中处于活动状态的时间百分比。

单位:百分比

cpu_usage_guest

CPU 为来宾操作系统运行虚拟 CPU 的时间百分比。

单位:百分比

cpu_usage_guest_nice

CPU 为来宾操作系统运行虚拟 CPU 的时间百分比,它具有较低的优先级,可能会被其他进程中断。

单位:百分比

cpu_usage_idle

CPU 空闲时间的百分比。

单位:百分比

cpu_usage_iowait

CPU 等待 I/O 操作完成的时间百分比。

单位:百分比

cpu_usage_irq

CPU 处理中断的时间百分比。

单位:百分比

cpu_usage_nice

CPU 处于用户模式的时间百分比,它具有低优先级进程,可能很容易被高优先级进程中断。

单位:百分比

cpu_usage_softirq

CPU 处理软件中断的时间百分比。

单位:百分比

cpu_usage_steal

CPU 被盗的时间百分比,或者在虚拟化环境中的其他操作系统上所花的时间。

单位:百分比

cpu_usage_system

CPU 处于系统模式的时间百分比。

单位:百分比

cpu_usage_user

CPU 处于用户模式的时间百分比。

单位:百分比

disk_free

磁盘上的可用空间。

单位:字节

disk_inodes_free

磁盘上的可用索引节点数。

单位:计数

disk_inodes_total

在磁盘上保留的总索引节点数。

单位:计数

disk_inodes_used

在磁盘上使用的索引节点数。

单位:计数

disk_total

磁盘上的总空间,包括已使用的空间和可用空间。

单位:字节

disk_used

磁盘上已使用的空间。

单位:字节

disk_used_percent

已使用总磁盘空间的百分比。

单位:百分比

diskio_iops_in_progress

已发出到设备驱动程序但尚未完成的 I/O 请求数。

单位:计数

diskio_io_time

磁盘已将 I/O 请求排队的时间。

单位:毫秒

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

diskio_reads

磁盘读取操作数。

单位:计数

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

diskio_read_bytes

从磁盘中读取的字节数。

单位:字节

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

diskio_read_time

读取请求在磁盘上等待的时间。同时等待的多个读取请求会增加该数字。例如,如果 5 个请求均平均等待 100 毫秒,则报告 500。

单位:毫秒

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

diskio_writes

磁盘写入操作数。

单位:计数

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

diskio_write_bytes

写入到磁盘的字节数。

单位:字节

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

diskio_write_time

写入请求在磁盘上等待的时间。同时等待的多个写入请求会增加该数字。例如,如果 8 个请求均平均等待 1000 毫秒,则报告 8000。

单位:毫秒

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

ethtool_bw_in_allowance_exceeded

因入站聚合带宽超过实例的最大值而排队和/或丢弃的数据包的数量。

仅当您将此指标列在 CloudWatch 代理配置文件 metrics_collected 部分的 ethtool 子部分时,才会收集该指标。有关更多信息,请参阅 收集网络性能指标

单位:无

ethtool_bw_out_allowance_exceeded

因出站聚合带宽超过实例的最大值而排队和/或丢弃的数据包的数量。

仅当您将此指标列在 CloudWatch 代理配置文件 metrics_collected 部分的 ethtool 子部分时,才会收集该指标。有关更多信息,请参阅 收集网络性能指标

单位:无

ethtool_conntrack_allowance_exceeded

由于连接跟踪超过实例的最大值且无法建立新连接而丢弃的数据包的数量。这可能会导致进出实例的流量丢失数据包。

仅当您将此指标列在 CloudWatch 代理配置文件 metrics_collected 部分的 ethtool 子部分时,才会收集该指标。有关更多信息,请参阅 收集网络性能指标

单位:无

ethtool_linklocal_allowance_exceeded

由于到本地代理服务的流量的 PPS 超出网络接口的最大值而丢弃的数据包数量。这会影响流向 DNS 服务、实例元数据服务和 Amazon Time Sync Service 的流量。

仅当您将此指标列在 CloudWatch 代理配置文件 metrics_collected 部分的 ethtool 子部分时,才会收集该指标。有关更多信息,请参阅 收集网络性能指标

单位:无

ethtool_pps_allowance_exceeded

因双向 PPS 超过实例的最大值而排队和/或丢弃的数据包的数量。

仅当您将此指标列在 CloudWatch 代理配置文件 metrics_collected 部分的 ethtool 子部分时,才会收集该指标。有关更多信息,请参阅 收集网络性能指标

单位:无

mem_active

在上一抽样周期以某种方式使用的内存量。

单位:字节

mem_available

可以立即分配给进程的可用内存量。

单位:字节

mem_available_percent

可以立即分配给进程的可用内存百分比。

单位:百分比

mem_buffered

用作缓冲区的内存量。

单位:字节

mem_cached

用作文件缓存的内存量。

单位:字节

mem_free

未使用的内存量。

单位:字节

mem_inactive

在上一采样周期未以某种方式使用的内存量

单位:字节

mem_total

内存的总量。

单位:字节

mem_used

当前使用的内存量。

单位:字节

mem_used_percent

当前使用的内存百分比。

单位:百分比

net_bytes_recv

网络接口接收的字节数。

单位:字节

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

net_bytes_sent

网络接口发送的字节数。

单位:字节

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

net_drop_in

该网络接口接收并已丢弃的数据包数。

单位:计数

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

net_drop_out

该网络接口发送并已丢弃的数据包数。

单位:计数

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

net_err_in

该网络接口检测到的接收错误数。

单位:计数

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

net_err_out

该网络接口检测到的发送错误数。

单位:计数

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

net_packets_sent

该网络接口发送的数据包数。

单位:计数

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

net_packets_recv

该网络接口接收的数据包数。

单位:计数

应该用于该指标的唯一统计数据是 Sum。切勿使用 Average

netstat_tcp_close

没有状态的 TCP 连接数。

单位:计数

netstat_tcp_close_wait

等待来自客户端的终止请求的 TCP 连接数。

单位:计数

netstat_tcp_closing

等待来自客户端的包含确认的终止请求的 TCP 连接数。

单位:计数

netstat_tcp_established

已建立的 TCP 连接数。

单位:计数

netstat_tcp_fin_wait1

在关闭连接过程中处于 FIN_WAIT1 状态的 TCP 连接数。

单位:计数

netstat_tcp_fin_wait2

在关闭连接过程中处于 FIN_WAIT2 状态的 TCP 连接数。

单位:计数

netstat_tcp_last_ack

等待客户端发送连接终止确认消息的 TCP 连接数。这是就在关闭连接之前的最后状态。

单位:计数

netstat_tcp_listen

当前侦听连接请求的 TCP 端口数。

单位:计数

netstat_tcp_none

具有不活动客户端的 TCP 连接数。

单位:计数

netstat_tcp_syn_sent

在发送连接请求后等待匹配连接请求的 TCP 连接数。

单位:计数

netstat_tcp_syn_recv

在发送和接收连接请求后等待连接请求确认的 TCP 连接数。

单位:计数

netstat_tcp_time_wait

当前等待以确保客户端收到连接终止请求确认的 TCP 连接数。

单位:计数

netstat_udp_socket

当前 UDP 连接数。

单位:计数

processes_blocked

已阻止的进程数。

单位:计数

processes_dead

处于“僵死”状态的进程数,它是由 Linux 上的 X 状态代码表示的。

在 macOS 电脑上不会收集此指标。

单位:计数

processes_idle

处于空闲状态 (睡眠超过 20 秒) 的进程数。仅适用于 FreeBSD 实例。

单位:计数

processes_paging

处于“分页”状态的进程数,它是由 Linux 上的 W 状态代码表示的。

在 macOS 电脑上不会收集此指标。

单位:计数

processes_running

正在运行的进程数,由 R 状态代码表示。

单位:计数

processes_sleeping

睡眠的进程数,由 S 状态代码表示。

单位:计数

processes_stopped

停止的进程数,由 T 状态代码表示。

单位:计数

processes_total

实例上的总进程数。

单位:计数

processes_total_threads

组成进程的总线程数。该指标仅适用于 Linux 实例。

在 macOS 电脑上不会收集此指标。

单位:计数

processes_wait

分页的进程数,它是由 FreeBSD 实例上的 W 状态代码表示的。此指标仅在 FreeBSD 实例上可用,在 Linux、Windows Server 或 macOS 实例上不可用。

单位:计数

processes_zombies

僵尸进程数,由 Z 状态代码表示。

单位:计数

swap_free

未使用的交换空间量。

单位:字节

swap_used

当前已使用的交换空间量。

单位:字节

swap_used_percent

当前已使用的交换空间百分比。

单位:百分比

CloudWatch 代理收集的内存指标的定义

当 CloudWatch 代理收集内存指标时,来源是主机的内存管理子系统。例如,Linux 内核在 /proc 中公开了操作系统维护的数据。对于内存,数据在 /proc/meminfo 中。

每种不同的操作系统和架构对进程使用的资源都有不同的计算方式。有关更多信息,请参阅以下部分。

在每个收集间隔内,每个实例上的 CloudWatch 代理会收集实例资源并计算在该实例中运行的所有进程所使用的资源。这些信息将报告回 CloudWatch 指标。您可以在 CloudWatch 代理配置文件中配置收集间隔时长。有关更多信息,请参阅 CloudWatch 代理配置文件:Agent 部分

以下列表说明了 CloudWatch 代理收集的内存指标是如何定义的。

  • 活动内存 – 进程正在使用的内存。换句话说,当前正在运行的应用程序所使用的内存。

  • 可用内存 – 系统无需进入交换状态即可立即分配给进程的内存(也称为虚拟内存)。

  • 缓冲内存 – 由以不同速度和优先级运行的硬件设备或程序进程共享的数据区域。

  • 缓存内存 – 用于存储 CPU 接下来可能需要的程序操作中重复使用的程序指令和数据。

  • 空闲内存 – 完全未使用且随时可用的内存。这部分内存完全空闲,可以在需要时供该系统使用。

  • 非活动内存 –“最近”未访问过的页面。

  • 总内存 – 实际物理内存 RAM 的大小。

  • 已用内存 – 程序和进程当前正在使用的内存。

Linux:收集的指标和使用的计算方式

收集的指标和单位:

  • 活动(字节)

  • 可用(字节)

  • 可用百分比(百分比)

  • 已缓冲(字节)

  • 已缓存(字节)

  • 空闲(字节)

  • 非活动(字节)

  • 总内存(字节)

  • 已用(字节)

  • 已用百分比(百分比)

已用内存 = 总内存 - 空闲内存 - 缓存内存 - 缓冲内存

总内存 = 已用内存 + 空闲内存 + 缓存内存 + 缓冲内存

macOS:收集的指标和使用的计算方式

收集的指标和单位:

  • 活动(字节)

  • 可用(字节)

  • 可用百分比(百分比)

  • 空闲(字节)

  • 非活动(字节)

  • 总内存(字节)

  • 已用(字节)

  • 已用百分比(百分比)

可用内存 = 空闲内存 + 非活动内存

已用内存 = 总内存 - 可用内存

总内存 = 可用内存 + 已用内存

Windows:收集的指标

下面列出了在 Windows 主机上收集的指标。所有这些指标的 Unit 都是 None

  • 可用字节

  • 缓存中断/秒

  • 页面错误/秒

  • 页数/秒

没有对 Windows 指标使用任何计算方式,因为 CloudWatch 代理会解析来自性能计数器的事件。

示例:在 Linux 上计算内存指标

例如,假设在 Linux 主机上输入 cat /proc/meminfo 命令会显示以下结果:

MemTotal: 3824388 kB MemFree: 462704 kB MemAvailable: 2157328 kB Buffers: 126268 kB Cached: 1560520 kB SReclaimable: 289080 kB>

在此示例中,CloudWatch 代理将收集以下值:CloudWatch 代理收集和报告的所有值均以字节为单位。

  • mem_total:3916173312 字节

  • mem_available:2209103872 字节(MemFree + Cached)

  • mem_free:473808896 字节

  • mem_cached:1893990400 字节(cached + SReclaimable

  • mem_used:1419075584 字节 (MemTotal – (MemFree + Buffers + (Cached + SReclaimable)))

  • mem_buffered:129667072 字节

  • mem_available_percent:56.41%

  • mem_used_percent:36.24% (mem_used / mem_total) * 100