Bài viết nhắm tới độc giả đã sử dụng check_procs / nagios / shinken.
Trên Ubuntu 14.04 nó nằm trong package:
$ dpkg -S '/usr/lib/nagios/plugins/check_procs'Được dùng trong monitoring, thường dùng kèm với NRPE, NSCA, nagios, shinken ...
nagios-plugins-basic: /usr/lib/nagios/plugins/check_procs
check_procs có chức năng lọc process theo state, nó lấy output của lênh:
/bin/ps axwwo 'stat uid pid ppid vsz rss pcpu etime comm args'rồi xử lý. State của 1 process là ký hiệu xuất hiện ở cột đầu tiên trong output của lệnh trên.
Ta có thể liệt kê / đếm các process có state là S bằng lệnh sau:
$ /usr/lib/nagios/plugins/check_procs -s S -vv | head -n4Để kiểm tra / so sánh state người dùng đưa vào qua option -s và state ở output của lện ps , check_procs sử dụng C function: strstr. Hàm này có signature:
CMD: /bin/ps axwwo 'stat uid pid ppid vsz rss pcpu etime comm args'
Matched: uid=0 vsz=0 rss=0 pid=2 ppid=0 pcpu=0.00 stat=S etime=70-01:46:40 prog=kthreadd args=[kthreadd]
Matched: uid=0 vsz=0 rss=0 pid=3 ppid=2 pcpu=0.00 stat=S etime=70-01:46:40 prog=0 args=[ksoftirqd/0]
Matched: uid=0 vsz=0 rss=0 pid=7 ppid=2 pcpu=0.00 stat=S etime=70-01:46:40 prog=rcu_sched args=[rcu_sched]
$ /usr/lib/nagios/plugins/check_procs -s S
PROCS OK: 45 processes with STATE = S | procs=45;;;0;
Function này sẽ tìm s2 có ở trong s1 không. Code:char *strstr(const char *s1, const char *s2);
if ((options & STAT) && (strstr (statopts, procstat)))
resultsum |= STAT;
cụ thể ở đây check_procs sẽ kiểm tra state của mỗi process có phải sub-string của giá trị mà người dùng đưa vào không.
Bởi vậy nếu bạn dùng ``check_procs -s Ss``, các process có state là ``S`` và ``Ss`` đều hiện ra.
Và không có cách nào để chỉ lọc ra các process có state là ``Ss``.
Tham khảo:
http://serverfault.com/questions/647807/nagios-check-procs-state-filter
http://manpages.ubuntu.com/manpages/trusty/en/man3/strstr.3posix.html
Hết.
HVN một ngày đầu đông.
No comments:
Post a Comment