Установка Zabbix Server 3.4 в Ubuntu 16.04

На тесте установлю Zabbix Server 3.4 в Ubuntu Server 16.04.

Первым делом установим репозиторий с версией Zabbix 3.4 для Ubuntu 16.04, так как в официальном репозитории Ubuntu доступна старая версия:

sudo wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb
sudo apt update

Теперь выполним команду установки Zabbix Server и Zabbix Agent:

sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent

Подключимся к MySQL:

mysql -uroot -p

Создадим базу данных и пользователя:

create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'PASSWORD';
quit;

Импортирую таблицы в созданную базу:

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Откроем файл конфигурации в текстовом редакторе и где «DBPassword» укажем пароль к базе данных:

sudo nano /etc/zabbix/zabbix_server.conf

Перезапустим Zabbix Server и Zabbix Agent, а также добавим их в автозагрузку:

systemctl restart zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent

Перезапустить еще можно так:

sudo service zabbix-server start

В php.ini укажем date.timezone, например Europe/Kiev, или раскомментируем в /etc/zabbix/apache.conf если он будет копироваться в конфигурацию веб сервера:

sudo cp /etc/zabbix/apache.conf /etc/apache2/sites-enabled/zabbix.conf

Либо сделаем ссылку куда нам нужно:

sudo ln -s /usr/share/zabbix/ /var/www/html/

Открываем веб интерфейс по адресу http://SERVER/zabbix/ и следуем подсказкам для дальнейшей установки.
По умолчанию имя пользователя для входа через веб-интерфейс — admin, пароль — zabbix.

Смотрите также мою статью:
Установка и настройка Zabbix Server в Linux Ubuntu

Мониторинг web сайта в Zabbix

Приведу пример настройки мониторинга web сайта в Zabbix:

1) Выберем или добавим узел сети за которым будем наблюдать.

2) Добавим узлу сети «Веб-сценарий», указав в первой вкладке:
Имя: любое
Агент: например Internet Explorer 11.0
во вкладке «Шаги» добавим шаг:
Имя: любое
URL: например http://example.com
Требуемая строка: любая строка которая присутствует на сайте
Требуемые коды состояния: 200

3) Добавим график для созданного «Веб-сценария», чтобы видеть скорость загрузки, выбрав Download speed for scenario «example.com check».

4) Добавим триггер который сработает после 3 неудачных попыток доступа к сайту:
Имя: любое, например «Сайт example.com недоступен»
Важность: любая
Выражение:

{example.com:web.test.fail[example.com check].last(#3)}<>0

Готово.

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

Исправлял однажды ошибку на одном сервере, читайте об этом мою статью Решение ошибки «nf_conntrack: table full, dropping packet»
И возникла идея контролировать nf_conntrack в Zabbix.

Посмотреть текущее значение и максимальное можно командами:

cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max

Открыл файл конфигурации Zabbix агента в текстовом редакторе:

nano /etc/zabbix/zabbix_agentd.conf

И добавил в конце пару строк:

UserParameter=nf_conntrack_count, cat /proc/sys/net/netfilter/nf_conntrack_count
UserParameter=nf_conntrack_max, cat /proc/sys/net/netfilter/nf_conntrack_max

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

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

Теперь на Zabbix сервере можно создать шаблон (например с именем «TemplateName»), создать в нем элементы данных: nf_conntrack_count и nf_conntrack_max.
Создадим график для созданных элементов данных.
Можно создать триггер например с выражением (он сработает когда текущее значение nf_conntrack превысит 3100000):

{TemplateName:nf_conntrack_count.last(0)}>3100000

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

Готово.

Мониторинг 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.

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

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

Имя: Трафик входящего порта > 70 Mb/s на офисе {HOSTNAME}
Выражение: ({Mikrotik RB2011L-IN office:ifInOctets.1.last()}>70M)

Триггер сообщающий о пропаже линка на порту коммутатора, когда значение не равно 1 (замечу что когда пропал линк статус может быть иным от 2, например когда порт заблокирован и т.д., например 1-up, 2-down, 3-testing, 4-unknown, 5-dormant, 6-notPresent, 7-lowerLayerDown):

Пропал линк к ТОВ Телесети (21 порт) на {HOSTNAME}
({192.168.2.22:ifOperStatus.21.last(0)}<>1)

Чтобы Zabbix сообщил о появлении линка:

Появился линк к ТОВ Телесети (21 порт) на {HOSTNAME}
({192.168.2.22:ifOperStatus.21.last(0)}=1)

Триггер при большой загрузке процессора:

Загрузка процессора на {HOSTNAME} выше 70
{192.168.2.22:cpu.last(0)}>70

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

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

SELECT table_schema "databases name", sum(data_length + index_length)/1024/1024  "DВ size in MB" FROM information_schema.TABLES GROUP BY table_schema;

Посмотреть размер таблиц конкретной базы, например zabbix, можно выполнив SQL:

SELECT table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "zabbix";

Либо в байтах увидеть размер одой базы с именем zabbix:

SELECT SUM( data_length + index_length ) AS 'size'
FROM information_schema.TABLES
WHERE table_schema = 'zabbix'
LIMIT 1;

Чтобы увидеть размер конкретной таблицы базы, например zabbix.history:

SELECT SUM( data_length + index_length ) AS 'size'
FROM information_schema.TABLES
WHERE table_schema = 'zabbix' AND table_name = 'history'
LIMIT 1;

Примеры предыдущих запросов мы и используем для мониторинга. Создадим в директории скриптов Zabbix скрипт, например с именем zabbix_database_size.sh и содержимым:

mysql -u root -pPASSWORD -h 127.0.0.1 -e "SELECT SUM( data_length + index_length ) AS 'size' FROM information_schema.TABLES WHERE table_schema = 'zabbix' LIMIT 1;" -s -N

В Zabbix узлу сети или в новом шаблоне создадим элемент данных в котором укажем:

Имя: Zabbix Database Size
Тип: Внешняя проверка
Ключ: zabbix_database_size.sh
Тип информации: Числовой (целое положительное)
Единица измерения: b

Соответственно создадим для него график.

Все.

Мониторинг 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