使用 procstat 插件收集流程指标 - Amazon CloudWatch

使用 procstat 插件收集流程指标

procstat 插件让您能够从各个流程收集指标。这在 Linux 服务器上以及运行支持的 Windows Server 版本的服务器上受支持。

配置 CloudWatch 代理用于 procstat

要使用 procstat 插件,请在 CloudWatch 代理配置文件的 metrics_collected 部分中添加 procstat 部分。您可以通过以下三种方式指定要监控的进程。您可以仅使用其中一个方法,但您可以使用该方法来指定一个或多个要监控的进程。

  • pid_file:按照它们创建的进程标识号 (PID) 文件的名称选择进程。

  • exe:使用正则表达式匹配规则,选择进程名称与您指定的字符串相匹配的进程。匹配是“包含”匹配,这意味着如果您指定 agent 作为要匹配的术语,则具有类似于 cloudwatchagent 的名称的进程将匹配该术语。有关更多信息,请参阅语法

  • pattern:通过用于启动进程的命令行选择进程。将使用正则表达式匹配规则选择命令行与指定的字符串匹配的所有进程。将检查整个命令行,包括用于命令行的参数和选项。

    匹配是“包含”匹配,这意味着如果您指定 -c 作为要匹配的术语,则具有类似于 -config 的参数的进程将匹配该术语。

  • drop_original_metrics – 可选。如果您使用 metrics 部分中的 aggregation_dimensions 字段将指标以汇总为聚合结果,则默认情况下,代理会同时发送聚合指标和原始指标,原始指标是按维度的每个值分开的。如果您不希望将原始指标发送到 CloudWatch,则可以指定此参数和指标列表。同时指定了此参数的指标将不会将其各维度的指标报告给 CloudWatch,而只报告聚合指标。这可以减少代理要采集的指标数量,从而降低成本。

CloudWatch 代理仅使用其中一个方法,即使您包含多个以上部分。如果您指定多个部分,CloudWatch 代理将使用 pid_file 部分(如果存在)。否则,它使用 exe 部分。

在 Linux 服务器上,您在 exepattern 部分中指定的字符串的计算结果为正则表达式。在运行 Windows Server 的服务器上,这些字符串的计算结果为 WMI 查询。例如,pattern: "%apache%" 就是一个示例。有关更多信息,请参阅 LIKE 运算符

无论使用哪种方法,您都可以包含一个可选 metrics_collection_interval 参数,该参数以秒为单位指定收集这些指标的频率。如果省略该参数,则使用 60 秒的默认值。

在以下部分的示例中,procstat 部分是唯一包含在代理配置文件的 metrics_collected 部分中的部分。实际配置文件也在 metrics_collected 中包含其他部分。有关更多信息,请参阅 手动创建或编辑 CloudWatch 代理配置文件

使用 pid_file 进行配置

以下示例 procstat 部分监控创建 PID 文件 example1.pidexample2.pid 的进程。从每个进程收集不同的指标。默认情况下,每 10 秒收集一次从创建 example2.pid 的进程中收集的指标,每 60 秒收集一次从 example1.pid 进程中收集的指标。

{ "metrics": { "metrics_collected": { "procstat": [ { "pid_file": "/var/run/example1.pid", "measurement": [ "cpu_usage", "memory_rss" ] }, { "pid_file": "/var/run/example2.pid", "measurement": [ "read_bytes", "read_count", "write_bytes" ], "metrics_collection_interval": 10 } ] } } }

使用 exe 进行配置

以下示例 procstat 部分监控名称与字符串 agentplugin 相匹配的所有进程。从每个进程收集相同的指标。

{ "metrics": { "metrics_collected": { "procstat": [ { "exe": "agent", "measurement": [ "cpu_time", "cpu_time_system", "cpu_time_user" ] }, { "exe": "plugin", "measurement": [ "cpu_time", "cpu_time_system", "cpu_time_user" ] } ] } } }

使用模式进行配置

以下示例 procstat 部分监控命令行与字符串 config-c 相匹配的所有进程。从每个进程收集相同的指标。

{ "metrics": { "metrics_collected": { "procstat": [ { "pattern": "config", "measurement": [ "rlimit_memory_data_hard", "rlimit_memory_data_soft", "rlimit_memory_stack_hard", "rlimit_memory_stack_soft" ] }, { "pattern": "-c", "measurement": [ "rlimit_memory_data_hard", "rlimit_memory_data_soft", "rlimit_memory_stack_hard", "rlimit_memory_stack_soft" ] } ] } } }

Procstat 收集的指标

下表列出可以使用 procstat 插件收集的指标。

CloudWatch 代理将 procstat 添加到以下指标名称的开头。有不同的语法,具体取决于是从 Linux 服务器还是从运行 Windows Server 的服务器收集指标。例如,从 Linux 中收集时,cpu_time 指标显示为 procstat_cpu_time;从 Windows Server 中收集时,它显示为 procstat cpu_time

指标名称 可用于 描述

cpu_time

Linux

进程使用 CPU 的时间量。该指标以百分之一秒为单位。

单位:计数

cpu_time_guest

Linux

进程处于来宾模式的时间。该指标以百分之一秒为单位。

类型:浮点值

单位:无

cpu_time_guest_nice

Linux

进程在具有 nice 值的来宾模式下运行的时间。该指标以百分之一秒为单位。

类型:浮点值

单位:无

cpu_time_idle

Linux

进程处于空闲模式的时间。该指标以百分之一秒为单位。

类型:浮点值

单位:无

cpu_time_iowait

Linux

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

类型:浮点值

单位:无

cpu_time_irq

Linux

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

类型:浮点值

单位:无

cpu_time_nice

Linux

进程处于 nice 模式的时间。该指标以百分之一秒为单位。

类型:浮点值

单位:无

cpu_time_soft_irq

Linux

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

类型:浮点值

单位:无

cpu_time_steal

Linux

在虚拟化环境中运行时,在其他操作系统上运行的时间。该指标以百分之一秒为单位。

类型:浮点值

单位:无

cpu_time_stolen

Linux、Windows Server

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

类型:浮点值

单位:无

cpu_time_system

Linux、Windows Server、macOS

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

类型:浮点值

单位:计数

cpu_time_user

Linux、Windows Server、macOS

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

单位:计数

cpu_usage

Linux、Windows Server、macOS

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

单位:百分比

memory_data

Linux、macOS

进程用于数据的内存量。

单位:字节

memory_locked

Linux、macOS

进程已锁定的内存量。

单位:字节

memory_rss

Linux、Windows Server、macOS

进程使用的实际内存量(驻留集)。

单位:字节

memory_stack

Linux、macOS

进程使用的堆栈内存量。

单位:字节

memory_swap

Linux、macOS

进程使用的交换内存量。

单位:字节

memory_vms

Linux、Windows Server、macOS

进程使用的虚拟内存量。

单位:字节

num_fds

Linux

此进程打开的文件描述符数量。

单位:无

num_threads

Linux、Windows、macOS

进程中的线程数。

单位:无

pid

Linux、Windows Server、macOS

进程标识符 (ID)。

单位:无

pid_count

Linux、Windows Server、macOS

与此进程关联的进程 ID 的数量。

在 Linux 服务器和 macOS 电脑上,此指标的完整名称为 procstat_lookup_pid_count;在 Windows 服务器上则为 procstat_lookup pid_count

单位:无

read_bytes

Linux、Windows Server

进程已从磁盘中读取的字节数。

单位:字节

write_bytes

Linux、Windows Server

进程已写入到磁盘的字节数。

单位:字节

read_count

Linux、Windows Server

进程已执行的磁盘读取操作的数目。

单位:无

rlimit_realtime_priority_hard

Linux

可以为此进程设置的实时优先级硬限制。

单位:无

rlimit_realtime_priority_soft

Linux

可以为此进程设置的实时优先级软限制。

单位:无

rlimit_signals_pending_hard

Linux

此进程可以排队的最大信号数硬限制。

单位:无

rlimit_signals_pending_soft

Linux

此进程可以排队的最大信号数软限制。

单位:无

rlimit_nice_priority_hard

Linux

此进程可以设置的最大 nice 优先级硬限制。

单位:无

rlimit_nice_priority_soft

Linux

此进程可以设置的最大 nice 优先级软限制。

单位:无

rlimit_num_fds_hard

Linux

此进程可以打开的最大文件描述符数硬限制。

单位:无

rlimit_num_fds_soft

Linux

此进程可以打开的最大文件描述符数软限制。

单位:无

write_count

Linux、Windows Server

进程已执行的磁盘写入操作的数目。

单位:无

involuntary_context_switches

Linux

进程不自觉上下文切换的次数。

单位:无

voluntary_context_switches

Linux

进程自觉上下文切换的次数。

单位:无

realtime_priority

Linux

进程的实时优先级的当前使用率。

单位:无

nice_priority

Linux

进程的良好状态优先级的当前使用率。

单位:无

signals_pending

Linux

等待由进程处理的信号数量。

单位:无

rlimit_cpu_time_hard

Linux

进程的硬 CPU 时间资源限制。

单位:无

rlimit_cpu_time_soft

Linux

进程的软 CPU 时间资源限制。

单位:无

rlimit_file_locks_hard

Linux

进程的硬文件锁资源限制。

单位:无

rlimit_file_locks_soft

Linux

进程的软文件锁资源限制。

单位:无

rlimit_memory_data_hard

Linux

进程上用于数据的内存的硬资源限制。

单位:字节

rlimit_memory_data_soft

Linux

进程上用于数据的内存的软资源限制。

单位:字节

rlimit_memory_locked_hard

Linux

进程上用于锁定的内存的硬资源限制。

单位:字节

rlimit_memory_locked_soft

Linux

进程上用于锁定的内存的软资源限制。

单位:字节

rlimit_memory_rss_hard

Linux

进程上用于物理内存的硬资源限制。

单位:字节

rlimit_memory_rss_soft

Linux

进程上用于物理内存的软资源限制。

单位:字节

rlimit_memory_stack_hard

Linux

进程堆栈的硬资源限制。

单位:字节

rlimit_memory_stack_soft

Linux

进程堆栈的软资源限制。

单位:字节

rlimit_memory_vms_hard

Linux

进程上用于虚拟内存的硬资源限制。

单位:字节

rlimit_memory_vms_soft

Linux

进程上用于虚拟内存的软资源限制。

单位:字节

查看由 CloudWatch 代理导入的进程指标

将进程指标导入到 CloudWatch 后,您可以以时间序列图形的形式查看这些指标,并创建可监视这些指标的告警,并在它们超出指定的阈值时通知您。以下程序介绍了如何以时间序列图形的方式查看进程指标。有关设置告警的更多信息,请参阅 使用 Amazon CloudWatch 告警

在 CloudWatch 控制台中查看进程指标
  1. 通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择指标

  3. 为该代理收集的指标选择命名空间。默认情况下,该命名空间为 CWAgent,但您可能已经在 CloudWatch 代理配置文件中指定了不同的命名空间。

  4. 选择指标维度(例如 Per-Instance Metrics(每个实例的指标))。

  5. All metrics 选项卡显示命名空间中该维度的所有指标。您可执行以下操作:

    1. 要为指标绘制图表,请选中该指标旁的复选框。要选择所有指标,请选中表的标题行中的复选框。

    2. 要对表进行排序,请使用列标题。

    3. 要按资源进行筛选,请选择资源 ID,然后选择 Add to search

    4. 要按指标进行筛选,请选择指标名称,然后选择 Add to search

  6. (可选)要将此图表添加到 CloudWatch 控制面板,请选择 Actions(操作),然后选择 Add to dashboard(添加到控制面板)