9 Notes on selecting processes in proc.mem and proc.num items
הערות שוליים
1 ערך ברירת מחדל.
שרשורי ליבת לינוקס
לא ניתן לבחור שרשורים עם פרמטר cmdline בפריטים proc.mem[] ו-proc.num[]
ניקח כדוגמה את אחד משרשורי הקרנל:
$ ps -ef| grep kthreadd
שורש 2 0 0 09:33 ? 00:00:00 [kthreadd]
ניתן לבחור אותו עם פרמטר 'שם' של התהליך:
$ zabbix_get -s localhost -k 'proc.num[kthreadd,root]'
1
אבל בחירה לפי פרמטר 'cmdline' של תהליך לא עובד:
$ zabbix_get -s localhost -k 'proc.num[,root,,kthreadd]'
0
הסיבה היא שסוכן Zabbix לוקח את הביטוי הרגולרי שצוין
בפרמטר cmdline ומחיל אותו על תוכן התהליך
/proc/<pid>/cmdline. עבור שרשורי ליבה שלהם /proc/<pid>/cmdline
הקבצים ריקים. אז פרמטר 'cmdline' אף פעם לא תואם.
ספירת שרשורים בפריטי proc.mem[] ו-proc.num[]
שרשורי ליבת לינוקס נספרים לפי פריט proc.num[] אך אינם מדווחים
זיכרון בפריט proc.mem[]. לדוגמה:
$ ps -ef | grep kthreadd
שורש 2 0 0 09:51 ? 00:00:00 [kthreadd]
$ zabbix_get -s localhost -k 'proc.num[kthreadd]'
1
$ zabbix_get -s localhost -k 'proc.mem[kthreadd]'
ZBX_NOTSUPPORTED: לא ניתן לקבל כמות זיכרון "VmSize".
אבל מה קורה אם יש תהליך משתמש באותו שם כמו א חוט ליבה? ואז זה יכול להיראות כך:
$ ps -ef | grep kthreadd
שורש 2 0 0 09:51 ? 00:00:00 [kthreadd]
zabbix 9611 6133 0 17:58 נקודות/1 00:00:00 ./kthreadd
$ zabbix_get -s localhost -k 'proc.num[kthreadd]'
2
$ zabbix_get -s localhost -k 'proc.mem[kthreadd]'
4157440
proc.num[] ספר גם את שרשור הליבה וגם את תהליך המשתמש.
proc.mem[] מדווח על זיכרון עבור תהליך המשתמש בלבד וסופר את
זיכרון פתיל ליבה כאילו הוא 0. זה שונה מהמקרה
לעיל כאשר דווח על ZBX_NOTSUPPORTED.
היזהר בעת שימוש בפריטים proc.mem[] ו-proc.num[] אם התוכנית
שם במקרה תואם לאחד מהשרשור.
לפני שמכניסים פרמטרים לפריטים proc.mem[] ו-proc.num[], אתה
אולי תרצה לבדוק את הפרמטרים באמצעות הפריט proc.num[] ו-ps
פקודה.