Featured image of post Zabbix & Grafana: Мониторинг сайта скриптами. Часть 1

Zabbix & Grafana: Мониторинг сайта скриптами. Часть 1

Мониторинг сайта Zabbix. Внешним скриптом. Сбор метрик и SLA

Дано: Критически важный сайт, который нужно мониторить и в случае неработоспособности уведомлять админов.

  • Версия Zabbix: 6.0.1
  • Версия Grafana: 11.6.0
  • Мониторинг будем настраивать на получение кода 200.
    Если авторизация удалась, то считаем это за 1, если нет, то 0.
    Запрос каждую минуту
  • 2-е неуспешные авторизации = срабатывание триггера

В первой части статьи мы создадим скрипт и настроим zabbix на сбор метрик.
Во второй части сделаем оповещение пользователей Zabbix и визуализируем результаты мониторинга в Grafana.

Порядок действий:

  1. Выбрать сервер, с установленным zabbix-агентом. Написать скрипт.
  2. Добавить пользовательский параметр в конфигурацию zabbix-агента
  3. Создать шаблон (элементы, триггеры) + назначить хосту (В моём примере это будет сам zabbix-сервер)
  4. Настроить SLA
  5. Настроить оповещения
  6. Создать пользователя (группу пользователей) для уведомлений + создание действия
  7. Визуализация в Grafana

Шаг 1. Выбрать сервер, с установленным zabbix-агентом. Написать скрипт.

В качестве сервера, который будет запускать скрипт и получать значение у меня будет Zabbix-сервер. Захожу на сервер. Создаю скрипт:

1
sudo nano /opt/monitoring/site-check.py

Пример написанного мною скрипта. Используется Python3 и библиотеки: requests, sys, warnings.

Линк на Github

Делаем исполняемым:

1
sudo chmod +x /opt/monitoring/site-check.py

Меняем группу владельца на zabbix

1
sudo chown root:zabbix /opt/monitoring/site-check.py

Запускаем тестируем:

1
./opt/monitoring/site-check.py

Шаг 2. Добавить пользовательский параметр в конфигурацию zabbix-агента

1
sudo nano /etc/zabbix/zabbix_agentd.conf

Находим параметр: UserParameter

Где, site.auth - переменная, в которую будет записываться значение полученное после выполнения скрипта. /opt/monitoring/site-check.py - путь до скрипта.

1
UserParameter=site.auth,/opt/monitoring/site-check.py

Рестартим сервис:

1
systemctl restart zabbix-agent.service

Проверяем, что zabbix понимает переменную:

1
zabbix_agentd -t site.auth

Шаг 3. Создать шаблон (элементы, триггеры) + назначить хосту

Идем в веб-интерфейс Zabbix. Создаём шаблон:

Templates -> Create template

-> Add

Создаем элемент:

Items -> Create item

Далее Test -> Host address Наш сервер, на котором запускается скрипт -> Port: 10050

В Value появится 1, если авторизация доступна или 0 если недоступна.

-> Add

Создаем триггер

Triggers -> Create Trigger

Я закладываю логику: Если два раз подряд авторизация завершится неудачно, тогда срабатывает триггер.
Напоминаю, что используется Zabbix 6.0 поэтому параметры типа count с тремя значениями использоваться ещё не могут. Будем брать последние 2 значения:

1
Expression: last(/Template Auth Monitoring/site.auth,#1)=0 and last(/Template Auth Monitoring/site.auth,#2)=0
  • где, #1 = Последнее полученное значение ключа, #2 = Предпоследнее полученное значение ключа

Далее переходим в Tag и назначаем

-> Add

Шаг 4. Настройка SLA

Service -> SLA -> Create SLA

1
Reporting period" Quarterly # Считать статистику будем за квартал

-> Add

Создаём сервис

Services -> Edit - Create service

-> Add

Назначаем тег

Настройка сбора метрик завершена. В следующей части оповещения и визуализация в Grafana.

Часть 2 -> https://itzm.tech/p/zabbix2/

Информацию можно использовать в свободном доступе, с указанием ссылки на сайт
Telegram GitHub YouTube