Просто хочу поделиться своим python-скриптом для мониторинга OpenBSD систем.
Информацию получем по SNMPv2. Для этого вызывается snmpwalk, вывод от которого потом парсится. Не самое лучшее решение, возможно перепишу чтобы использовалась SNMP-библиотека python.
Я продолжаю работать над ним. Есть пару вещей, которые можно улучшить или даже переделать.
Скрипт очень прост. Если есть желание, не стесняйтесь комментировать. Будет интересно узнать ваше мнение.
Следующая версия будет наверное под BSD лицензией.
Общая информация о системе:
Код: Выделить всё
> ./check_snmp_openbsd.py 192.168.2.101 public os
Uname: OpenBSD pizza.home 5.8 GENERIC.MP#1098 i386
Uptime: Timeticks: (453900) 1:15:39.00
CPU: Intel(R) Atom(TM) CPU N270 @ 1.60GHz (\"GenuineIntel\" 686-class)
Contact: root@pizza.home
Работаем с ФС:
Обзор подключенных (подмоунтируемых) ФС в системе:
Код: Выделить всё
> ./check_snmp_openbsd.py 192.168.2.101 public file-systems
SIZE USED AVALIABLE FILE SYSTEM
==================================================================================
1004.8 Mb 53.4 Mb (5.32 %) 951.3 Mb (94.68 %) /
48.4 Gb 2.1 Mb (0.00 %) 48.4 Gb (100.00 %) /home
3.9 Gb 10.0 Kb (0.00 %) 3.9 Gb (100.00 %) /tmp
2.0 Gb 306.0 Mb (15.20 %) 1.7 Gb (84.80 %) /usr
1004.8 Mb 179.7 Mb (17.88 %) 825.1 Mb (82.12 %) /usr/X11R6
9.1 Gb 38.8 Mb (0.41 %) 9.1 Gb (99.59 %) /usr/local
2.0 Gb 2.0 Kb (0.00 %) 2.0 Gb (100.00 %) /usr/obj
2.0 Gb 2.0 Kb (0.00 %) 2.0 Gb (100.00 %) /usr/src
7.4 Gb 4.1 Mb (0.05 %) 7.4 Gb (99.95 %) /var
Проверка используемого места на ФС.
Два последних значения - это warning (exit code 1) и critical (exit code 2), которые понимают Nagios/Icinga.
Формат после пайпа - понимаемый Nagios/Icinga формат для создания графиков.
Код: Выделить всё
> ./check_snmp_openbsd.py 192.168.2.101 public fs:/ 80 90
OK: FS usage 5.32 % [ 53.4 Mb / 1004.8 Mb ]|usage=5.32;80;90;0;0
Работаем с memory и swap:
Код: Выделить всё
> ./check_snmp_openbsd.py 192.168.2.101 public mem 80 90
OK: Memory usage 9.09 % [ 162.7 Mb / 1.7 Gb ]|usage=9.09;80;90;0;0
> ./check_snmp_openbsd.py 192.168.2.101 public swap 80 90
OK: Swap usage 0.00 % [ 0.0 b / 2.0 Gb ]|usage=0.00;80;90;0;0
Работаем с CPU:
Код: Выделить всё
> ./check_snmp_openbsd.py 192.168.2.101 public cpu 1 2
OK: CPU load average 0 % |'1 min'=0;1;2;0;0
Информация о процессах:
Код: Выделить всё
> ./check_snmp_openbsd.py 192.168.2.101 public proc
PID STATE TYPE PROC
================================================================
1 runnable application init
1555 runnable application smtpd
2444 runnable application ntpd
2544 runnable application fluxbox
3276 runnable application snmpd
4191 runnable application cron
4366 runnable application ksh
4814 runnable application getty std.9600 ttyC3
4982 runnable application sndiod
5075 runnable application syslogd
5280 runnable application snmpd
5591 runnable application ntpd
5747 runnable application pflogd
8313 runnable application smtpd
8512 runnable application getty std.9600 ttyC5
9101 runnable application xterm
10790 runnable application xconsole
13909 runnable application ksh -c xterm
14118 runnable application smtpd
15133 runnable application getty std.9600 ttyC0
15178 runnable application dhclient
15426 runnable application sshd
17218 runnable application syslogd
17802 runnable application getty std.9600 ttyC2
18138 runnable application Xorg
18156 runnable application ntpd
18902 runnable application smtpd
20799 runnable application smtpd
21303 running application snmpd
23465 runnable application Xorg :0 vt05 -auth /etc/X11/xdm/authdir/authfiles/A:0-mWQ7LM
23819 runnable application xdm
26003 runnable application sh /etc/X11/xdm/Xsession
26602 runnable application pflogd
26788 runnable application getty std.9600 ttyC1
27704 runnable application ksh
28564 runnable application dhclient
28606 runnable application smtpd
28824 runnable application xdm
31369 runnable application xconsole
32688 runnable application smtpd
Есть возможность мониторить количество запущенных процессов:
Код: Выделить всё
> ./check_snmp_openbsd.py 192.168.2.101 public proc 80 90
OK: running 40 processes [max 1310]|processes=40;80;90;0;0
> echo $?
0
> ./check_snmp_openbsd.py 192.168.2.101 public proc 30 90
WARNING: running 40 processes [max 1310]|processes=40;30;90;0;0
> echo $?
1
> ./check_snmp_openbsd.py 192.168.2.101 public proc 30 35
CRITICAL: running 40 processes [max 1310]|processes=40;30;35;0;0
> echo $?
2
Информация об интерфейсах:
Код: Выделить всё
> ./check_snmp_openbsd.py 192.168.2.101 public interfaces
NAME STATE IP MAC MTU TYPE CONNECTOR I/O ERROR
===================================================================================================================
bge0 up 192.168.2.101 0:1f:16:2b:75:cd 1500 ethernetCsmacd true 0/0
enc0 down 0 other false 0/0
lo0 up 127.0.0.1 32768 softwareLoopback false 0/0
pflog0 up 33192 other false 0/0