Sunday, January 8, 2017

[open-falcon] proc.num/name=crond

又被運維人員問了,我答不出來的問題:「為什麼明明用 ps 指令去查,只有一隻 crond 的 process ,但是看監控項對時間畫出的圖形,卻明顯的是 2、3~10 不等的數字。

運維人員把他下的指令給我看:
ps -ef | grep crond
我也看不出任何問題。


沒有辦法,只好去追 open-falcon 的源碼。在源碼中: agent 計算名稱為 $name 的進程個數的方式,是到 /proc/%d/status 找, status 檔裡頭 name 為 $name 的檔案個數。

於是我下了一個指令:
[root@foo ~]# find /proc -name status -exec grep -l crond {} \;
/proc/7811/task/7811/status
/proc/7811/status
/proc/8853/task/8853/status
/proc/8853/status

再下一個指令來看好了
[root@foo ~]# pstree | grep crond
     |-crond-+-crond---bash---sleep
     |       `-crond---sh---fwrsync-+-fwrsync---sleep