单进程 CPU 监控¶
收集指定进程的 CPU 占用情况
- 插件文件地址
- proc.cpu
- 插件类型
- 接受参数,持续执行(Step 周期须指定为
0
)
插件参数¶
参数 | 功能 |
---|---|
cmdline | 被监控进程的命令行正则表达式 [1] |
interval | 收集和上报的周期 [2] |
name | 这个监控的名字,用来区分其他的单进程 CPU 监控 |
[1] | 命令行是从 /proc/ pid /cmdline 读取并且将其中的 \x00 替换成空格后进行匹配。
匹配是任意位置的,需要限定从一开始匹配的话请在正则前面加上 ^ |
[2] | CPU 的占用是通过读取进程的 CPU 时间并除以监控间隔得出的,这里的 interval 太大的话会把
实际的 CPU 占用尖刺抹平。 |
上报的监控值¶
- proc.cpu
意义: 指定进程的 CPU 占用 取值: 百分比,取值 0 - 100。超过 100 代表占用了 1 个以上的核。 Tags: {"port": " 指定的端口
", "name": "指定的监控名字
"}
监控规则样例¶
(def infra-redis-cpu-rules
(sdo
(where (host #"^redis-.+$")
(plugin "proc.cpu" 0 {:name "redis", :cmdline "^/usr/bin/redis-server", :interval 5})
(where (and (service "proc.cpu")
(= (:name event) "redis"))
(by [:host :name]
(judge (> 90)
(runs 12 :state
(alarm-every 2 :min
(! {:note "Redis 进程 CPU 占用过高"
:level 1
:expected 3
:groups [:operation :api]})))))))))