云监控通过安装在阿里云主机(ECS实例)和非阿里云主机上的云监控插件,为您采集最近一段时间内活跃进程的CPU使用率、内存使用率和文件打开数。您还可以添加进程监控,查看其进程数,并为这些进程设置报警规则,及时关注进程数的变化,确保其正常运行。
前提条件
请确保您已为阿里云主机(ECS实例)和非阿里云主机安装云监控插件。具体操作,请参见安装云监控插件。
背景信息
云监控每分钟统计一次CPU消耗Top5的进程,记录进程的CPU、内存使用率和打开文件数。
-
进程的CPU使用率与内存使用率:您可以参考Linux中的top命令理解这两个监控项的含义。
-
进程的打开文件数:您可以参考Linux中的lsof命令理解这个监控项的含义。
云监控采集CPU消耗Top5进程的CPU使用率,可能存在以下问题:
-
如果您的进程占用多个CPU,则会出现CPU使用率超过100%的情况,因为采集结果为多核CPU的总使用率。
-
如果您查询的时间范围内,CPU消耗Top5的进程不固定,进程列表会显示该时间范围内全部进入过Top5的进程,列表中的时间表示该进程最后一次进入Top5的时间。
-
云监控只采集CPU消耗Top5进程的CPU使用率、内存使用率和打开文件数。如果进程在查询的时间范围内未持续进入Top5,则监控图表中会出现数据点不连续的情况,数据点的密集程度表明了该进程在主机上的活跃程度。示例如下:
-
Wrapper进程未持续进入主机CPU消耗Top5,监控图表中的数据点稀疏,且不连续,表示有数据点的时间该进程进入Top5。

-
Java进程在监控图表中的数据点非常密集,且连续,表示该进程已持续进入CPU消耗Top5。
-
-
当系统级任务(如内核线程 kworker、ksoftirqd 或中断处理)占用大量 CPU 但未进入 Top5 时,进程监控可能显示 idle 或暂无数据,而整体 CPU 使用率仍达 100%。此时可通过
top -H命令查看线程级 CPU 占用分布,识别未进入 Top5 的高 CPU 消耗内核线程。
为什么进程监控指标数据从特定时间点开始有数据,而非历史全量?
进程监控数据依赖于手动添加的进程监控项,云监控 Agent 仅从您添加监控项的时刻起采集对应进程的指标数据。若未提前添加监控项,则无法获取历史数据,也无法触发历史时段的报警。
定时 CPU 报警排查
当主机在固定时段出现 CPU 报警时,可通过进程监控回溯查询该历史时段的进程 CPU 占用情况,定位占用 CPU 的进程:
-
登录云监控控制台,在左侧导航栏选择云资源监控 > 主机监控。在实例列表中,单击目标 ECS 实例的实例名称,进入主机监控详情页。
-
查看 CPU 使用率趋势图,确认报警时段的 CPU 变化曲线。
-
切换到进程监控页签,在时间范围选择器中选择报警时段对应的时间范围(1 小时/6 小时/12 小时/1 天/3 天/7 天/14 天/自定义)。如果报警发生在无人值守时段(例如凌晨),选择自定义并填入异常时段的起止时间(例如 01:00~02:00),然后单击确定。在进程 TopN 表格中查看该时段 CPU 使用率最高的 Top5 进程,可查看进程名称/CMD、进程 ID、用户、CPU 使用率(%)、内存使用率(%)、打开文件数和时间等字段。
-
根据进程名称判断 CPU 占用原因:
-
ids.exe / hbrclient:云备份(HBR)客户端进程,负责数据传输与任务调度。登录云备份控制台查看备份计划执行时间是否与报警时间吻合。
-
crontab / Windows 任务计划程序:检查 Linux 实例的
crontab -l输出或 Windows 任务计划程序,确认是否存在消耗 CPU 的定时脚本。 -
AliYunDun/AliYunDunMonitor:云盾安全进程,执行定期安全扫描时 CPU 短暂上升,属正常行为。
-
回溯历史时段的进程数据依赖提前添加的进程监控项。云监控 Agent 仅从您添加监控项的时刻起采集对应进程的指标数据,未提前添加监控项的时段无法获取该时段的进程数据。
结合进程名称判断是否为正常业务进程。如果 Top5 进程列表中未发现异常进程,可进一步检查实例内的计划任务(Linux 执行 crontab -l,Windows 查看任务计划程序)和系统日志(Windows 查看事件查看器),也可参考本文「背景信息」中关于系统级内核线程未进入 Top5 的说明。
添加进程监控
您可以通过监控主机的进程数,采集关键进程的数量,及时获取关键进程的存活状态。
假设您的主机运行了如下进程:
-
/usr/bin/java -Xmx2300m -Xms2300m org.apache.catalina.startup.Bootstrap -
/usr/bin/ruby -
nginx -c /etc/nginx/nginx.conf
您添加了6个进程关键字,采集结果如下:
|
进程关键字 |
采集进程数 |
结果 |
|
|
1 |
命中进程名称。 |
|
|
1 |
命中进程名称与参数。 |
|
|
2 |
命中路径(2个进程包含该路径)。 |
|
|
1 |
命中部分参数。 |
|
|
1 |
命中部分参数。 |
|
|
1 |
命中部分参数。 |
进程名匹配严格区分大小写,配置的进程关键字(processName)必须与操作系统中实际运行的进程名完全一致(包括大小写),否则无法匹配进程,导致采集失败或报警不触发。
登录云监控控制台。
在左侧导航栏,选择。
-
在主机监控列表中,单击目标主机的实例名称链接,或单击目标主机对应操作列的监控图表,选择页签进程监控。
-
在进程监控页面下方,单击进程数监控折叠面板,再单击右上角的添加进程监控。
-
在添加进程监控面板,先输入进程名称,再单击增加,然后单击右上角的
图标。说明添加进程监控后,请您稍等几分钟,才能看到进程数的监控数据。
为进程设置报警规则
您添加进程后,可以为该进程设置报警规则。当进程数发生变化时,您可以收到报警通知。
登录云监控控制台。
在左侧导航栏,选择。
-
在主机监控页面,单击目标主机的实例名称链接,或单击目标主机对应操作列的监控图表,选择页签进程监控。
-
先单击进程数监控折叠面板,然后单击右上角的
图标。在 进程数监控 区域,单击进程数图表右上方的告警图标,打开报警规则设置面板。 -
在设置规则描述面板,先设置规则名称,再设置进程监控指标进程 / 当前进程数的阈值和报警级别,然后单击确定。
-
在创建报警规则面板,先设置报警规则的相关参数,再单击确认。
关于如何设置报警规则中的相关参数,请参见创建报警规则。
-
查看进程报警规则。
-
在左侧导航栏,选择报警服务 - 报警规则。
-
在报警规则页面,您可以查看报警规则列进程维度的报警规则。
-
关于进程总数报警阈值的设置,建议参考以下原则:
-
系统进程总数受 Linux 内核参数
/proc/sys/kernel/pid_max限制,建议将阈值设置为pid_max的 70%~80%,以预留缓冲空间,避免误报或漏报。 -
可通过命令
cat /proc/sys/kernel/pid_max查看当前系统上限。 -
也可基于业务稳定期的实际进程数(通过云监控历史数据或执行
ps -eLf | wc -l命令获取),在此基础上增加 20%~30% 作为阈值,避免直接设置为接近pid_max的值。
删除进程监控
通过应用分组菜单的组进程监控添加的进程,只能在组进程监控中删除。
登录云监控控制台。
在左侧导航栏,选择。
-
在主机监控页面,单击目标主机的实例名称链接,或单击目标主机对应操作列的监控图表,选择页签进程监控。
-
先单击进程数监控折叠面板,然后单击右上角的添加进程监控。
-
在添加进程监控面板,单击目标进程对应操作列的删除。
-
在删除确认对话框,单击确定。
-
单击右上角的
图标。
常见问题
云监控是否支持查看单个进程(如 Nginx、Java)的网络带宽/流量占用?
云监控当前不支持查看单个进程的出网带宽或指定时间段(每天/每小时)的下行流量统计。如需以进程视角监控网卡流量,建议在 ECS 实例内部使用 nethogs 等第三方工具实现。
如何监控 Java 线程数?
云监控进程监控仅支持监控进程数量(可通过添加关键字 java 实现),不支持直接监控 Java 线程数。如需监控线程数,建议使用 ARMS 应用监控。
历史时段 CPU 占用进程排查
收到 CPU 报警后,可以通过云监控的进程监控功能,回溯查询历史时段的进程 CPU 占用情况,定位异常时段消耗 CPU 的进程。
-
登录云监控控制台。
-
在左侧导航栏,选择云资源监控 > 主机监控。
-
在主机监控列表中,单击目标 ECS 实例的实例名称,进入主机监控详情页。
-
单击进程监控页签。
-
在页面右上方的时间范围选择器中,选择自定义,设置异常时段(例如凌晨 01:00~02:00),然后单击确定。
-
在进程 TopN 表格中,查看 CPU 使用率最高的 Top5 进程,包括进程名称、进程 ID、CPU 使用率、内存使用率等指标。
进程需提前添加监控项才能采集历史数据。未提前添加监控项的时段,无法获取进程数据。
结合进程名称判断占用 CPU 的是否为正常业务进程。如需进一步排查,可以检查操作系统的计划任务和事件查看器日志。