В процессе работы зачастую требуется осуществлять мониторинг сложных систем и серверов с большим количеством запущенных сервисов. Эти сервисы могут мониторится по огромному числу разных параметров. Более того, в каждой отдельной Кампании требования к тому, какие именно критерии системы являются ключевыми различны.
Система мониторинга Zabbix предлагает широкий спектр заранее подготовленных шаблонов для мониторинга серверов, однако, стандартных тестов может оказаться недостаточно. В таком случае удачным выходом будет запуск отдельного shell скрипта. Который будет отправлять запрос к необходимому сервису и возвращать результат, который затем можно принять и обработать в системе Zabbix.
Для примера осуществим мониторинг сервера Asterisk по следующим параметрам:
1) Число одновременных активных звонков.
2) Число одновременно подключенных пиров (будет выводить данные о количестве пиров, и, если их число резко возрастет за короткий промежуток времени – выдаст сообщение о возможной угрозе).
3) Число активных транков (если на каком-либо транке asterisk перестанет регистрироваться – выдаст сообщение об этом с высокой степенью важности).
Для начала установим и запустим на необходимой машине zabbix-agent, который будет собирать все необходимые сведения и отправлять их на сервер. Установим агент той же версии, что и сервер. Версию сервера можно посмотреть внизу веб-интерфейса.
Установим пакет конфигурации репозитория
Zabbix 2.4 для RHEL5, Oracle Linux 5, CentOS 5:
Zabbix 2.4 для RHEL6, Oracle Linux 6, CentOS 6:
Zabbix 2.4 для RHEL7, Oracle Linux 7, CentOS 7:
После чего произведем установку агента
После установки необходимо отредактировать файл конфигурации /etc/zabbix/zabbix_agentd.conf
Редактируем следующие поля
здесь указывается IP адрес или доменное имя zabbix-сервера
По умолчанию zabbix работает через поорт 10050, если на сервере этот параметр не изменен, данную опцию можно пропустить, но если на сервере указан другой порт сервиса, в данном файле это значение необходимо изменить.
здесь указывается IP адрес или доменное имя сервера для активных проверок. Если это поле не заполнять, Zabbix сервер не сможет проводить активные проверки данной системы.
здесь указывается доменное имя или IP адрес данной машины в сети, по которому Zabbix сервер будет отправлять к ней запросы. (чтобы узнать IP адрес, воспользуйтесь командой ifconfig)
После того, как данные поля будут заполнены, необходимо добавить порт 10050 (или тот, который использует Zabbix сервер в Вашей сети) в исключения iptables. Откройте для редактирования файл
Добавить в середину файла строку
После чего выполните рестарт сервиса iptables
После этого можно совершить запуск zabbix-agent и добавить его в автозагрузку
Теперь zabbix-agent на нашей системе сконфигурирован и запущен. Можно приступать к добавлению хоста в систему мониторинга. В веб-интерфейсе переходим на вкладку
Настройка – Узлы сети
Нажимаем «Добавить узел сети» и заполняем необходимые поля
Имя узла сети – необходимо вписать те же данные, которые были указаны в файле zabbix_agentd.conf, в строке «Hostname»
Видимое имя – Заполняется произвольно. Под этим именем данный хост будет отображаться в веб-интерфейсе Zabbix.
Группы – можно выбрать группу, к которой относится текущий хост. Служит для удобства отображения и поиска хостов. Особенно при большом их количестве.
IP адрес – указывается IP адрес данной машины
Порт – порт на котором работает Zabbix сервер. Указывается то же значение, которое было прописано в zabbix_agentd.conf, в строке «ListenPort»
После заполнения всех полей, нажимаем кнопку «Добавить». Данный хост добавлен в систему мониторинга Zabbix. Теперь можно приступить к добавлению тестов. Для начала добавим стандартные тесты для OS Linux (в нашем случае хост использует OS CentOS 6)
В окне настройки узла сети переходим во вкладку «Шаблоны»
В поле «Соединить с новыми шаблонами» вводим linux и выбираем из предложенного списка «Template OS Linux». После чего нажимаем кнопку «Добавить»
А затем кнопку «Добавить» внизу окна (данная кнопка добавляет все выбранные шаблоны).
Для проверки можно перейти во вкладку «Настройка» - «Узлы сети» - «Элементы данных».
В столбце «Состояние» должно быть написано «Активирован». При возникновении ошибки – будет выведен её текст.
Если все в порядке и стандартный мониторинг системы работает, можно приступить к добавлению мониторинга отдельных сервисов при помощи внешних скриптов.
Добавление скриптов осуществляется при помощи опции UserParameter, прописываемой в файле zabbix_agentd.conf. Открываем для редактирования данный файл и в конец раздела
Дописываем строки
Где значение, указанное до запятой является именем ключа, а значение после запятой – полный путь к исполняемому файлу. В данном случае, ключи для мониторинга имеют имена asterisk.trunk, asterisk.calls и asterisk.peers.
В директории /usr/etc/scripts/ создаем соответствующие файлы asterisk_trunks.sh, asterisk_calls.sh и asterisk_peers.sh.
Скрипт asterisk_calls.sh служит для вывода в Zabbix количества активных разговоров и необходим для сбора статистики. Сам скрипт выглядит следующим образом
#!/bin/sh
total=
echo $total
Скрипт asterisk_peers.sh необходим для вывода количества активных пиров.
#!/bin/sh
total=
echo $total
Скрипт asterisk_trunks.sh необходим для мониторинг количества активных транков, и вывода сообщения о проблемах с регистрацией на одном из них
#!/bin/sh
# Получаем количество всех транков в системе
total=
# Получаем число активных транков
active=
# Получаем адреса транков с проблемам
offline=
# Сравниваем общее число с числом активных транков и выводим сообщение об их сотоянии
if [ $active -lt $total ]
then
echo Trunks offline $offline
else
echo All trunks are online
fi
Делаем данные файлы исполняемыми
Все скрипты, запускаемый при помощи zabbix-agent выполняются под пользователем zabbix. Поэтому для выполнения некоторых команд может потребоваться добавление sudo.
Чтобы пользователь zabbix мог зпусть скрипты при помощи sudo без вода пароля, в файле /etc/sudoers необходимо после
добавить строку
При появлении ошибки «sudo: sorry, you must have a tty to run sudo», после вышеуказанной строки, добавьте:
После того, как скрипты были созданы и добавлены в конфигурационный файл агента, можно добавить новый Элемент данных в систему мониторинга. В веб-интерфейсе переходим во вкладку «Настройка» - «Узла сети», напротив необходимого нам хоста нажимаем на ссылку «Элементы данных». В открывшемся окне в правом верхнем углу нажимаем на кнопку «Создать элемент данных».
В данном окне заполняем необходимые поля:
Имя – Заполняется произвольно. По данному параметру будет производиться поиск и отображение текущего Элемента данных в системе.
Тип – будет выбран автоматически. Рекомендуется оставить без изменений.
Ключ – указывается тоже самое название, которое было прописано в файле zabbix_agentd.conf, в строке UserParameter перед запятой.
Интерфейс узла сети – будет заполнен автоматически. В данном поле указывается, через какой сетевой интерфейс будет осуществляться обмен данными с агентом.
Тип информации – выбирается в соответствии с тем, в каком виде скрипт выводит данные. В нашем случае, скрипт asterisk_trunks.sh выводит информацию в виде текста, поэтому в этом поле выбираем параметр «Текст».
Интервал обновления – указывает, как часто будет выполняться обновление данных по этому параметру (с какой частотой будет выполняться данный скрипт)
После заполнения необходимых полей, нажимаем кнопку «Добавить». Данный Элемент данных был успешно добавлен в систему мониторинга.
Аналогичным образом добавляем Элементы данных для двух оставшихся скриптов. Стоит отметить, что для Элемента данных «asterisk.peers» поле «Тип данных» необходимо оставить в виде
После добавления всех необходимых элементов для мониторинга остается добавить триггеры для оповещения, в случае, если что-то пойдет не так. Для этого в окне настройки узлов сети напротив необходимого узла нажимаем на ссылу «Триггеры». И в правом верхнем углу нажимаем кнопку «Создать триггер». В открывшемся окне заполняем необходимые поля:
Имя – заполняется произвольно. По данному имени будет осуществляться поиск и отсылка к триггеру в системе.
Выражение – тело триггера, в котором описывается, при каком условии он сработает. Для его описания нажимаем кнопку «Добавить» справа от поля ввода текста. В открывшемся окне в поле Элемент данных выбираем созданный нами Элемент “Trunk Status”. Далее в поле Функция указываем значение, приеденное на рисунке. По данному значению, система будет искать в выводе Элеента указанную в поле «V» строку, и, если её там не будет, выводить сообщение об ошибке. Таким образом, если Asterisk перестанет регистрироваться на каком-либо из транков, будет выведено сообщение об ошибке и текст, с указанием, какой именно транк не работает.
После заполнения полей нажимаем кнопку «Добавить». В окне добавления триггера выбираем
Важность – в данном случае ставим «Высокая».
И нажимаем «Добавить». Триггер добавлен. Аналогичным образом добавляем триггер к Элементу данных Asterisk Peers. За исключением того, что в данном случае в окне «Условия выражения триггера» выбираем функцию, приведенную ниже
Таким образом. Если за минуту число одновременно активных пиров увеличится больше, чем на 5 штук, будет выведено предупреждающее сообщение. В окне добавления триггера выбираем «Важность» - «Средняя» и нажимаем «Добавить».
Все дополнительные элементы мониторинга добавлены, система оповещения для них настроена.Аналогичным образом можно добавить систему мониторинга других сервисов, необходимо помнить о типе выводимых данных для корректной работы триггеров.