tm

   Для начала добавляем кусок конфигурации в файл конфигурации zabbix-агента:

nano /etc/zabbix/zabbix_agentd.conf
# MySQL Status
# MySQL Status
UserParameter=mysql.version,mysql -V
UserParameter=mysql.ping,mysqladmin --defaults-extra-file=/var/lib/conf/mysql.passwd status|grep alive|wc -l
UserParameter=mysql.uptime,mysqladmin --defaults-extra-file=/var/lib/conf/mysql.passwd status|cut -f2 -d":"|cut -f2 -d" "
UserParameter=mysql.threads,mysqladmin --defaults-extra-file=/var/lib/conf/mysql.passwd status|cut -f3 -d":"|cut -f2 -d" "
UserParameter=mysql.questions,mysqladmin --defaults-extra-file=/var/lib/conf/mysql.passwd status|cut -f4 -d":"|cut -f2 -d" "
UserParameter=mysql.slowqueries,mysqladmin --defaults-extra-file=/var/lib/conf/mysql.passwd status|cut -f5 -d":"|cut -f2 -d" "

Это позволит запустить zabbix-агенту mysqladmin под пользователем, у которого есть права на просмотр статистики, например root.

Права на файл с паролем должны быть 400:

chown zabbix:zabbix cat /var/lib/conf/mysql.passwd
chmod 400 /var/lib/conf/mysql.passwd

Если использовать системный файл, у которого владелец root и права 400, на помощь придёт setfacl:

setfacl -R -m u:zabbix:r /var/lib/conf/mysql.passwd

В качестве проверки на zabbix-сервере выполняем, например:

zabbix_get -s 192.168.50.1 -k mysql.questions

Если в ответ пришло значение, можно переходить к web-морде.

Править можно или имеющийся шаблон или создать свой.

zab mysql1

Т. е. в качестве ключа мы подставляем UserParameter - mysql.questions. И в предобработке вычивыляем Изменение в секунду.

zab mysql2

Далее переходим в раздел графики, создаём график и добавляем в него элементы данных, созданный в шаблоне Template DB MySQL, например.

Создать тригеры можно по аналогии с этой зарисовкой.

   Зарисовка о мониторинге TCP/UDP соединений. В первую очередь редактируем конфигурацию Zabbix-агента. Вставляем в конец файла:

nano /etc/zabbix/zabbix_agentd.conf
# TCP/UDP Connections
UserParameter=conn.tcp4[*],sudo netstat -ant4 | wc -l
UserParameter=conn.udp4[*],sudo netstat -anu4 | wc -l
UserParameter=conn.tcp4.est[*],sudo netstat -ant4|awk '/tcp/ {print $6}'|sort|uniq -c|grep ESTAB | wc -l
UserParameter=conn.tcp4.timecl[*],sudo netstat -ant4|awk '/tcp/ {print $6}'|sort|uniq -c | grep TIME_CLOSE| wc -l
UserParameter=conn.tcp4.timew[*],sudo netstat -ant4|awk '/tcp/ {print $6}'|sort|uniq -c | grep TIME_WAIT| wc -l
UserParameter=conn.tcp4.listen[*],sudo netstat -ant4|awk '/tcp/ {print $6}'|sort|uniq -c | grep LISTEN| wc -l
UserParameter=conn.tcp4.synsent[*],sudo netstat -ant4|awk '/tcp/ {print $6}'|sort|uniq -c | grep SYN_SENT| wc -l
UserParameter=conn.tcp4.fw1[*],sudo netstat -ant4|awk '/tcp/ {print $6}'|sort|uniq -c | grep FIN_WAIT1| wc -l
UserParameter=conn.tcp4.fw2[*],sudo netstat -ant4|awk '/tcp/ {print $6}'|sort|uniq -c | grep FIN_WAIT2| wc -l

и 

service zabbix-agent restart

Первые два параметра - это общее количество подключений tcp и udp v4. Остальные параметры с разбивкой на состояние сеанса TCP. При диком желании можно добавить необходимые.

Не забываем передоставить zabbix агенту возможность выполнять netstat, выполнив

visudo

и добавив в конец файла: zabbix ALL= (ALL) NOPASSWD: /bin/netstat.

После этого можно приступать к проверке. На сервере Zabbix выполняем, наприме:

zabbix_get -s 192.168.50.1 -k conn.tcp4.timew

и если в ответ получаем целое число, то всё ОК. Можно переходить к настройке Zabbix через web-интерфейс. В качестве примера можно взять похожую зарисовку по добавлению элементов данных, графиков, тригеров. Повторно это делать не буду, пожалуй. Вся суть в создании группы элементов данных для шаблона или узла сети. В этой группе элементов данных создаются нужные нам элементы данных с ключами, например: conn.tcp4.listen и conn.tcp4. И уже на основании полученных данных строится график.

   Итак, настройка оповещения в Zabbix.

Эта зарисовка - логическое завершение этой и этой, поэтому пример будет в пределах одного хоста.

   В первую очередь нам нужно настроить все возможные способы оповещений для всех пользовователей. Делается это в разделе Администрирование -> Способы оповещений. В своей практике мне приходилось пользоваться только e-mail оповещением. Но и этот способ позволяет получать уведомления по смс. Об этом позже. В этом разделе нужно настроить почтовые параметры (авторизация, параметры соединения...) Например, вполне себе рабочая конфигурация:

Zabbix - параметры почты

 После настройки почтовых параметров идём в настройки пользователя. Администрирование -> Пользователи -> Пользователь -> Оповещения и тут добавляем почтовые адреса и время для оповещений. Например так:

Zabbix - MailList

Стрелкой отмечен почтовый ящик, который создал бесплатно оператор сотовой связи. Перед @ указан номер сотового телефона. Если письма приходят на этот ящик, то они дублируются на телефон в виде СМС сообщений. Не совсем автономная системы для оповещения, не спасёт в том случае, если пропал интернет СОВСЕМ на узле доступа, но если интернет отсутствует только у Вас на телефоне, то СМС всегда придёт.

И завершением этой эпопеи будет создание действия на сработавший триггер. Идём в Настройка -> Действия. В источниках событий (сверху справа) выбираем Триггеры. Создаём новое действие. Присваиваем ему Имя, задаём Условия. В качестве условия выбираем нужный нам триггрер. Во вкладке Операции и Операции восстановления по сути настраиваются текст сообшения и действие. Нас интересует Отправить сообщение и кому (группа или пользователь).

   Конечно, это примитивная конфигурация. На всех этапах настройки будут доступны куда более гибкие возможности, но это уже под конкретные задачи.

Спасибо за внимание!

   Предположим, нам нужно создать триггер на переход ИБП на батареи. У нас уже есть элементы данных, график созданые, например, в этой зарисовке. Тригер нужен нам для визуального оповещения о проблеме в самом Web-интерфейсе Zabbix и это даёт возможность создания оповещения о проблеме по другим видам связи. Приступим!

   В первую очередь нам нужно определиться для какой еденицы в системе мониторинга нам нужно сделать триггер. В моём примере это будет триггер для одного устройства, т. к. эта зарисовка - логическое продолжение этой. Если же нужен тригер который будет у нескольких устройств, то создавать триггер нужно будет для шаблона.

 Идём в разделы Настрока -> Узлы сети -> Триггеры, естественно, для нашего узла сети. Сверху, справа жмём Создать триггер. Присваиваем Имя, Важность, ставим галочку Активировано. Дело за выражением, которое будет описывать условия при котором триггер сработает. Можно воспользоваться конструктором и взять за основу последние полученные значения элементов данных:

Zabbix - добавить триггер

Как видно на скрине выше, можно добавить несколько условий И/ИЛИ в одном триггере. Для проверки работоспособности, можно завысить или занизить какое-нибудь значение данных. В меню Мониторинг -> Триггеры должна выйти авария.

Недостатком такого способа объединения триггеров является отсутствие понимания какое именно значение достигло критического значения. Значения будут видны только в письме которое придёт в качестве оповещения о проблеме. Как это сделать в этой зарисовке.

   Итак, зарисовка о мониторинге ИБП APC SMART-UPS 1000, подключённого к ПК на Linux, через USB. Собирать информацию будем через Zabbix-Agent.

   Для начала нужно выполнить установку ПО для работы с ИБП. Повторяться нет смысла, всё написано в этой зарисовке. Если после выполнения установки и проверки работоспособности не получили никаких ошибок, то приступаем к настройке Zabbix-Agent.

Установка и минимальная настройка Zabbix-Agent описана в этой мини-зарисовке. После основной настройки агента, в конец конфигурационного файла добавляем одну строчку:

/etc/zabbix/zabbix_agentd.conf
UserParameter=apc.mon[*],apcaccess | grep ^$1 | awk '{print $ 3+0}'

Это позволит Zabbix-Agent запустить команду apcaccess и "отгрепать" нужный нам параметр с его значением.

 Одной из возможных причин получения ошибки Connection refused при выполнении команды apcaccess может быть прописаный в конфиге ip адрес по-умолчанию параметра NISIP - 127.0.0.1. Для решения проблемы необходимо исправить на 0.0.0.0.

На Zabbix-Server можно установить zabbix-get и проверить всё ли корректно работает:

apt-get install zabbix-get

и проверяем:

zabbix_get -s 192.168.50.1 -k apc.mon[BATTV]

   Пришла пора брать под контроль рабочие станции обычных пользователей. Поскольку компы работают уже не первый год хотелось бы быть в курсе здоровья жёсткого диска. Это позволит заранее организовать замену при большом количестве сбойных секторов. Представим, что мы находимся в домене, не важно с каким количеством машин. Это позволит нам автоматизировать процесс установки Zabbix-агента на рабочие станции.

   Приступим. В первую очередь нам нужно подготовить конфигурацию. Для этого в файле zabbix_agentd.win.conf достаточно поместить содержимое:

zabbix_agentd.win.conf

LogFile=c:\windows\zabbix32\zabbix_agentd.log
#
LogFileSize=5
#
EnableRemoteCommands=1
#
LogRemoteCommands=1
#
Server=192.168.50.21
#
ListenPort=10050
#
ServerActive=192.168.50.21
#
HostnameItem=system.hostname[host]
# SMART HDD
# RAW_VALUE
UserParameter=smart.raw.[*], for /F "tokens=10" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
# VALUE
UserParameter=smart.value.[*], for /F "tokens=4" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2^| find "$3"') do @echo %a
# WORST
UserParameter=smart.worst.[*], for /F "tokens=5" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
# THRESOLD
UserParameter=smart.thresh.[*], for /F "tokens=6" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
# WHEN_FAILED
UserParameter=smart.when.failed.[*], for /F "tokens=9" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
# HEALTH Status
UserParameter=smart.health.[*], for /F "tokens=6" %a in ('C:\Windows\zabbix32\smart\smartctl.exe -H $1 -d $2 ^| find "test"') do @echo %a

Для мониторинга "жизненно важных" значений SMART HDD, достаточно использовать только строки с RAW_VALUE и VALUE. Остальные значения SMART может быть пригодятся, их можно оставить.

   Итак, установка zabbix-agent на Ubuntu 16.

В более или менее свежих ОС в репозиториях уже есть дистрибутивы нужного нам ПО. Поэтому при наличии интернета просто запускаем установку:

apt-get install zabbix-agent

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

nano /etc/zabbix/zabbix_agentd.conf
Server=192.168.50.21   # Сервер Zabbix

ServerActive=192.168.50.21   #Сервер Zabbix

LogFile=/var/log/zabbix-agent/zabbix_agentd.log   #Путь до файла с логом

Include=/etc/zabbix/zabbix_agentd.conf.d/   #Путь с дполнительными файлами конфигурации

Это минимальный набор параметров необходимый для запуска.

   So, мониторинг параметров SMART жёстких дисков на Zabbix для машин на Linux. Для машин на windows в этой зарисовке.

Для этого, на компьютере который мы будем мониторить, должен быть установлен Zabbix-agent и набор для работы со SMART параметрами жёсткого диска. Как установить zabbix-agent можно посмотреть в в этой статье или найти материалы интернете. Установка ПО для работы со SMART.

Переходим к редактированию конфигурации zabbix-agent. В конце файла конфигурации нужно добавить несколько сток:

nano /etc/zabbix/zabbix_agentd.conf
UserParameter=smartd.value[*],sudo smartctl -A $1 | grep $2 | awk '{print $ 4+0}'
UserParameter=smartd.trash[*],sudo smartctl -A $1 | grep $2 | awk '{print $ 6+0}'
UserParameter=smartd.raw[*],sudo smartctl -A $1 | grep $2 | awk '{print $ 10+0}'

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

В первую очередь нужно установить пакет для снятия показателей температуры (lm-sensors). Как это делается описано в этой статье. Мониторинг осуществляется через Zabbix-Agent, поэтому устанавливаем и его. После установки стоит учесть один момент. Особенно, если Zabbix-Agent установлен только что.

Итак, если команда sensors выводит значения, то можно приступать к следующей части настройки. Заходим в файл конфигурации Zabbix-Agent и в конец конфигурации вставляем:

nano /etc/zabbix/zabbix_agentd.conf
UserParameter=sensor.core0,sensors|grep 'Core 0'|cut -c16-17
UserParameter=sensor.core1,sensors|grep 'Core 1'|cut -c16-17

Что бы понять значения этих параметров посмотрим на свой вывод команды sensors. Возьмём небольшой кусок ответа:

root@dc1:~# sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +48.0°C  (high = +86.0°C, crit = +100.0°C)
Core 1:       +48.0°C  (high = +86.0°C, crit = +100.0°C)

UserParameter - можно догадаться, что это пользовательскй параметр

sensor.core0 - собссно, сам параметр

sensors - запускаемое ПО

Далее идёт скромный парсинг целого значения температуры. -с16-17 - означает, что берутся символы 16 и 17 от начала строки. Сохраняем и перезапускаем Zabbix-Agent.

/etc/init.d/zabbix-agent restart

Проверяем работоспособность. Выполняем на Zabbix-сервере:

zabbix_get -s 192.168.50.1 -k sensor.core1

Должны получить значение.

Далее настройка Zabbix через web-интерфейс, т. е. добавление элементов данных и графиков. Сделайте по подобию этой статьи. Будут вопросы пишите.