Мониторинг Linux ISG в Zabbix

Сегодня захотелось сделать мониторинг Linux ISG сессий в Zabbix.

Введя команду на одном из серверов:

/opt/ISG/bin/ISG.pl show_count

Увидел следующее:

Approved sessions count: 2021
Unapproved sessions count: 2

Zabbix агент на сервере уже был установлен, поэтому открыл его конфигурационный файл (в редакторе nano клавиши Ctrl+X для выхода, а y/n для сохранения или отмены изменений):

nano /etc/zabbix/zabbix_agentd.conf

Придумал и добавил следующий код:

UserParameter=isg.approved, /opt/ISG/bin/ISG.pl show_count | grep "Approved sessions count:" | awk '{print $4}'
UserParameter=isg.unapproved, /opt/ISG/bin/ISG.pl show_count | grep "Unapproved sessions count:" | awk '{print $4}'

Разрешим работу Zabbix агента под root пользователем указав:

AllowRoot=1

Перезапустим Zabbix агент чтобы применить изменения:

sudo /etc/init.d/zabbix-agent restart

На Zabbix сервере создадим шаблон ISG, добавим в него элементы данных, указав тип — Zabbix агент, а ключи: isg.approved, isg.unapproved.
Создадим графики для созданных элементов данных.

Применим шаблон к нужным узлам сети.

Готово.

Мониторинг Postfix в Zabbix

Сперва выполним настройку Zabbix агента.

Создадим файл (в редакторе nano клавиши Ctrl+X для выхода, а y/n для сохранения или отмены изменений):

nano /etc/zabbix/zabbix_agentd.d/userparameter_postfix.conf

Добавим в него:

UserParameter=postfix.maildrop, find /var/spool/postfix/maildrop -type f | wc -l
UserParameter=postfix.deferred, find /var/spool/postfix/deferred -type f | wc -l
UserParameter=postfix.incoming, find /var/spool/postfix/incoming -type f | wc -l
UserParameter=postfix.active, find /var/spool/postfix/active -type f | wc -l
UserParameter=postfix.queue, mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]'

Либо можно просто добавить строки выше в файл конфигурации Zabbix агента.

Также откроем файл конфигурации Zabbix агента:

nano /etc/zabbix/zabbix_agentd.conf

Разрешим работу Zabbix агента под root пользователем указав:

AllowRoot=1

Перезапустим Zabbix агент чтобы применить изменения:

sudo /etc/init.d/zabbix-agent restart

Теперь перейдем к Zabbix серверу.
Создадим шаблон Postfix, добавим в него элементы данных, указав тип — Zabbix агент, а ключи: postfix.maildrop, postfix.deferred, postfix.incoming, postfix.active, postfix.queue.
Создадим графики для созданных элементов данных.

Также можно создать элемент данных считающий количество процессов Postfix, указав тип — Zabbix агент, а ключ:

proc.num[,postfix]

Также создадим триггер сообщающий когда процессов 0.

Скачать готовый шаблон можно тут — Zabbix шаблон для Postfix

Оповещения Zabbix по телефону через Asterisk

Однажды ночью на станции отключились кондиционеры и начала подниматься температура, естественно мне пришли email уведомления на телефон, но так как была ночь, увидел я их только утром, поэтому понадобилось для таких экстренных случаев быстро сделать возможность уведомлений звонком на телефон.

Наведу пример варианта оповещений Zabbix используя телефонный вызов через Asterisk.

У Asterisk должен быть загружен модуль, для этого откроем файл конфигурации модулей, например в редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/asterisk/modules.conf

Читать далее «Оповещения Zabbix по телефону через Asterisk»

Примеры триггеров для Zabbix

Приведу несколько примеров триггеров для Zabbix.

Допустим есть элементы данных, исходя из них будем создавать триггеры.

Пример триггера сообщающего что трафик на порту коммутатора больше допустимого:

Читать далее «Примеры триггеров для Zabbix»

Мониторинг размера MySQL базы или таблицы в Zabbix

Чтобы увидеть таблицу со списком баз данных и их размером в мегабайтах можно выполнить SQL запрос:

Читать далее «Мониторинг размера MySQL базы или таблицы в Zabbix»

Мониторинг Samba в Zabbix

Приведу пример наблюдения за количеством запущенных Samba процессов, а также создания триггера сообщающего когда нет запущенных процессов.
В системе с Samba должен быть установлен Zabbix-агент.
Смотрите мои популярные статьи о Zabbix.

Создадим шаблон, например с именем «Template Service Samba» и добавим в него следующий элемент данных:

Имя: Количество процессов nmbd
Тип: Zabbix агент
Ключ: proc.num[nmbd]

Аналогично создадим и для smbd.
Можно также создать элементы данных отображающие количество использованной памяти процессом, в этом случае ключ будет выглядеть так:

proc.mem[nmbd,,sum]

А также добавим для них графики.

Теперь добавим для каждого процесса триггер, чтобы видеть когда процесс не запущен:

Имя: Не работает nmbd на {HOST.NAME}
Выражение: {Template Service Samba:proc.num[nmbd].max(1)}<1

Все.

Мониторинг количества клиентов секторной Ubiquiti по SSH из Zabbix

На тесте приведу пример получения количества клиентов подключенных к обычной секторной антенне Ubiquiti AirMax Rocket M5.
Получать данные будем через SSH.

Для проверки один раз подключимся к устройству (первый раз при подключении наберем yes и нажмем enter):

sudo -u zabbix ssh -p 22 admin@192.168.0.55

Теперь в Zabbix добавим элемент данных к шаблону или хосту, например с именем «Template Ubiquiti Rocket M5 Sector»:

Имя: любое
Тип: SSH агент
Ключ: ssh.run[clients,,22,utf8]
Метод аутентификации: Пароль
Имя пользователя: ИМЯ
Пароль: ПАРОЛЬ
Выполняемый скрипт: команда выполняемая на устройстве (смотрите ниже)

Пример команды отображаемой количество подключенных клиентов:

wstalist |grep "mac" |wc -l

Соответственно создадим график элементу данных, а также триггер:

Имя: На секторной антенне  {HOST.NAME} > 40 клиентов
Выражение: {Template Ubiquiti Rocket M5 Sector:ssh.run[clients,,22,utff8].last(#1)}>40

Смотрите также:
Настройка SSH проверок в Zabbix

Мониторинг BGP в Zabbix

Приведу пример простой проверки запущено ли что-то на TCP порту 179 который использует BGP.

Создадим в новом шаблоне Zabbix или прямо в узле сети следующий элемент данных с именем «Template App BGP Service» (где 192.168.10.2 адрес узла сети на котором проверяется работоспособность BGP):

Имя: BGP service is running
Тип: Zabbix агент
Ключ: net.tcp.service[tcp,192.168.10.2,179]
Тип информации: Числовой (целое положительное)
Тип данных: Десятичный
Отображение значения: Service state

Если на узле установлен Zabbix-agent, то создадим два элемента данных и в поле «Ключ:» укажем:

proc.num[bgpd]
proc.num[zebra]

Если элемент данных сообщает 0, то значит BGP не работает либо порт закрыт, если 1 — все в порядке.

Соответственно добавим триггер который будет уведомлять о неработающем BGP:

Имя: Не работает BGP на {HOST.NAME}
Выражение: {Template App BGP Service:net.tcp.service[tcp,192.168.10.2,179].max(#3)}=0

Все.

Решение ошибки в Zabbix «snmp_parse_oid(): cannot parse OID «MIB»»

Заметил однажды на новой системе после импорта Zabbix шаблонов что не все элементы данных успешно работают.

И отображается ошибка:

snmp_parse_oid(): cannot parse OID «MIB»

Как оказалось в элементах данных указаны MIB вместо OID, которых нет в системе.
Приведу пример, MIB для входящего трафика на первом интерфейсе будет ifInOctets.1, а OID 1.3.6.1.2.1.2.2.1.10.1
Тут более подробно можно увидеть примеры Список SNMP OID и MIB для интерфейсов
Поэтому вариантом решения данной ошибки будет либо редактирование всех элементов шаблона изменим MIB на OID, либо вариант проще — установить MIB которых нет в системе, если это стандартные MIB то их можно установить как я описывал в этой статье — Установка MIB в Ubuntu и решение ошибки «SNMP Cannot Find Module …»

В конце обязательно перезапустим snmpd и zabbix-server:

sudo service snmpd restart
sudo service zabbix-server restart

Все.

Мониторинг Bind9 в Zabbix

На примере опишу вариант мониторинга DNS сервера Bind9 в Zabbix.

Для начала включим статистику Bind9, откроем файл конфигурации в текстовом редакторе, например nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/bind/named.conf

И добавим следующие строки (где первый IP и порт — интерфейс на котором будет видна статистика, а следующие — с которых разрешен к ней доступ):

statistics-channels {
     inet 192.168.10.1 port 8053 allow { 127.0.0.1; 192.168.10.1; 192.168.10.15;};
};

И перезапустим Bind чтобы применить изменения:

sudo /etc/init.d/bind9 restart

После этого в браузере набрав http://192.168.10.1:8053/ можно увидеть статистику Bind9.

Установим необходимые компоненты необходимые для получения статистики из терминала:

sudo apt-get install xml2 curl

Проверим отображается ли статистика:

curl http://192.168.10.1:8053/ 2>/dev/null | xml2 | grep -A1 queries

Теперь допишем к конфигурацию Zabbix агента /etc/zabbix/zabbix_agentd.conf параметры которые будем мониторить:

# Количество udp соединений к DNS:
UserParameter=bind.net.udp,netstat -nua | grep :53 | wc -l
# Количество tcp соединений к DNS:
UserParameter=bind.net.tcp,netstat -nta | grep :53 | wc -l
# Количество входящих и исходящих запросов:
UserParameter=bind.queries.in[*],curl http://192.168.10.1:8053/ 2>/dev/null | xml2 | grep -A1 "/isc/bind/statistics/server/queries-in/rdtype/name=$1$" | tail -1 | cut -d= -f2
UserParameter=bind.queries.out[*],curl http://192.168.10.1:8053/ 2>/dev/null | xml2 | grep -A1 "/isc/bind/statistics/views/view/rdtype/name=$1$" | tail -1 | cut -d= -f2

И перезапустим Zabbix агент чтобы применить изменения:

sudo /etc/init.d/zabbix-agent restart

Добавим элементы данных и графики нужному узлу сети или шаблону в Zabbix сервере (тип — Zabbix агент, примеры ключей ниже):

bind.queries.in[A]
bind.queries.out[A]
bind.queries.in[AAAA]
bind.queries.out[AAAA]
bind.queries.in[NS]
bind.queries.out[NS]
bind.queries.in[MX]
bind.queries.out[MX]
bind.queries.in[PTR]
bind.queries.out[PTR]
bind.queries.in[SOA]
bind.queries.out[SOA]
bind.queries.in[TXT]
bind.queries.out[TXT]
bind.queries.in[ANY]
bind.queries.out[ANY]
и т.д.

Смотрите также мою статью:
Мониторинг DNS из Zabbix