Zabbix — пользовательские параметры агента
Создание скриптов
Пользовательские параметры очень часто используются, чтобы выполнить какой-нибудь самописный скрипт и результат передать на сервер мониторинга. Я для примера возьму самые простые скрипты. Первый будет с помощью ping проверять доступность узла, а второй с помощью curl доступность сайта. У вас могут быть более сложные скрипты, например проверка файловых систем, точек монтирования, баз данных, или ещё чего-нибудь, что вы хотите мониторить.
Первый скрипт будет проверять доступность узла с помощью ping.
# nano /etc/zabbix/ping-check.sh
#!/bin/bash
if [ -z "$1" ]; then
echo "Missing ip"
exit
fi
ping -c 3 $1 &> /dev/null
if [ $? -eq 0 ]; then
echo "up"
else
echo "down"
fi
Второй скрипт будет проверять доступность узла с помощью curl, по протоколу http.
# nano /etc/zabbix/http-check.sh
#!/bin/bash
if [ -z "$1" ]; then
echo "Missing url"
exit
fi
curl -Is --connect-timeout 1 $1 &> /dev/null
if [ $? -eq 0 ]; then
echo "up"
else
echo "down"
fi
Сменим владельца скриптов на пользователя Zabbix, и дадим скриптам право выполняться только от этого владельца:
# chown zabbix:zabbix /etc/zabbix/ping-check.sh
# chown zabbix:zabbix /etc/zabbix/http-check.sh
# chmod u+x /etc/zabbix/ping-check.sh
# chmod u+x /etc/zabbix/http-check.sh
А вот пример работы этих скриптов:
# /etc/zabbix/ping-check.sh sysadminium.ru
up
# /etc/zabbix/http-check.sh sysadminium.ru
up
Создание пользовательских параметров
Теперь создадим пользовательские параметры Zabbix. Делаются они в конфиге zabbix-агента на том узле, на котором они будут выполняться. Я буду выполнять эти проверки на самом Zabbix сервере, но их можно выполнять с любого другого узла, на котором установлен агент.
# nano /etc/zabbix/zabbix_agentd.conf
UserParameter=up.http[*],/etc/zabbix/http-check.sh "$1"
UserParameter=up.ping[*],/etc/zabbix/ping-check.sh "$1"
- Звездочка в квадратных скобках означает возможность передавать дополнительные опции этим параметрам.
Добавление элементов данных
Пришло время подключить подготовленные элементы данных к наблюдаемому узлу. Первый элемент это проверка с помощью curl.

Второй элемент — это проверка с помощью ping.

- Имя — придумайте сами.
- Тип — Zabbix агент.
- Ключ — up.ping[ip_или_имя]
- Тип информации — текст.
Добавление триггеров

- Имя — будет взято из элемента данных.
- Имя события — придумаете сами.
- Выражение —
count(/Zabbix server/up.http[https://<сайт>],5m,,"down")>3.
В моём случае, если в течении 5 минут (это 10 проверок), мы 3 раза получили «down», то сработает триггер.

- Имя — будет взято из элемента данных.
- Имя события — придумаете сами.
- Выражение —
last(/Zabbix server/up.ping[<ip>])<>"up".
То есть, если последнее значение не «up», сразу сработает триггер.
Про пользовательские параметры можете почитать в официальной документации .
Если понравилась статья, подпишись на мой канал в VK или Telegram .