Zabbix


Установка с использованием docker compose

Установка сервера

Клонируем репозиторий Zabbix

git clone https://github.com/zabbix/zabbix-docker.git

При необходимости переключаемся на нужную версию

git checkout 7.0

Запускаем нужный файл, например Alpine+Mysql:

docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up

Структура названий файлов: docker-compose_v3_<distr>_<db>_<тип сборки>

distr:

alpine Alpine Linux
ol Oracle Linux
ubuntu Ubuntu Linux

db:

mysql MySQL
pgsql PostgreSQL

тип сборки:

latest Предсобранные образы
local Локально собираемые образы

По-умолчанию логин Admin, пароль zabbix

Для версии 7.0 на момент августа 2024 г. для использования оповещений с использованием curl (например, Telegram) необходимо в файл env_vars/.env_srv добавить строку. 

ZBX_SOURCEIP=0.0.0.0

Планируется исправить в следующих релизах. Проблема в том, что для работы последней версии curl требуется данный параметр.

Сборка и запуск в фоновом режиме:

docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

Источники:

Официальная документация

Установка агента

Для Linux:

sudo apt-get install zabbix-agent

Изменяем настройки в файле /etc/zabbix/zabbix_agentd.conf

Hostname= Имя хоста, 
Server=
ServerActive=
AllowKey=system.run[*]

Источник клиент (Zabbix trapper)

Обновление данных по инициативе клиента

Создать элемент данных Zabbix trapper

item_for_input_data.jpg

документация

 При помощи утилиты zabbix_sender:

zabbix_sender -z <server IP address> -p 10051 -s "New host" -k trap -o "test value"
-s имя хоста, существующего в hosts на сервере zabbix и к которому привязан элемент данных, в кавычках
-k ключ, без кавычек
-o значение, в кавычках если тип данных строка и без кавычек если число

При помощи python:

Документация

pip install zabbix_utils

Добавляем этот код в нужный скрипт и начинаем получать информацию о времени выполнения скрипта. Отличие от параметров утилиты - ключ нужно указывать в кавычках.

from zabbix_utils import Sender
import time
import datetime

sender = Sender(server='192.168.1.198', port=10051)
# Parameters: (host, key, value, clock)
d = datetime.datetime.now()
unix_time = int(time.mktime(d.timetuple()))
resp = sender.send_value('moodle', 'lastupdate', 0, unix_time)
if resp.failed == 0:
    # Print a success message along with the response time
    print(f"Value sent successfully in {resp.time}")
else:
    # Print a failure message
    print("Failed to send value")
    print(resp.details)

Добавляем триггер, в условиях для анализа последних данных функция nodata

item_for_input_data2.jpg

Вид условия, срабатывающего при отсутствии данных более 20 минут. Поддерживаются окончания s, m, h, d, w, m

item_for_input_data3.jpg

Общий вид триггера:

В поле Event name можно указать текст, который будет выводиться в dashbord при оповещении. Этот текст будет отображаться при следующем срабатывании триггера, если триггер сейчас активен, то текст не изменится.

item_for_input_data4.jpg

Также для связанных триггеров (например 1минута-3минуты-5минут) нужно зайти в Зависимости и указать следующий по уровню триггер, т е для указанного примера нужно в триггере 1минута указать зависимость от 3минуты, в триггере 3минуты - зависимость 5минут.

Пример для триггера 1минута.

item_for_input_data6.jpg

Добавляем отображение на дашборде

item_for_input_data5.jpg

Графики

Ссылка на скриншоты графиков 

http://192.168.1.198/chart2.php?graphid=2845&from=now-3h&to=now

Источник сервер (Zabbix agent + script)

В этом случае создается источник данных Zabbix agent и устанавливается ключ system.run[размещение скрипта на клиенте].

data_agent_1.JPG

Можно установить предобработку данных перед итоговым занесением в БД

data_agent_2.JPG

Дальше - стандартно триггеры, ...


Панели

Отображение в виджете при больших периодах получения данных

При отображении часто используются данные "Последнее значение". Однако, оно по умолчанию использует максимальный период в 24 часа. Соответственно, если последние данные пришли позже этого периода, то считается, что последних данных нет. Поэтому отображаемые элементы будут глючить при большем периоде  Для увеличения периода нужно перейти в Администрирование->Общие->Веб-интерфейс и изменить параметр "Максимальный период отображения истории"

zbx_gui_time.jpg

Этот период также можно изменить через функцию агрегации для каждого виджета. Там появляется элемент "период...".