进程数量监控¶
收集满足过滤条件的进程数量
- 插件文件地址
- proc.num
- 插件类型
- 接受参数,重复执行
插件参数¶
参数 | 功能 |
---|---|
cmdline | 可选 ,被监控进程的命令行正则表达式 [1] |
name | 可选 ,这个监控的名字,用来区分其他的监控,同时也会作为匹配进程名的依据 [2] |
[1] | 命令行是从 /proc/ pid /cmdline 读取并且将其中的 \x00 替换成空格后进行匹配。
匹配是任意位置的,需要限定从一开始匹配的话请在正则前面加上 ^ |
[2] | 进程名是匹配 /proc/ pid /status 中的 Name 项,有可能会有残缺,这里要注意。 |
注解
cmdline
和 name
必选其一。
若指定了 name
但没有指定 cmdline
,则会按照 name
匹配进程名;
若指定了 cmdline
但是没有指定 name
,则会匹配 cmdline
,同时 cmdline
也会加入 tag 用作区分。
若同时指定,则按照 cmdline
进行匹配,但是 name
的 tag 会使用指定的值。
上报的监控值¶
- proc.num
意义: 指定进程的数量 取值: 0 - 无上限,整数 Tags: {"cmdline": " 指定的 cmdline
", "name": "指定的监控名字
"}
监控规则样例¶
(def infra-dns-rules
(sdo
(where (host #"dns\d")
(plugin "proc.num" 30 {:cmdline "^/usr/sbin/unbound$" :name "proc-unbound"}))
(where (and (service "proc.num")
(= (:name event) "proc-unbound"))
(by :host
(judge (< 1)
(alarm-every 2 :min
(!{:note "Unbound 进程不在了"
:level 1
:expected 1.0
:groups [:operation]})))))))