1. Подготовка ВМ с ПО Корпоративный сервер 2024
1.1. Создайте пользователя для мониторинга веб модулей ПО Корпоративный сервер 2024
- Создайте пользователя через Р7-Управление, доступен по адресу
https://admin.ваш_домен; - В примере используется пользователь
"r7_zabbix":

1.2. Импорт шаблона в систему мониторинга Zabbix
Шаблон был создан в ПО Zabbix версии 7.0.0 с использованием агента Zabbix Agent 2 версии 7.0.0.
Мы не гарантируем корректную работу шаблона при использовании с версиями ПО Zabbix ниже рекомендованных.
Необходимо скачать и распаковать архив:
Ссылка для загрузки архива с шаблонами Zabbix ↗
Архив содержит следующие шаблоны:
- CS 2024 single;
- CS 2024 middle;
- Gluster Storage;
- Postgresql_Zabbix;
- Rabbitmq_cluster_Zabbix.
- Перейдите в «Сбор данных» ➔ «Шаблоны»:

- Далее перейдите в «Импорт»:

- Выберите файл и нажмите кнопку «Импорт»:

- В открывшемся окне нажмите «Импорт»:

- Будет добавлен шаблон с именем
"CS 2024".
2. Описание переменных в шаблоне CS 2024 single
2.1. Ввод значений переменных в макросы шаблона
| Макрос | Значение | Описание |
|---|---|---|
{$CALENDAR} | calendar | Префикс для модуля calendar |
{$CDADMIN} | admin | Префикс для модуля admin |
{$CDDISK} | cddisk | Префикс для модуля cddisk |
{$CDMAIL} | cdmail | Префикс для модуля cdmail |
{$CONTACTS} | contacts | Префикс для модуля contacts |
{$DOMAIN} | local.ru | Имя домена |
{$DRAW} | draw | Префикс для модуля векторного редактора |
{$DS} | ds | Префикс для сервера документов |
{$PROJECTS} | projects | Префикс для модуля projects |
{$R7_PASSWORD} | password | Пароль пользователя Корпоративный сервер 2024 (шаг 1.1) |
{$R7_USERNAME} | username | Имя пользователя Корпоративный сервер 2024 (шаг 1.1) |
{$SHEMA} | http | Используемый протокол http или https |
2.2. Описание элементов данных
| Имя | Ключ | Описание |
|---|---|---|
| Статус сервиса nginx_80 | net.tcp.service[http,,80] | Проверка статуса службы с использованием TCP-соединения. Важно При использовании службы TCP указание порта является обязательным. Возвращаемое значение:
|
| Статус сервиса nginx_443 | net.tcp.service[https,,443] | |
| Статус сервиса RabbitMQ-server | net.tcp.service[tcp,,5672] | |
| Статус сервиса redis | net.tcp.service[tcp,,6379] | |
| Статус сервиса cddisk:api | net.tcp.service[tcp,,38033] | |
| Статус сервиса cddisk:apisso | net.tcp.service[tcp,,38034] | |
| Статус сервиса cddisk:filestorage_http | net.tcp.service[http,,11580] | |
| Статус сервиса cddisk:filestorage_tcp | net.tcp.service[tcp,,11581] | |
| Статус сервиса cddisk:processing | proc.num[dotnet,,,Processing] | Проверка количества процессов. Возвращаемое значение:
|
| Статус сервиса cddisk:registry | net.tcp.service[tcp,,7777] | Проверка статуса службы с использованием TCP-соединения. Важно При использовании службы TCP указание порта является обязательным. Возвращаемое значение:
|
| Статус сервиса cddisk:searchapi | net.tcp.service[tcp,,2664] | |
| Статус сервиса ds:converter | proc.num[converter] | Проверка количества процессов. Возвращаемое значение:
|
| Статус сервиса ds:docservice | net.tcp.service[tcp,,8000] | Проверка статуса службы с использованием TCP-соединения. Важно При использовании службы TCP указание порта является обязательным. Возвращаемое значение:
|
| Статус сервиса ds:metrics | net.tcp.service[tcp,,8126] | |
| Статус сервиса PostgreSQL | net.tcp.service[tcp,,5432] |
2.3. Описание веб-сценариев
| Имя | Шаги | Описание |
|---|---|---|
| Доступность Р7-Календарь | Авторизация Р7-Управление: URL:
Доступность Р7-Календарь: URL:
| Проверка статуса модулей.
Требуемые коды состояния:
|
| Доступность Р7-Управление | Авторизация Р7-Управление: URL:
Доступность Р7-Управление: URL:
| |
| Доступность Р7 Корпоративный сервер 2024 | Авторизация Р7-Управление: URL:
Доступность Р7-Управление: URL:
| |
| Доступность Р7-Почта | Авторизация Р7-Управление: URL:
Доступность Р7-Почта: URL:
| |
| Доступность Р7-Проекты | Авторизация Р7-Управление: URL:
Доступность Р7-Проекты: URL:
| |
| Доступность Р7-Контакты | Авторизация Р7-Управление: URL:
Доступность Р7-Контакты: URL:
| |
| Доступность Сервер документов | Доступность Сервер документов: URL:
| |
| Доступность Р7-Графика | Авторизация Р7-Управление: URL:
Доступность Р7-Графика: URL:
|
2.4. Описание триггеров
| Имя | Выражение проблемы | Выражение восстановления | Описание |
|---|---|---|---|
| nginx_80 не запущен | last(/CS 2024/net.tcp.service[http,,80])=0 or nodata(/CS 2024/net.tcp.service[http,,80],150s)=1 | last(/CS 2024/net.tcp.service[http,,80])=1 | Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| nginx_443 не запущен | last(/CS 2024/net.tcp.service[https,,443])=0 or nodata(/CS 2024/net.tcp.service[https,,443],150s)=1 | last(/CS 2024/net.tcp.service[https,,443])=1 | Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| PostgreSQL не запущен | last(/CS 2024/net.tcp.service[tcp,,5432])=0 or nodata(/CS 2024/net.tcp.service[tcp,,5432],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,5432])=1 | Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| RabbitMQ-server не запущен | last(/CS 2024/net.tcp.service[tcp,,5672])=0 or nodata(/CS 2024/net.tcp.service[tcp,,5672],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,5672])=1 | Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| redis не запущен | last(/CS 2024/net.tcp.service[tcp,,6379])=0 or nodata(/CS 2024/net.tcp.service[tcp,,6379],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,6379])=1 | Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| Доступность Р7-Календарь | last(/CS 2024/web.test.fail[Доступность Р7-Календарь])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Календарь],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Управление | last(/CS 2024/web.test.fail[Доступность Р7-Управление])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Управление],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Диск | last(/CS 2024/web.test.fail[Доступность Р7-Диск])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Диск],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Почта | last(/CS 2024/web.test.fail[Доступность Р7-Почта])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Почта],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Проекты | last(/CS 2024/web.test.fail[Доступность Р7-Проекты])=1 or | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Контакты | last(/CS 2024/web.test.fail[Доступность Р7-Контакты])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Контакты],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Сервер документов | last(/CS 2024/web.test.fail[Доступность Сервер документов])=1 or nodata(/CS 2024/web.test.error[Доступность Сервер документов],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Графика | last(/CS 2024/web.test.fail[Доступность Р7-Графика])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Графика],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Сервер документов converter не запущен | last(/CS 2024/proc.num[converter])<2 or nodata(/CS 2024/proc.num[converter],150s)=1 | last(/CS 2024/proc.num[converter])>=3 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| Сервер документов ds_docservice не запущен | last(/CS 2024/net.tcp.service[tcp,,8000])=0 or nodata(/CS 2024/net.tcp.service[tcp,,8000],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,8000])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| Сервер документов ds_metrics не запущен | last(/CS 2024/net.tcp.service[tcp,,8126])=0 or nodata(/CS 2024/net.tcp.service[tcp,,8126],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,8126])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| процесс cddisk:apisso не запущен | last(/CS 2024/net.tcp.service[tcp,,38034])=0 or nodata(/CS 2024/net.tcp.service[tcp,,38034],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,38034])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| процесс cddisk:api не запущен | last(/CS 2024/net.tcp.service[tcp,,38033])=0 or nodata(/CS 2024/net.tcp.service[tcp,,38033],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,38033])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| процесс cddisk:filestorage_http не запущен | last(/CS 2024/net.tcp.service[http,,11580])=0 or nodata(/CS 2024/net.tcp.service[http,,11580],150s)=1 | last(/CS 2024/net.tcp.service[http,,11580])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| процесс cddisk:filestorage_tcp не запущен | last(/CS 2024/net.tcp.service[tcp,,11581])=0 or nodata(/CS 2024/net.tcp.service[tcp,,11581],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,11581])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| процесс cddisk:processing не запущен | last(/CS 2024/proc.num[dotnet,,,Processing])=0 or nodata(/CS 2024/proc.num[dotnet,,,Processing],150s)=1 | last(/CS 2024/proc.num[dotnet,,,Processing])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| процесс cddisk:registry не запущен | last(/CS 2024/net.tcp.service[tcp,,7777])=0 or nodata(/CS 2024/net.tcp.service[tcp,,7777],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,7777])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
| процесс cddisk:searchapi не запущен | last(/CS 2024/net.tcp.service[tcp,,2664])=0 or nodata(/CS 2024/net.tcp.service[tcp,,2664],150s)=1 | last(/CS 2024/net.tcp.service[tcp,,2664])=1 | Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:
Используется двойное условие, помимо доступности порта, проверяется наличие поступающих данных элемента. |
3. Описание шаблона R7 — CS 2024 middle
3.1. Структура
| Имя | Описание |
|---|---|
| R7 — CS — API Linux | Ноды сервиса api |
| R7 — CS — Filestorage Linux | Ноды сервиса Filestorage |
| R7 — CS — Processing Linux | Ноды сервиса Backend Processing |
| R7 — CS — Registry Linux | Ноды сервиса Registry |
| R7 — CS — Search Linux | Ноды сервиса Search |
| R7 — CS — SSO Linux | Ноды сервиса SSO |
| R7 — CS — Webscenario | Проверка веб-доступности |
Для корректной работы шаблона R7 — CS — Webscenario необходимо заполнить данные в макросах:
3.2. Описание элементов данных
| Имя | Ключ | Описание |
|---|---|---|
| R7-CS: Process info raw | proc.get[dotnet,,R7.Storage.Server.Api.Host.dll,process] | Получает информацию о процессе dotnet |
| R7-CS: number of context switches | ctx_switches | Показывает, как часто планировщик ОС переключает процессор между потоками процесса. Высокое значение может указывать на интенсивную многозадачность или конкуренцию за ресурсы. |
| R7-CS: number of page faults | page_faults | Отражает, сколько раз процесс обращался к памяти, отсутствующей в его рабочем наборе. Рост может свидетельствовать о нехватке физической памяти или неэффективном использовании кэша. |
| R7-CS: number of threads | threads | Позволяет отслеживать утечки потоков или аномальное увеличение параллелизма. |
| R7-CS: percentage of real memory | pmem | Процент от общего объема физической памяти, занимаемой процессом. Оценка нагрузки на ОЗУ |
| R7-CS: process state | state | Состояние процесса |
| R7-CS: size of data segment from process | data | Размер сегмента данных процесса (data segment). Отражает объем памяти, выделенной под данные приложения |
| R7-CS: size of process | size | Общий размер процесса. Характеризует общий объем памяти, занимаемый исполняемым образом. |
| R7-CS: size of swap space used | swap | Объем использованного swap-пространства (подкачки) для данного процесса. |
| R7-CS: total CPU seconds (system) | cputime_system | Общее время использования CPU в режиме ядра (system time) для процесса (в секундах). Показывает нагрузку на системные вызовы. |
| R7-CS: total CPU seconds (user) | cputime_user | Общее время использования CPU в пользовательском режиме (user time) для процесса. |
| R7-CS: virtual memory size | vsize | Общий объем виртуальной памяти, выделенной процессу. |
| R7-CS: Статус HTTP-сервиса API | net.tcp.service[http,,38033] | Выполняет проверку доступности TCP-порта 38033, на котором работает HTTP-сервис API. |
| R7-CS: Статус HTTP-сервиса Filestorage | net.tcp.service[http,,11580] | Проверяет доступность HTTP-сервиса Filestorage по порту 11580 |
| R7-CS: Статус TCP-сервиса Filestorage | net.tcp.service[tcp,,11581] | Проверяет доступность TCP-сервиса Filestorage по порту 11581 |
| R7-CS: Статус HTTP-сервиса Registry | net.tcp.service[http,,7777] | Проверяет доступность HTTP-сервиса Registry по порту 7777 |
| R7-CS: Статус HTTP-сервиса Search | net.tcp.service[http,,2664] | Проверяет доступность HTTP-сервиса поиска (Search) по порту 2664 |
| R7-CS: Статус HTTP-сервиса SSO | net.tcp.service[http,,38034] | Проверяет доступность сервиса SSO по порту 38034 |
3.3. Описание веб-сценариев
| Имя | Шаги | Описание |
|---|---|---|
| Доступность Р7-Календарь | Авторизация Р7-Управление: URL:
Доступность Р7-Календарь: URL:
| Проверка статуса модулей.
|
| Доступность Р7-Управление | Авторизация Р7-Управление: URL:
Доступность Р7-Управление: URL:
| |
| Доступность Р7 Корпоративный сервер 2024 | Авторизация Р7-Управление: URL:
Доступность Р7-Управление: URL:
| |
| Доступность Р7-Почта | Авторизация Р7-Управление: URL:
Доступность Р7-Почта: URL:
| |
| Доступность Р7-Проекты | Авторизация Р7-Управление: URL:
Доступность Р7-Почта: URL:
| |
| Доступность Р7-Контакты | Авторизация Р7-Управление: URL:
Доступность Р7-Контакты: URL:
| |
| Доступность Сервер документов | Доступность Сервер документов: URL:
| |
| Доступность Р7-Графика | Авторизация Р7-Управление: URL:
Доступность Р7-Графика: URL:
|
3.4. Описание триггеров
| Имя | Выражение проблемы | Выражение восстановления | Описание |
|---|---|---|---|
| Доступность Р7-Календарь | last(/CS 2024/web.test.fail[Доступность Р7-Календарь])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Календарь],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Управление | last(/CS 2024/web.test.fail[Доступность Р7-Управление])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Управление],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Диск | last(/CS 2024/web.test.fail[Доступность Р7-Диск])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Диск],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Почта | last(/CS 2024/web.test.fail[Доступность Р7-Почта])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Почта],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Проекты | last(/CS 2024/web.test.fail[Доступность Р7-Проекты])=1 or | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Контакты | last(/CS 2024/web.test.fail[Доступность Р7-Контакты])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Контакты],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Сервер документов | last(/CS 2024/web.test.fail[Доступность Сервер документов])=1 or nodata(/CS 2024/web.test.error[Доступность Сервер документов],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Доступность Р7-Графика | last(/CS 2024/web.test.fail[Доступность Р7-Графика])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Графика],150s)=0 | Триггер уведомляет о статусе модуля при превышении значений в элементе данных:
| |
| Недоступен порт http-службы API | max(/R7 — CS 2024 middle/net.tcp.service[http,,38033], #3)=0 | count(/R7 — CS 2024 middle/net.tcp.service[http,,38033],#3, "eq", "1")>=3 | Сигнализирует о недоступности HTTP-интерфейса |
| Недоступен порт http-службы Filestorage | last(/R7 — CS 2024 middle/net.tcp.service[http,,11580])=0 | last(/R7 — CS 2024 middle/net.tcp.service[http,,11580])=1 | Контроль доступности HTTP-сервиса Filestorage |
| Недоступен порт http-службы Registry | last(/R7 — CS 2024 middle/net.tcp.service[http,,7777])=0 | last(/R7 — CS 2024 middle/net.tcp.service[http,,7777])=1 | Мониторинг доступности сервиса Registry |
| Недоступен порт http-службы Search | last(/R7 — CS 2024 middle/net.tcp.service[http,,2664])=0 | last(/R7 — CS 2024 middle/net.tcp.service[http,,2664])=1 | Контроль работоспособности службы Search |
| Недоступен порт http-службы SSO | last(/R7 — CS 2024 middle/net.tcp.service[http,,38034])=0 | last(/R7 — CS 2024 middle/net.tcp.service[http,,38034])=1 | Мониторинг доступности сервиса SSO |
| Недоступен порт tcp-службы Filestorage | last(/R7 — CS 2024 middle/net.tcp.service[tcp,,11581])=0 | last(/R7 — CS 2024 middle/net.tcp.service[tcp,,11581])=1 | Проверка доступности TCP-порта 11581 сервиса Filestorage |
4. Описание переменных в шаблоне Gluster Storage
4.1. Описание элементов данных
| Имя | Ключ | Описание |
|---|---|---|
| Gluster Storage Volume Number | gluster_storage_info["volume_count"] | Возвращает общее количество томов, созданных в кластере |
| Gluster Storage Nodes | gluster_storage_info["node_count"] | Возвращает общее количество узлов (серверов), входящих в кластер |
| Gluster Storage Active Nodes | gluster_storage_info["nodes_active"] | Возвращает количество узлов, которые в данный момент считаются активными |
4.2. Описание триггеров
| Имя | Выражение проблемы | Описание |
|---|---|---|
| Gluster storage nodes is not online | last(/Gluster Storage Template/gluster_storage_info["nodes_active"]) < last(/Gluster Storage Template/gluster_storage_info["node_count"]) | Обнаружение ситуации, когда не все узлы кластера находятся в рабочем состоянии (активны и доступны) |
4.3. Правила обнаружения
- Для работы автоматических правил обнаружения необходимо:
- Распаковать архив с шаблоном на отслеживаемом сервере с Zabbix агентом;
- Скрипт
gstatus_discovery.pyперенести в/etc/zabbix/ - Файл с конфигом
glusterfs.confперенести в/etc/zabbix/zabbix_agent2.conf.d/ - Добавить права доступа для скрипта:
visudo zabbix ALL=(ALL) NOPASSWD: /etc/zabbix/gstatus_discovery.py
- Проверить работу скрипта:
sudo -H -u zabbix bash -c 'python3 /etc/zabbix/gstatus_discovery.py'
- Импорт шаблона Gluster Storage в Zabbix (см. п. 1.2).
4.4. Описание прототипов элементов данных
| Имя | Ключ | Описание |
|---|---|---|
| GlusterFS Утилизация пула {#VOLUME_NAME} | gluster_volume_uses_space[{#VOLUME_NAME}] | Показывает процент использованного пространства в указанном томе |
| Gluster Volume % Free Space {#VOLUME_NAME} | gluster_volume_free_space[{#VOLUME_NAME}] | Возвращает процент свободного места в томе |
| Gluster Volume nr_entries {#VOLUME_NAME} | gluster_volume_info["nr_entries",{#VOLUME_NAME}] | Показывает общее количество файлов и директорий (записей) в томе. |
| Gluster Volume snapshot_count on {#VOLUME_NAME} | gluster_volume_info["snapshot_count",{#VOLUME_NAME}] | Возвращает количество созданных снапшотов (моментальных копий) для данного тома. |
| Gluster Volume state on {#VOLUME_NAME} | gluster_volume_info["health",{#VOLUME_NAME}] | Показывает состояние работоспособности тома |
| Gluster Volume Total Size on {#VOLUME_NAME} | gluster_volume_info["size_total",{#VOLUME_NAME}] | Общий (максимальный) размер тома |
| Gluster Volume Used Size on {#VOLUME_NAME} | gluster_volume_info["size_used",{#VOLUME_NAME}] | Фактически занятое пространство в томе |
4.5. Описание прототипов триггеров
| Имя | Выражение проблемы | Описание |
|---|---|---|
| Gluster nr_entries is above 0 | last(/Gluster Storage Template/gluster_volume_info["nr_entries",{#VOLUME_NAME}])<>0 | Сигнализирует о том, что в томе присутствуют файлы или директории |
| Gluster Volume Free Space is less than {$GLUSTERFS.SPACE.MIN.WARN} | last(/Gluster Storage Template/gluster_volume_free_space[{#VOLUME_NAME}],#1:now-5m)<{$GLUSTERFS.SPACE.MIN.WARN} | Сигнализирует о том, что в томе заканчивается свободное место. |
| Gluster Volume state in {#VOLUME_NAME} is down | find(/Gluster Storage Template/gluster_volume_info["health",{#VOLUME_NAME}],#5,"like","up")=0 | Обнаруживает, что том GlusterFS перешёл в нерабочее состояние и недоступен для операций чтения/записи. |
5. Шаблон PostgreSQL_Zabbix
5.1. Установка и настройка
1. Подключите официальный репозиторий Zabbix и установите пакет с плагином:
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian13_all.deb dpkg -i zabbix-release_latest_7.0+debian13_all.deb apt update apt install zabbix-agent2-plugin-postgresql
2. После установки пакета необходимо указать для Zabbix Agent 2 путь к исполняемому файлу плагина. Найдите файл конфигурации плагина. Обычно он находится по пути:
/etc/zabbix/zabbix_agent2.d/plugins.d/postgresql.conf
3. Добавьте в этот файл следующую строку, указав правильный путь до исполняемого файла плагина:
В большинстве дистрибутивов после установки пакета путь уже прописан по умолчанию.
Plugins.PostgreSQL.System.Path=/usr/lib/zabbix-agent2/plugins/postgresql
Точный путь может отличаться в зависимости от дистрибутива. Проверьте, где находится файл postgresql. Например, с помощью команды:
find / -name postgresql 2>/dev/null
4. Убедитесь, что этот конфигурационный файл подключён в основном файле zabbix_agent2.conf через директиву Include:
Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf
5. Перезапустите Zabbix-agent командой:
systemctl restart zabbix-agent2
6. Проверьте лог-файл агента:
/var/log/zabbix/zabbix_agent2.log
Для того, чтобы убедиться, что плагин загрузился без ошибок.
В логе должно быть сообщение о загрузке плагина PostgreSQL.
7. Создайте пользователя PostgreSQL для мониторинга и унаследуйте от него права доступа, предоставленные ролью по умолчанию pg_monitor:
CREATE USER zbx_monitor WITH PASSWORD '<PASSWORD>' INHERIT GRANT pg_monitor TO zbx_monitor
8. Отредактируйте pg_hba.conf конфигурационный файл, чтобы разрешить подключения для пользователя zbx_monitor.
Например, вы можете добавить одну из следующих строк, чтобы разрешить локальные TCP-подключения с того же хоста:

9. Импортируйте шаблон PostgreSQL в Zabbix (см. п. 1.2).
5.2. Описание макросов
| Имя | Описание | Значение по умолчанию |
|---|---|---|
{$PG.CONNSTRING.AGENT2} | URI или именованная сессия экземпляра PostgreSQL. | tcp://localhost:5432 |
{$PG.USER} | Имя пользователя PostgreSQL. | zbx_monitor |
{$PG.PASSWORD} | Пароль пользователя PostgreSQL. | |
{$PG.DATABASE} | База данных PostgreSQL по умолчанию используется для подключения. | postgres |
{$PG.LLD.FILTER.DBNAME} | Фильтр доступных для поиска баз данных. | .+ |
{$PG.LLD.FILTER.APPLICATION} | Фильтр доступных для поиска приложений. | .+ |
{$PG.DEADLOCKS.MAX.WARN} | Максимальное количество обнаруженных взаимоблокировок для выражения триггера. | 0 |
{$PG.CONN_TOTAL_PCT.MAX.WARN} | Максимальный процент текущих соединений для выражения триггера. | 90 |
{$PG.CONFLICTS.MAX.WARN} | Максимальное количество конфликтов восстановления для выражения триггера. | 0 |
{$PG.QUERY_ETIME.MAX.WARN} | Ограничение по времени выполнения для подсчета медленных запросов. | 30 |
{$PG.SLOW_QUERIES.MAX.WARN} | Для срабатывания триггера учитывается пороговое значение количества медленных запросов. | 5 |
5.3. Описание элементов данных
| Имя | Ключ | Описание |
|---|---|---|
| Get bgwriter | pgsql.bgwriter["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Получение полной статистики фонового писателя (bgwriter) PostgreSQL (используется как мастер-элемент для зависимых метрик) |
| Get archive | pgsql.archive["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Получение статистики архивации WAL-файлов (мастер-элемент) |
| Get dbstat | pgsql.dbstat["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Получение статистики по базам данных (мастер-элемент) |
| Get dbstat sum | pgsql.dbstat.sum["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Получение суммарной статистики по всем базам данных (мастер-элемент) |
| Get connections sum | pgsql.connections["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Получение информации о подключениях (мастер-элемент) |
| Get WAL | pgsql.wal.stat["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Получение статистики WAL (мастер-элемент) |
| Get locks | pgsql.locks["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Получение информации о блокировках (locks) (мастер-элемент) |
| Custom queries | pgsql.custom.query["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}",""] | Выполнение пользовательского SQL-запроса (через Custom Query) |
| Get replication | pgsql.replication.process["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Получение информации о процессах репликации (мастер-элемент) |
| Get queries | pgsql.queries["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}","{$PG.QUERY_ETIME.MAX.WARN}"] | Получение информации о медленных запросах (дольше заданного порога) |
| Version | pgsql.version["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Версия PostgreSQL |
| WAL: Bytes written | pgsql.wal.write | Количество байт, записанных в WAL (с момента последнего сброса) |
| WAL: Bytes received | pgsql.wal.receive | Количество байт, полученных при репликации (приём WAL) |
| WAL: Segments count | pgsql.wal.count | Количество WAL-сегментов в директории pg_wal |
| Bgwriter: Buffers allocated per second | pgsql.bgwriter.buffers_alloc.rate | Количество буферов, выделенных фоновым писателем (bgwriter) за секунду |
| Bgwriter: Buffers written directly by a backend per second | pgsql.bgwriter.buffers_backend.rate | Количество буферов, записанных напрямую серверным процессом (backend) за секунду |
| Bgwriter: Number of bgwriter cleaning scan stopped per second | pgsql.bgwriter.maxwritten_clean.rate | Количество раз, когда очистка bgwriter останавливалась из-за превышения лимита записей за секунду |
| Bgwriter: Times a backend executed its own fsync per second | pgsql.bgwriter.buffers_backend_fsync.rate | Количество раз, когда backend выполнял собственный fsync за секунду |
| Checkpoint: Buffers written by the background writer per second | pgsql.bgwriter.buffers_clean.rate | Количество буферов, очищенных фоновым писателем (bgwriter) за секунду |
| Checkpoint: Buffers written during checkpoints per second | pgsql.bgwriter.buffers_checkpoint.rate | Количество буферов, записанных во время контрольных точек (checkpoints) за секунду |
| Checkpoint: Scheduled per second | pgsql.bgwriter.checkpoints_timed.rate | Количество плановых контрольных точек (по таймеру) за секунду |
| Checkpoint: Requested per second | pgsql.bgwriter.checkpoints_req.rate | Количество запрошенных контрольных точек (по требованию) за секунду |
| Checkpoint: Checkpoint write time per second | pgsql.bgwriter.checkpoint_write_time.rate | Время записи контрольных точек (в миллисекундах) за секунду |
| Checkpoint: Checkpoint sync time per second | pgsql.bgwriter.checkpoint_sync_time.rate | Время синхронизации контрольных точек (в миллисекундах) за секунду |
| Archive: Count of archived files | pgsql.archive.count_archived_files | Количество успешно заархивированных WAL-файлов |
| Archive: Count of failed attempts to archive files | pgsql.archive.failed_trying_to_archive | Количество неудачных попыток архивации WAL-файлов |
| Archive: Count of files in archive_status need to archive | pgsql.archive.count_files_to_archive | Количество WAL-файлов, ожидающих архивации (в статусе ready) |
| Archive: Size of files need to archive | pgsql.archive.size_files_to_archive | Общий размер WAL-файлов, ожидающих архивации |
| Dbstat: Blocks read time | pgsql.dbstat.sum.blk_read_time | Время чтения блоков (суммарно по всем БД) |
| Dbstat: Blocks write time | pgsql.dbstat.sum.blk_write_time | Время записи блоков (суммарно по всем БД) |
| Dbstat: Checksum failures per second | pgsql.dbstat.sum.checksum_failures.rate | Количество сбоев контрольных сумм (checksum failures) за секунду |
| Dbstat: Committed transactions per second | pgsql.dbstat.sum.xact_commit.rate | Количество зафиксированных транзакций за секунду |
| Dbstat: Conflicts per second | pgsql.dbstat.sum.conflicts.rate | Количество конфликтов (например, при репликации) за секунду |
| Dbstat: Deadlocks per second | pgsql.dbstat.sum.deadlocks.rate | Количество взаимоблокировок (deadlocks) за секунду |
| Dbstat: Disk blocks read per second | pgsql.dbstat.sum.blks_read.rate | Количество дисковых блоков, прочитанных за секунду |
| Dbstat: Hit blocks read per second | pgsql.dbstat.sum.blks_hit.rate | Количество блоков, прочитанных из кэша (hit) за секунду |
| Dbstat: Number temp bytes per second | pgsql.dbstat.sum.temp_bytes.rate | Объём временных файлов (в байтах) за секунду |
| Dbstat: Number temp files per second | pgsql.dbstat.sum.temp_files.rate | Количество временных файлов за секунду |
| Dbstat: Roll backed transactions per second | pgsql.dbstat.sum.xact_rollback.rate | Количество откатов транзакций за секунду |
| Dbstat: Rows deleted per second | pgsql.dbstat.sum.tup_deleted.rate | Количество удалённых строк за секунду |
| Dbstat: Rows fetched per second | pgsql.dbstat.sum.tup_fetched.rate | Количество полученных строк (fetch) за секунду |
| Dbstat: Rows inserted per second | pgsql.dbstat.sum.tup_inserted.rate | Количество вставленных строк за секунду |
| Dbstat: Rows returned per second | pgsql.dbstat.sum.tup_returned.rate | Количество возвращённых строк (return) за секунду |
| Dbstat: Rows updated per second | pgsql.dbstat.sum.tup_updated.rate | Количество обновлённых строк за секунду |
| Dbstat: Backends connected | pgsql.dbstat.sum.numbackends | Количество активных подключений (backend-процессов) в данный момент |
| Connections sum: Active | pgsql.connections.sum.active | Количество активных подключений (выполняют запрос) |
| Connections sum: Fastpath function call | pgsql.connections.sum.fastpath_function_call | Количество подключений, выполняющих fastpath-функции |
| Connections sum: Idle | pgsql.connections.sum.idle | Количество простаивающих подключений (idle) |
| Connections sum: Idle in transaction | pgsql.connections.sum.idle_in_transaction | Количество подключений в режиме ожидания транзакции (idle in transaction) |
| Connections sum: Prepared | pgsql.connections.sum.prepared | Количество подготовленных транзакций (prepared) |
| Connections sum: Total | pgsql.connections.sum.total | Общее количество подключений |
| Connections sum: Total, % | pgsql.connections.sum.total_pct | Процент от максимального числа подключений (total_pct) |
| Connections sum: Waiting | pgsql.connections.sum.waiting | Количество подключений, ожидающих блокировку (waiting) |
| Connections sum: Idle in transaction (aborted) | pgsql.connections.sum.idle_in_transaction_aborted | Количество подключений в прерванной транзакции (idle in transaction aborted) |
| Connections sum: Disabled | pgsql.connections.sum.disabled | Количество отключённых (disabled) подключений |
| Age of oldest xid | pgsql.oldest.xid["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Возраст (в транзакциях) самого старого XID (идентификатора транзакции) |
| Count of autovacuum workers | pgsql.autovacuum.count["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Количество работающих процессов автовакуума |
| Cache hit ratio, % | pgsql.cache.hit | Процент попаданий в кэш буферов (cache hit ratio) |
| Uptime | pgsql.uptime["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Время работы экземпляра PostgreSQL (uptime) в секундах |
| Replication: Lag in bytes | pgsql.replication.lag.b["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Задержка репликации в байтах (Lag in bytes) |
| Replication: Lag in seconds | pgsql.replication.lag.sec["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Задержка репликации в секундах |
| Replication: Recovery role | pgsql.replication.recovery_role["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Роль сервера репликации (primary / standby) |
| Replication: Standby count | pgsql.replication.count["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Количество подчинённых (standby) серверов |
| Replication: Status | pgsql.replication.status["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Состояние репликации (работает/не работает) |
| Ping | pgsql.ping["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"] | Проверка доступности PostgreSQL (Ping) – возвращает 1, если подключение успешно, иначе 0 |
5.4. Описание триггеров
| Имя | Выражение проблемы | Описание |
|---|---|---|
| PostgreSQL: Version has changed | last(/PostgreSQL by Zabbix agent 2/pgsql.version["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"],#1)<>last(/PostgreSQL by Zabbix agent 2/pgsql.version["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"],#2) and length(last(/PostgreSQL by Zabbix agent 2/pgsql.version["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]))>0 | Срабатывает при изменении версии PostgreSQL |
| PostgreSQL: Dbstat: Checksum failures detected | last(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.sum.checksum_failures.rate)>0 | Сигнализирует об обнаружении сбоев контрольных сумм (checksum failures) в базах данных. |
| PostgreSQL: Total number of connections is too high | min(/PostgreSQL by Zabbix agent 2/pgsql.connections.sum.total_pct,5m) > {$PG.CONN_TOTAL_PCT.MAX.WARN} | Предупреждает о слишком высоком общем проценте используемых подключений относительно максимально разрешённого. |
| PostgreSQL: Oldest xid is too big | last(/PostgreSQL by Zabbix agent 2/pgsql.oldest.xid["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]) > 18000000 | Оповещает, что возраст самого старого идентификатора транзакции (XID) превысил критическое значение (18000000). |
| PostgreSQL: Service has been restarted | last(/PostgreSQL by Zabbix agent 2/pgsql.uptime["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]) < 10m | Фиксирует перезапуск сервиса PostgreSQL. Срабатывает, если время работы (uptime) меньше 10 минут. |
| PostgreSQL: Service is down | last(/PostgreSQL by Zabbix agent 2/pgsql.ping["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"])=0 | Критический триггер, сигнализирующий о недоступности PostgreSQL. |
5.5. Описание прототипов элементов данных Replication discovery
| Имя | Ключ | Описание |
|---|---|---|
| Application [{#APPLICATION_NAME}]: Get replication | pgsql.replication.get_metrics["{#APPLICATION_NAME}"] | Получение сводной информации о репликации для конкретного приложения |
| Application [{#APPLICATION_NAME}]: Replication flush lag | pgsql.replication.process.flush_lag["{#APPLICATION_NAME}"] | Задержка репликации по стадии flush |
| Application [{#APPLICATION_NAME}]: Replication replay lag | pgsql.replication.process.replay_lag["{#APPLICATION_NAME}"] | Задержка репликации по стадии replay |
| Application [{#APPLICATION_NAME}]: Replication write lag | pgsql.replication.process.write_lag["{#APPLICATION_NAME}"] | Задержка репликации по стадии write |
5.6. Описание прототипов элементов данных Database discovery
| Имя | Ключ | Описание |
|---|---|---|
| DB [{#DBNAME}]: Get dbstat | pgsql.dbstat.get_metrics["{#DBNAME}"] | Получение сводной статистики базы данных (мастер-элемент для зависимых метрик) |
| DB [{#DBNAME}]: Get locks | pgsql.locks.get_metrics["{#DBNAME}"] | Получение информации о блокировках базы данных (мастер-элемент) |
| DB [{#DBNAME}]: Get queries | pgsql.queries.get_metrics["{#DBNAME}"] | Получение информации о запросах базы данных (мастер-элемент) |
| DB [{#DBNAME}]: Database age | pgsql.db.age["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"] | Возраст базы данных (в транзакциях) |
| DB [{#DBNAME}]: Bloating tables | pgsql.db.bloating_tables["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"] | Количество таблиц, страдающих от раздувания (bloat) |
| DB [{#DBNAME}]: Database size | pgsql.db.size["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"] | Размер базы данных в байтах |
| DB [{#DBNAME}]: Blocks hit per second | pgsql.dbstat.blks_hit.rate["{#DBNAME}"] | Количество обращений к буферному кэшу (попаданий) в секунду |
| DB [{#DBNAME}]: Disk blocks read per second | pgsql.dbstat.blks_read.rate["{#DBNAME}"] | Количество блоков, прочитанных с диска, в секунду |
| DB [{#DBNAME}]: Detected conflicts per second | pgsql.dbstat.conflicts.rate["{#DBNAME}"] | Количество конфликтов (отмен запросов из-за репликации) в секунду |
| DB [{#DBNAME}]: Detected deadlocks per second | pgsql.dbstat.deadlocks.rate["{#DBNAME}"] | Количество взаимоблокировок (deadlocks) в секунду |
| DB [{#DBNAME}]: Temp_bytes written per second | pgsql.dbstat.temp_bytes.rate["{#DBNAME}"] | Объём временных файлов, записанных в секунду (в байтах) |
| DB [{#DBNAME}]: Temp_files created per second | pgsql.dbstat.temp_files.rate["{#DBNAME}"] | Количество созданных временных файлов в секунду |
| DB [{#DBNAME}]: Tuples deleted per second | pgsql.dbstat.tup_deleted.rate["{#DBNAME}"] | Количество удалённых строк в секунду |
| DB [{#DBNAME}]: Tuples fetched per second | pgsql.dbstat.tup_fetched.rate["{#DBNAME}"] | Количество полученных (fetched) строк в секунду |
| DB [{#DBNAME}]: Tuples inserted per second | pgsql.dbstat.tup_inserted.rate["{#DBNAME}"] | Количество вставленных строк в секунду |
| DB [{#DBNAME}]: Tuples returned per second | pgsql.dbstat.tup_returned.rate["{#DBNAME}"] | Количество возвращённых строк (результатов запросов) в секунду |
| DB [{#DBNAME}]: Tuples updated per second | pgsql.dbstat.tup_updated.rate["{#DBNAME}"] | Количество обновлённых строк в секунду |
| DB [{#DBNAME}]: Commits per second | pgsql.dbstat.xact_commit.rate["{#DBNAME}"] | Количество зафиксированных транзакций в секунду |
| DB [{#DBNAME}]: Rollbacks per second | pgsql.dbstat.xact_rollback.rate["{#DBNAME}"] | Количество откатов транзакций в секунду |
| DB [{#DBNAME}]: Backends connected | pgsql.dbstat.numbackends["{#DBNAME}"] | Текущее количество активных подключений (бэкендов) к базе данных |
| DB [{#DBNAME}]: Checksum failures | pgsql.dbstat.checksum_failures.rate["{#DBNAME}"] | Количество сбоев контрольных сумм страниц данных в секунду |
| DB [{#DBNAME}]: Disk blocks read time per second | pgsql.dbstat.blk_read_time.rate["{#DBNAME}"] | Время чтения блоков данных с диска (в секундах) |
| DB [{#DBNAME}]: Disk blocks write time | pgsql.dbstat.blk_write_time.rate["{#DBNAME}"] | Время записи блоков данных на диск (в секундах) |
| DB [{#DBNAME}]: Num of accessexclusive locks | pgsql.locks.accessexclusive["{#DBNAME}"] | Количество блокировок уровня AccessExclusive |
| DB [{#DBNAME}]: Num of accessshare locks | pgsql.locks.accessshare["{#DBNAME}"] | Количество блокировок уровня AccessShare |
| DB [{#DBNAME}]: Num of exclusive locks | pgsql.locks.exclusive["{#DBNAME}"] | Количество блокировок уровня Exclusive |
| DB [{#DBNAME}]: Num of rowexclusive locks | pgsql.locks.rowexclusive["{#DBNAME}"] | Количество блокировок уровня RowExclusive |
| DB [{#DBNAME}]: Num of rowshare locks | pgsql.locks.rowshare["{#DBNAME}"] | Количество блокировок уровня RowShare |
| DB [{#DBNAME}]: Num of sharerowexclusive locks | pgsql.locks.sharerowexclusive["{#DBNAME}"] | Количество блокировок уровня ShareRowExclusive |
| DB [{#DBNAME}]: Num of shareupdateexclusive locks | pgsql.locks.shareupdateexclusive["{#DBNAME}"] | Количество блокировок уровня ShareUpdateExclusive |
| DB [{#DBNAME}]: Num of share locks | pgsql.locks.share["{#DBNAME}"] | Количество блокировок уровня Share |
| DB [{#DBNAME}]: Num of locks total | pgsql.locks.total["{#DBNAME}"] | Общее количество всех блокировок в базе данных |
| DB [{#DBNAME}]: Queries max maintenance time | pgsql.queries.mro.time_max["{#DBNAME}"] | Максимальное время выполнения обслуживающих запросов (в миллисекундах) |
| DB [{#DBNAME}]: Queries max query time | pgsql.queries.query.time_max["{#DBNAME}"] | Максимальное время выполнения обычных запросов (в миллисекундах) |
| DB [{#DBNAME}]: Queries max transaction time | pgsql.queries.tx.time_max["{#DBNAME}"] | Максимальное время выполнения транзакционных запросов (в миллисекундах) |
| DB [{#DBNAME}]: Queries slow maintenance count | pgsql.queries.mro.slow_count["{#DBNAME}"] | Количество медленных обслуживающих запросов (превышающих порог) |
| DB [{#DBNAME}]: Queries slow query count | pgsql.queries.query.slow_count["{#DBNAME}"] | Количество медленных обычных запросов |
| DB [{#DBNAME}]: Queries slow transaction count | pgsql.queries.tx.slow_count["{#DBNAME}"] | Количество медленных транзакционных запросов |
| DB [{#DBNAME}]: Queries sum maintenance time | pgsql.queries.mro.time_sum["{#DBNAME}"] | Суммарное время выполнения обслуживающих запросов (в миллисекундах) |
| DB [{#DBNAME}]: Queries sum query time | pgsql.queries.query.time_sum["{#DBNAME}"] | Суммарное время выполнения обычных запросов (в миллисекундах) |
| DB [{#DBNAME}]: Queries sum transaction time | pgsql.queries.tx.time_sum["{#DBNAME}"] | Суммарное время выполнения транзакционных запросов (в миллисекундах) |
5.7. Описание прототипов триггеров Database discovery
| Имя | Выражение проблемы | Описание |
|---|---|---|
| PostgreSQL: DB [{#DBNAME}]: Too many recovery conflicts | min(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.conflicts.rate["{#DBNAME}"],5m) > {$PG.CONFLICTS.MAX.WARN:"{#DBNAME}"} | Срабатывает, когда количество конфликтов репликации (отмен запросов из-за recovery) в базе данных за 5 минут превышает заданный порог (макрос {$PG.CONFLICTS.MAX.WARN:"{#DBNAME}"}). Указывает на возможные проблемы с синхронизацией реплик. |
| PostgreSQL: DB [{#DBNAME}]: Deadlock occurred | min(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.deadlocks.rate["{#DBNAME}"],5m) > {$PG.DEADLOCKS.MAX.WARN:"{#DBNAME}"} | Сигнализирует о превышении допустимого количества взаимоблокировок (deadlocks) за 5 минут. Порог задаётся макросом {$PG.DEADLOCKS.MAX.WARN:»{#DBNAME}»}. Высокое значение может свидетельствовать о проблемах с логикой приложения или конкуренцией за ресурсы. |
| PostgreSQL: DB [{#DBNAME}]: Checksum failures detected | last(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.checksum_failures.rate["{#DBNAME}"])>0 | Обнаруживает сбои контрольных сумм (checksum failures) в базе данных. Срабатывает при любом положительном значении (скорость >0). Критический индикатор возможного повреждения данных, требующий немедленного вмешательства. |
| PostgreSQL: DB [{#DBNAME}]: Too many slow queries | min(/PostgreSQL by Zabbix agent 2/pgsql.queries.query.slow_count["{#DBNAME}"],5m)>{$PG.SLOW_QUERIES.MAX.WARN:"{#DBNAME}"} | Предупреждает о слишком большом количестве медленных запросов за 5 минут в базе данных. Порог задаётся макросом {$PG.SLOW_QUERIES.MAX.WARN:"{#DBNAME}"}. Может указывать на проблемы с производительностью, неоптимальные индексы или возросшую нагрузку. |
6. Шаблон RabbitMQ cluster
6.1. Настройка
На каждом узле кластера, который нужно мониторить, необходимо включить плагин управления и создать пользователя для Zabbix.
Выполните следующие команды на одном из узлов кластера (или на всех, если планируете мониторить каждый узел отдельно):
1. Включите management plugin (если он ещё не активен):
rabbitmq-plugins enable rabbitmq_management
2. Создайте пользователя для мониторинга (например, zbx_monitor):
rabbitmqctl add_user zbx_monitor <ПАРОЛЬ>
3. Назначьте права этому пользователю (доступ ко всей информации через management API):
rabbitmqctl set_permissions -p / zbx_monitor "" "" ".*"
4. Назначьте тег (например, monitoring), чтобы можно было легко идентифицировать этого пользователя:
rabbitmqctl set_user_tags zbx_monitor monitoring
5. Импортируйте шаблон RabbitMQ cluster в Zabbix (см. п. 1.2).
6.2. Описание макросов
| Имя | Описание | Значение по умолчанию |
|---|---|---|
{$RABBITMQ.API.USER} | Имя пользователя | zbx_monitor |
{$RABBITMQ.API.PASSWORD} | Пароль пользователя | Zabbix |
{$RABBITMQ.API.CLUSTER_HOST} | IP-адрес или доменное имя узла | 127.0.0.1 |
{$RABBITMQ.API.PORT} | Порт Management API RabbitMQ | 15672 |
{$RABBITMQ.API.SCHEME} | Протокол подключения к API: http или https | http |
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES} | Регулярное выражение для включения обменников в автоматическое обнаружение (LLD) | .* |
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES} | Регулярное выражение для исключения обменников из обнаружения (например, системные или служебные) | CHANGE_IF_NEEDED |
6.3. Описание элементов данных
| Имя | Ключ | Описание |
|---|---|---|
| Get overview | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"] | Мастер-элемент, получающий общую статистику кластера через HTTP API. |
| Get exchanges | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"] | Мастер-элемент, получающий метрики всех обменников через HTTP API. |
| Connections total | rabbitmq.overview.object_totals.connections | Общее количество подключений к кластеру. |
| Channels total | rabbitmq.overview.object_totals.channels | Общее количество каналов в кластере. |
| Queues total | rabbitmq.overview.object_totals.queues | Общее количество очередей. |
| Consumers total | rabbitmq.overview.object_totals.consumers | Общее количество потребителей. |
| Exchanges total | rabbitmq.overview.object_totals.exchanges | Общее количество обменников. |
| Messages total | rabbitmq.overview.queue_totals.messages | Общее количество сообщений (готовых к доставке и неподтверждённых). |
| Messages ready for delivery | rabbitmq.overview.queue_totals.messages.ready | Количество сообщений, готовых к доставке (ожидающих в очереди). |
| Messages unacknowledged | rabbitmq.overview.queue_totals.messages.unacknowledged | Количество неподтверждённых сообщений (ещё не подтверждённых потребителем). |
| Messages acknowledged | rabbitmq.overview.messages.ack | Количество сообщений, доставленных клиентам и подтверждённых ими. |
| Messages acknowledged per second | rabbitmq.overview.messages.ack.rate | Скорость подтверждения сообщений (в секунду). |
| Messages confirmed | rabbitmq.overview.messages.confirm | Количество подтверждённых сообщений (со стороны издателя). |
| Messages confirmed per second | rabbitmq.overview.messages.confirm.rate | Скорость подтверждения сообщений издателем (в секунду). |
| Messages delivered | rabbitmq.overview.messages.deliver_get | Суммарное количество сообщений, доставленных потребителям (включая режимы с подтверждением и без). |
| Messages delivered per second | rabbitmq.overview.messages.deliver_get.rate | Скорость доставки сообщений потребителям (в секунду). |
| Messages published | rabbitmq.overview.messages.publish | Количество опубликованных сообщений (всего). |
| Messages published per second | rabbitmq.overview.messages.publish.rate | Скорость публикации сообщений (в секунду). |
| Messages publish_in | rabbitmq.overview.messages.publish_in | Количество сообщений, опубликованных в данный обзор (из каналов). |
| Messages publish_in per second | rabbitmq.overview.messages.publish_in.rate | Скорость публикации сообщений в данный обзор (в секунду). |
| Messages publish_out | rabbitmq.overview.messages.publish_out | Количество сообщений, опубликованных из данного обзора в очереди. |
| Messages publish_out per second | rabbitmq.overview.messages.publish_out.rate | Скорость публикации сообщений из обзора в очереди (в секунду). |
| Messages returned unroutable | rabbitmq.overview.messages.return_unroutable | Количество сообщений, возвращённых издателю как недоставляемые. |
| Messages returned unroutable per second | rabbitmq.overview.messages.return_unroutable.rate | Скорость возврата недоставляемых сообщений (в секунду). |
| Messages returned redeliver | rabbitmq.overview.messages.redeliver | Количество сообщений с флагом повторной доставки (redelivered). |
| Messages returned redeliver per second | rabbitmq.overview.messages.redeliver.rate | Скорость появления сообщений с флагом повторной доставки (в секунду). |
6.4. Описание триггеров
| Имя | Выражение проблемы | Описание |
|---|---|---|
| RabbitMQ cluster: Failed to fetch overview data | nodata(/RabbitMQ cluster by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"],30m)=1 | Zabbix не получал никаких данных за последние 30 минут. |
6.5. Описание прототипов элементов данных Health Check
| Имя | Ключ | Описание |
|---|---|---|
| Healthcheck: alarms in effect in the cluster{#SINGLETON} | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"] | Если в кластере нет действующих тревожных сигналов, система выдает код состояния 200 OK. В противном случае система выдает код состояния 503 Service Unavailable. |
6.6. Описание прототипов триггеров Health Check
| Имя | Выражение проблемы | Описание |
|---|---|---|
| RabbitMQ cluster: There are active alarms in the cluster | last(/RabbitMQ cluster by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"])=0 | Обнаружение активных алармов в кластере RabbitMQ |
6.7. Описание прототипов элементов данных Exchanges discovery
| Имя | Ключ | Описание |
|---|---|---|
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Get data | rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Мастер-элемент, получающий метрики конкретного обменника через HTTP API. |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged | rabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Количество сообщений, доставленных клиентам и подтверждённых ими. |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged per second | rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Скорость подтверждения сообщений (в секунду). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed | rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Количество подтверждённых сообщений со стороны издателя. |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second | rabbitmq.exchange.messages.confirm.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Скорость подтверждения сообщений издателем (в секунду). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered | rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Суммарное количество сообщений, доставленных потребителям (с подтверждением и без). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second | rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Скорость доставки сообщений потребителям (в секунду). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published | rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Количество опубликованных сообщений. |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second | rabbitmq.exchange.messages.publish.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Скорость публикации сообщений (в секунду). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in | rabbitmq.exchange.messages.publish_in["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Количество сообщений, опубликованных в данный обменник из каналов. |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per second | rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Скорость публикации сообщений в обменник (в секунду). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out | rabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Количество сообщений, опубликованных из обменника в очереди. |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per second | rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Скорость публикации сообщений из обменника в очереди (в секунду). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable | rabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Количество сообщений, возвращённых издателю как недоставляемые. |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per second | rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Скорость возврата недоставляемых сообщений (в секунду). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered | rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Количество сообщений с флагом повторной доставки (redelivered). |
| Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered per second | rabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] | Скорость появления сообщений с флагом повторной доставки (в секунду). |













