进程数量监控

收集满足过滤条件的进程数量

插件文件地址
proc.num
插件类型
接受参数,重复执行

插件参数

参数 功能
cmdline 可选 ,被监控进程的命令行正则表达式 [1]
name 可选 ,这个监控的名字,用来区分其他的监控,同时也会作为匹配进程名的依据 [2]
[1]命令行是从 /proc/ pid /cmdline 读取并且将其中的 \x00 替换成空格后进行匹配。 匹配是任意位置的,需要限定从一开始匹配的话请在正则前面加上 ^
[2]进程名是匹配 /proc/ pid /status 中的 Name 项,有可能会有残缺,这里要注意。

注解

cmdlinename 必选其一。

若指定了 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]})))))))