Мониторинг 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 для сохранения или отмены изменений):

Читать далее «Мониторинг Bind9 в Zabbix»

Почему Zabbix не всегда рисует графики

Бывают случаи когда часть информации на графиках в Zabbix отсутствует, так сказать отображается частично и с перебоями.

Опишу возможные причины перебоев и их решение:

1) Может быть плохая связь с узлом сети, необходимо проверить пинг с Zabbix сервера на узел сети.
Для примера, первая команда PING с большими пакетами из Windows, а вторая из Linux:

ping -t -l 1024 192.168.5.1
ping -i 0.2 -s 1024 192.168.5.1

2) Устройство медленно работает и перестает отвечать при большом количестве запросов, для решения этой проблемы необходимо в настройках узла сети Zabbix снять галочку «Использовать массовые запросы».

3) Для получения данных с узла сети используются 32-битные счетчики, и при загрузке интерфейсов устройства например выше 400 мегабит данные на графике могут не отображаться, для решения этой проблемы в элементах данных необходимо заменить их на 64-битные и очистить историю узла сети чтобы на графиках не было скачков.
Например, если трафик получается с первого сетевого интерфейса через MIB ifInOctets.1 (32-бит), то его нужно заменить на ifHCInOctets.1 (64-бит).

Настройка SSH проверок в Zabbix

Понадобилось как-то для некоторых Linux серверов настроить SSH проверки, чтобы не устанавливать на них Zabbix-agent.
Сам Zabbix-server у меня установлен на Ubuntu Server.

Ниже по порядку опишу как настроить SSH проверки в Zabbix.

Авторизацию по SSH настроим по ключу вместо пароля, для этого остановим zabbix-agent и zabbix-server:

sudo service zabbix-agent stop
sudo service zabbix-server stop

Создадим домашнюю директорию пользователя Zabbix (для хранения ssh ключей):

sudo usermod -m -d /home/zabbix zabbix
sudo chown zabbix:zabbix /home/zabbix
sudo chmod 700 /home/zabbix

Запустим обратно zabbix-agent и zabbix-server:

sudo service zabbix-agent start
sudo service zabbix-server start

Откроем конфигурационный файл /etc/zabbix/zabbix_server.conf (в редакторе nano комбинация клавиш Ctrl+O и Enter означает сохранение, Ctrl+X выход):

sudo nano /etc/zabbix/zabbix_server.conf

Раскомментируем строку SSHKeyLocation и укажем путь к директории с ключами:

SSHKeyLocation=/home/zabbix/.ssh

Перезапустим zabbix-server:

sudo service zabbix-server restart

Генерируем ssh ключ:

sudo -u zabbix ssh-keygen -t rsa
Нажмем Enter если предлагается путь /home/zabbix/.ssh/id_rsa
На предложение зашифровать файл ключа нажмем Enter чтобы не шифровать его или введем два раза любой пароль (им будет зашифрован файл ключа и при подключении его придется указывать)

Скопируем сгенерированый ключ на сервер за которым будем наблюдать:

sudo -u zabbix ssh-copy-id -i /home/zabbix/.ssh/id_rsa.pub -p 22 root@192.168.0.55

Если возникает ошибка при копировании ключа, то можно вручную скопировать строку из id_rsa.pub на удаленный сервер в файл authorized_keys.

И попробуем подключиться к удаленному серверу без ввода пароля командой:

sudo -u zabbix ssh -p 22 root@192.168.0.55

Теперь в Zabbix добавим элемент данных к шаблону или хосту:
Имя: любое
Тип: SSH агент
Ключ: ssh.run[описание,ip,порт,кодировка] (например ssh.run[cpu,192.168.0.55,22,utf8]
Метод аутентификации: Публичный ключ
Имя пользователя (на удаленном хосте): root
Файл публичного ключа: id_rsa.pub
Файл приватного ключа: id_rsa
Фраза-пароль ключа: оставим пустым если не шифровали ключ паролем
Выполняемый скрипт: команда выполняемая на удаленном сервер, примеры ниже

Приведу ниже пример команд для Linux которые можно выполнить и получить различную информацию.
Загрузка процессора за 1мин/5мин/15мин:

cat /proc/loadavg |cut -d " " -f1
cat /proc/loadavg |cut -d " " -f2
cat /proc/loadavg |cut -d " " -f3

Количество текущих запущенных процессов указанной программы:

pgrep apache2|wc -l
pgrep -c sshd

Свободное пространство в точке монтирования «/» (в мегабайтах):

df -m|grep "/$"|awk '{print $4}'

Занятое пространство в точке монтирования «/» (в процентах):

df|grep "/$"|awk '{print $5}'|tr -d "%"

Получено байт на сетевой интерфейс eth0:

cat /proc/net/dev|grep eth0|awk '{print $2}'

Отправлено байт на сетевой интерфейс eth0:

cat /proc/net/dev|grep eth0|awk '{print $10}'

Количество свободной оперативной памяти:

free |grep "Память:"|awk '{print $4}'
free |grep "Mem:"|awk '{print $4}'

Смотрите также:
Подключение к SSH с использованием ключей

Настройка email оповещений в Zabbix через iRedMail

На тесте буду использовать Zabbix 3.0.3 и iRedMail 0.9.4 установленные в Ubuntu Server 14.04.4 LTS.

Сначала в панели Zabbix активируем действие открыв вкладку «Настройка» — «Действия» и активируем «Report problems to Zabbix administrators«. В нем я также, чтобы видеть имена хостов, изменил обе темы письма с:

{TRIGGER.STATUS}: {TRIGGER.NAME}

на

{TRIGGER.STATUS}: {HOST.NAME1} {TRIGGER.NAME}

В Zabbix изначально добавлен способ оповещения через Email, но в зависимости от настроек почтового сервера он может работать либо не работать. Найти его можно зайдя в Zabbix под администратором и открыв вкладку «Администрирование» — «Способы оповещений» — «Email«.

При настройке с iRedMail я указывал следующие параметры:

Имя: Email
Тип: Email
SMTP сервер: mail.example.com
Порт SMTP сервера: 25
SMTP helo: example.com
SMTP email: user@example.com
Безопасность подключения: STARTTLS
Галочки на «Проверка SSL узла» и «Проверка SSL хоста» не ставил
Аутентификация: Обычный пароль
Имя пользователя: user@example.com
Пароль: ПАРОЛЬ_К_ПОЧТЕ
галочка на «Активировано»

Если почтовый сервер находится в одной системе с Zabbix сервером, то можно попробовать настроить как выше, но где «Безопасность подключения» и «Аутентификация» выбрать «Нет».

Также в профиле пользователя, во вкладке «Оповещения» нужно добавить:

Тип: Email
Отправлять на: почта на которую должны приходить оповещения
Когда активен: время когда разрешено приходить оповещениям
Использовать, если важность: какой важности оповещения присылать
Состояние: Активировано

Вот и все.