Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы документов
Редакторы документов
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
Команда
Команда
Мобильные редакторы
Мобильные редакторы
Почтовый сервер
Почтовый сервер
Органайзер
Органайзер
Сервер лицензирования
Сервер лицензирования
Файл-Экспресс
Файл-Экспресс
Аналитика
Аналитика
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Шаблон для мониторинга сервисов и веб модулей Корпоративного сервера 2024

Обновлено: 24.09.26

Инструкция актуальна для версий продукта: 2026.1.12.16832 – 2026.2.12.17246

Все версии инструкции (3)
  • 2 версии используют один документ2026.2.12.172462026.1.12.16832
  • 2025.1.18.15276

В статье описана установка и настройка шаблона КС24 для системы мониторинга Zabbix. Шаблон позволяет контролировать:

  • доступность основных сервисов Корпоративного сервера 2024;
  • доступность веб-модулей;
  • состояние отдельных процессов;
  • доступность необходимых TCP-портов.

При возникновении проблемы Zabbix может сформировать событие и уведомить администратора.

Важно

Инструкция предназначена для системных администраторов и специалистов, отвечающих за мониторинг инфраструктуры.

Что потребуется

Перед началом убедитесь, что:

  • установлен и настроен Zabbix;
  • используется рекомендуемая версия Zabbix;
  • на сервере установлен Zabbix Agent 2;
  • у вас есть доступ к Р7 Управление;
  • известен домен Корпоративного сервера 2024;
Обратите внимание

Шаблон создан с использованием Zabbix 7.0.0 и Zabbix Agent 2 версии 7.0.0. Перед использованием на другой версии Zabbix проверьте совместимость шаблона.

Какие параметры отслеживает шаблон

Шаблон проверяет доступность следующих компонентов:

  • P7 Управление;
  • P7 Диск;
  • P7 Почта;
  • P7 Календарь;
  • P7 Проекты;
  • P7 Контакты;
  • P7 Графика;
  • Сервер документов;
  • PostgreSQL;
  • RabbitMQ;
  • Redis;
  • сервисы и процессы P7 Диск и Сервера документов.

2. Подготовка Корпоративного сервера 2024

2.1. Создание пользователя для мониторинга

Для проверки веб-модулей создайте отдельную учетную запись в Р7 Управление.

1. Откройте Р7 Управление по адресу:

https://admin.ваш_домен

2. Создайте отдельного пользователя для мониторинга.

В примере используется имя: r7_zabbix

3. Запомните имя пользователя и пароль. Они понадобятся при дальнейшей настройке.

Обратите внимание

Используйте отдельную учетную запись для мониторинга, а не личную учетную запись администратора.

2.2. Импорт шаблона в Zabbix

  1. Скачайте архив с шаблонами cs_24_template_zabbix.tar.gz.
  2. Распакуйте архив.
  3. В интерфейсе Zabbix перейдите в:

Сбор данных → Шаблоны

Переход в раздел «Сбор данных» → «Шаблоны»

Нажмите Импорт.

Кнопка «Импорт» на панели инструментов

Выберите необходимый файл с шаблоном:

Окно выбора файла шаблона для импорта

Нажмите Импорт.

Результат успешного импорта шаблона

После успешного импорта новый шаблон появится в списке

Обратите внимание

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

3. Шаблон CS 2024 single

3.1. Заполнение макросов

Макросы используются шаблоном для формирования адресов модулей и авторизации. Перейдите в настройки шаблона КС24 и откройте раздел Макросы.

Обязательные значения

Проверьте следующие макросы:

МакросЧто указатьЗначение
{$DOMAIN}Имя доменаlocal.ru
{$R7_USERNAME}Пользователь, созданный на шаге 1r7_zabbix
{$R7_PASSWORD}Пароль этого пользователяpassword (пароль, созданный ранее)
{$SHEMA}Протокол подключенияhttp

Пример: Если сервер доступен по адресу https://admin.company.ru, то:

  • {$SHEMA} = https;
  • {$CDADMIN} = admin;
  • {$DOMAIN} = company.ru.

Макросы модулей

Следующие макросы определяют префиксы, используемые в адресах модулей:

МакросЗначение по умолчаниюМодуль
{$CDADMIN}adminP7 Управление
{$CDDISK}cddiskP7 Диск
{$CDMAIL}cdmailP7 Почта
{$CALENDAR}calendarP7 Календарь
{$CONTACTS}contactsP7 Контакты
{$DRAW}drawP7 Графика
{$DS}dsСервер документов
{$PROJECTS}projectsP7 Проекты

3.2. Элементы данных

Шаблон использует стандартные элементы данных Zabbix для проверки доступности TCP-сервисов и количества процессов.

Проверка TCP-сервисов

Для TCP-проверок используется ключ:

net.tcp.service

Результат проверки:

  • 0 — сервис недоступен;
  • 1 — сервис доступен.
Обратите внимание

При использовании службы TCP указание порта обязательно

Например:

net.tcp.service[tcp,,5432] проверяет доступность PostgreSQL на порту 5432.

Основные проверки:

КомпонентКлюч
nginx HTTPnet.tcp.service[http,,80]
nginx HTTPSnet.tcp.service[https,,443]
RabbitMQ-серверnet.tcp.service[tcp,,5672]
Redisnet.tcp.service[tcp,,6379]
PostgreSQLnet.tcp.service[tcp,,5432]
cddisk.apinet.tcp.service[tcp,,38033]
cddisk:apissonnet.tcp.service[tcp,,38034]
cddisk:registrynet.tcp.service[tcp,,7777]
cddisk:searchapinet.tcp.service[tcp,,2664]
cddisk:filestorage_httpnet.tcp.service[http,,11580]
cddisk:filestorage_tcpnet.tcp.service[tcp,,11581]
Сервер документовnet.tcp.service[tcp,,8000]
Сервер документов metricsnet.tcp.service[tcp,,8126]

Проверка процессов

Для контроля количества процессов используется ключ:

proc.num

Пример: proc.num[converter] проверяет количество процессов converter.

Основные проверки:

ПроцессКлючОписание
Статус сервиса cddisk:processingproc.num[dotnet,,,Processing ]Возвращаемое значение: целое число.
Статус сервиса ds:converterproc.num[converter]Возвращаемое значение: целое число.

3.3. Веб-сценарии

Веб-сценарии проверяют доступность пользовательских интерфейсов модулей.

Перед обращением к большинству модулей выполняется авторизация в P7 Управление. URL: {{$SHEMA}}://{{$CDADMIN}}.{{$DOMAIN}}/api/v2/auth/login

Для успешной проверки веб-сценария должен быть получен ожидаемый HTTP-код ответа. Для соответствующих сценариев используется код: 200

3.4. Триггеры

Триггер создаёт проблему в Zabbix, когда сервис становится недоступен или перестают поступать данные.

Для сетевых сервисов используется два условия:

  1. сервис недоступен;
  2. от элемента данных не поступают новые значения.

Это позволяет отличать реальную проблему сервиса от ситуации, когда агент перестал передавать данные.

ИмяВыражение проблемыВыражение восстановленияОписание
nginx_80 не запущенlast(/CS 2024/net.tcp.service[http,,80])=0 or nodata(/CS 2024/net.tcp.service[http,,80],150s)=1last(/CS 2024/net.tcp.service[http,,80])=1Контроль HTTP-сервиса nginx на порту 80.
nginx_443 не запущенlast(/CS 2024/net.tcp.service[https,,443])=0 or nodata(/CS 2024/net.tcp.service[https,,443],150s)=1last(/CS 2024/net.tcp.service[https,,443])=1Контроль HTTPS-сервиса nginx на порту 443.
PostgreSQL не запущенlast(/CS 2024/net.tcp.service[tcp,,5432])=0 or nodata(/CS 2024/net.tcp.service[tcp,,5432],150s)=1last(/CS 2024/net.tcp.service[tcp,,5432])=1Контроль PostgreSQL.
RabbitMQ-server не запущенlast(/CS 2024/net.tcp.service[tcp,,5672])=0 or nodata(/CS 2024/net.tcp.service[tcp,,5672],150s)=1last(/CS 2024/net.tcp.service[tcp,,5672])=1Контроль RabbitMQ.
redis не запущенlast(/CS 2024/net.tcp.service[tcp,,6379])=0 or nodata(/CS 2024/net.tcp.service[tcp,,6379],150s)=1last(/CS 2024/net.tcp.service[tcp,,6379])=1Контроль Redis.
Доступность Р7-Календарьlast(/CS 2024/web.test.fail[Доступность Р7-Календарь])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Календарь],150s)=0Контроль веб-сценария Р7-Календаря.
Доступность Р7-Управлениеlast(/CS 2024/web.test.fail[Доступность Р7-Управление])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Управление],150s)=0Контроль веб-сценария Р7-Управления.
Доступность Р7-Дискlast(/CS 2024/web.test.fail[Доступность Р7-Диск])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Диск],150s)=0Контроль веб-сценария Р7-Диска.
Доступность Р7-Почтаlast(/CS 2024/web.test.fail[Доступность Р7-Почта])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Почта],150s)=0Контроль веб-сценария Р7-Почты.
Доступность Р7-Проектыlast(/CS 2024/web.test.fail[Доступность Р7-Проекты])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Проекты],150s)=0Контроль веб-сценария Р7-Проектов.
Доступность Р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[Доступность Сервер документов])=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Контроль веб-сценария Р7-Графики.
Сервер документов converter не запущенlast(/CS 2024/proc.num[converter])<2 or nodata(/CS 2024/proc.num[converter],150s)=1last(/CS 2024/proc.num[converter])>=3Контроль количества процессов Converter.
Сервер документов ds_docservice не запущенlast(/CS 2024/net.tcp.service[tcp,,8000])=0 or nodata(/CS 2024/net.tcp.service[tcp,,8000],150s)=1last(/CS 2024/net.tcp.service[tcp,,8000])=1Контроль DocService.
Сервер документов ds_metrics не запущенlast(/CS 2024/net.tcp.service[tcp,,8126])=0 or nodata(/CS 2024/net.tcp.service[tcp,,8126],150s)=1last(/CS 2024/net.tcp.service[tcp,,8126])=1Контроль сервиса метрик.
процесс cddisk не запущенlast(/CS 2024/net.tcp.service[tcp,,38034])=0 or nodata(/CS 2024/net.tcp.service[tcp,,38034],150s)=1last(/CS 2024/net.tcp.service[tcp,,38034])=1Контроль SSO.
процесс cddisk не запущенlast(/CS 2024/net.tcp.service[tcp,,38033])=0 or nodata(/CS 2024/net.tcp.service[tcp,,38033],150s)=1last(/CS 2024/net.tcp.service[tcp,,38033])=1Контроль API.
процесс cddisk не запущенlast(/CS 2024/net.tcp.service[http,,11580])=0 or nodata(/CS 2024/net.tcp.service[http,,11580],150s)=1last(/CS 2024/net.tcp.service[http,,11580])=1Контроль HTTP Filestorage.
процесс cddisk не запущенlast(/CS 2024/net.tcp.service[tcp,,11581])=0 or nodata(/CS 2024/net.tcp.service[tcp,,11581],150s)=1last(/CS 2024/net.tcp.service[tcp,,11581])=1Контроль TCP Filestorage.
процесс cddisk не запущенlast(/CS 2024/proc.num[dotnet,,,Processing])=0 or nodata(/CS 2024/proc.num[dotnet,,,Processing],150s)=1last(/CS 2024/proc.num[dotnet,,,Processing])=1Контроль Processing.
процесс cddisk не запущенlast(/CS 2024/net.tcp.service[tcp,,7777])=0 or nodata(/CS 2024/net.tcp.service[tcp,,7777],150s)=1last(/CS 2024/net.tcp.service[tcp,,7777])=1Контроль Registry.
процесс cddisk не запущенlast(/CS 2024/net.tcp.service[tcp,,2664])=0 or nodata(/CS 2024/net.tcp.service[tcp,,2664],150s)=1last(/CS 2024/net.tcp.service[tcp,,2664])=1Контроль Search API.

Если при последней проверке веб-служба на 80 порту (HTTP) была недоступна, Zabbix получает 0. Условие становится истинным (1), и триггер переходит в статус «Проблема». Если в течение последних 150 секунд (2.5 минут) Zabbix не получил ни одного значения по этому элементу данных, функция nodata() возвращает 1. Условие выполняется, и триггер бьет тревогу.

Выражение восстановления с условием last(/CS 2024/net.tcp.service[http,,80])=1 переведет триггер из состояния «Проблема» обратно в состояние «ОК», как только веб-служба на 80 порту снова станет доступной.

4. Шаблон R7 — CS 2024 middle

Шаблон предназначен для распределённой установки Корпоративного сервера 2024.

4.1. Структура

ИмяОписание
R7 — CS — API LinuxНоды сервиса API
R7 — CS — Filesorage LinuxНоды сервиса Filesorage
R7 — CS — Processing LinuxНоды сервиса Backend Processing
R7 — CS — Registry LinuxНоды сервиса Registry
R7 — CS — Search LinuxНоды сервиса Search
R7 — CS — SSO LinuxНоды сервиса SSO
R7 — CS — WebscenarioПроверка веб-доступности
Обратите внимание

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

Для корректной работы шаблона R7 — CS — Webscenario необходимо заполнить данные в макросах:

Макросы шаблона R7 — CS — Webscenario

4.2. Элементы данных

ИмяКлючОписание
R7-CS: Process info rawproc.get[dotnet,,R7. Storage.Server.Api.H ost.dll,process]Получает информацию о процессе dotnet.
R7-CS: number of context switchesctx_switchesПоказывает частоту переключения процессора между потоками процесса.
R7-CS: number of page faultspage_faultsПоказывает количество обращений процесса к данным, не находящимся в его рабочем наборе. Увеличение этого значения может указывать на дефицит физической памяти или неоптимальное использование кэша.
R7-CS: number of threadsthreadsПозволяет отслеживать утечки потоков или аномальное увеличение параллелизма.
R7-CS: percentage of real memorypmemПроцент от общего объема физической памяти, занимаемой процессом. Оценка нагрузки на ОЗУ
R7-CS: process statestateСостояние процесса
R7-CS: size of data segment from processdataРазмер сегмента данных процесса (data segment). Отражает объем памяти, выделенной под данные приложения
R7-CS: size of processsizeОбщий размер процесса. Характеризует общий объем памяти, занимаемый исполняемым образом.
R7-CS: size of swap spaceswapОбъем использованного swap-пространства (подкачки) для данного процесса.
R7-CS: total CPU seconds (system)cpu time systemОбщее время использования CPU в режиме ядра (system time) для процесса (в секундах). Показывает нагрузку на системные вызовы.
R7-CS: total CPU seconds (user)cpu time userОбщее время использования CPU в пользовательском режиме (user time) для процесса.
R7-CS: virtual memory sizev sizeОбщий объем виртуальной памяти, выделенной процессу.
R7-CS: Cratyc HTTP-сервиса APInet.tcp.service[h ttp, 38033]Выполняет проверку доступности TCP-порта 38033, на котором работает HTTP-сервис API.
R7-CS: Cratyc HTTP-сервиса Filesoragenet.tcp.service[h ttp, 11580]Проверяет доступность HTTP-сервиса Filesorage по порту 11580
R7-CS: Cratyc TCP-сервиса Filesoragenet.tcp.service[t cp, 11581]Проверяет доступность TCP-сервиса Filesorage по порту 11581
R7-CS: Cratyc HTTP-сервиса Registrynet.tcp.service[h ttp, 7777]Проверяет доступность HTTP-сервиса Registry по порту 7777
R7-CS: Cratyc HTTP-сервиса Searchnet.tcp.service[h ttp, 2664]Проверяет доступность HTTP-сервиса поиска (Search) по порту 2664
R7-CS: Cratyc HTTP-сервиса SSOnet.tcp.service[h ttp, 38034]Проверяет доступность сервиса SSO по порту 38034

4.3. Веб-сценарии

Веб-сценарии работают по тому же принципу, что и в CS 2024 single: сначала выполняется авторизация, затем проверяется доступность соответствующего модуля (подробнее см. п. 3.2).

4.4. Триггеры

Триггеры middle контролируют доступность отдельных сервисов и портов.

Для сетевых сервисов используется два условия:

  1. сервис недоступен;
  2. от элемента данных не поступают новые значения.

Это позволяет отличать реальную проблему сервиса от ситуации, когда агент перестал передавать данные.

ИмяВыражение проблемыВыражение восстановленияОписание
Доступность P7-Календарьlast(/CS 2024/web.test.fail[Доступность P7-Календарь])=1 or nodata(/CS 2024/web.test.error[Доступность P7-Календарь],150s)=0Контроль веб-сценария P7-Календаря.
Доступность P7-Управлениеlast(/CS 2024/web.test.fail[Доступность P7-Управление])=1 or nodata(/CS 2024/web.test.error[Доступность P7-Управление],150s)=0Контроль веб-сценария P7-Управления.
Доступность P7-Дискlast(/CS 2024/web.test.fail[Доступность P7-Диск])=1 or nodata(/CS 2024/web.test.error[Доступность P7-Диск],150s)=0Контроль веб-сценария P7-Диска.
Доступность P7-Почтаlast(/CS 2024/web.test.fail[Доступность P7-Почта])=1 or nodata(/CS 2024/web.test.error[Доступность P7-Почта],150s)=0Контроль веб-сценария P7-Почты.
Доступность P7-Проектыlast(/CS 2024/web.test.fail[Доступность P7-Проекты])=1 or nodata(/CS 2024/web.test.error[Доступность P7-Проекты],150s)=0Контроль веб-сценария P7-Проектов.
Доступность P7-Контактыlast(/CS 2024/web.test.fail[Доступность P7-Контакты]=1 or nodata(/CS 2024/web.test.error[Доступность P7-Контакты],150s)=0Контроль веб-сценария P7-Контактов.
Доступность Сервера документовlast(/CS 2024/web.test.fail[Доступность Сервер документов)]=1 or nodata(/CS 2024/web.test.error[Доступность Сервер документов],150s)=0Контроль веб-сценария Сервера документов.
Доступность P7-Графикаlast(/CS 2024/web.test.fail[Доступность P7-Графика)]=1 or nodata(/CS 2024/web.test.error[Доступность P7-Графика],150s)=0Контроль веб-сценария P7-Графики.
Недоступен порт http-службы APImax(/R7 — CS 2024 middle/net.tcp.service[http,,38033], #3)=0count(/R7 — CS 2024 middle/net.tcp.service[http,,38033], #3, «eq», «1»)>=3Сигнализирует о недоступности HTTP-интерфейса API.
Недоступен порт http-службы Filestoragelast(/R7 — CS 2024 middle/net.tcp.service[http,,11580])=0last(/R7 — CS 2024 middle/net.tcp.service[http,,11580])=1Контроль HTTP-сервиса Filestorage.
Недоступен порт http-службы Registrylast(/R7 — CS 2024 middle/net.tcp.service[http,,7777])=0last(/R7 — CS 2024 middle/net.tcp.service[http,,7777])=1Контроль Registry.
Недоступен порт http-службы Searchlast(/R7 — CS 2024 middle/net.tcp.service[http,,2664])=0last(/R7 — CS 2024 middle/net.tcp.service[http,,2664])=1Контроль Search.
Недоступен порт http-службы SSOlast(/R7 — CS 2024 middle/net.tcp.service[http,,38034])=0last(/R7 — CS 2024 middle/net.tcp.service[http,,38034])=1Контроль SSO.
Недоступен порт tcp-службы Filestoragelast(/R7 — CS 2024 middle/net.tcp.service[tcp,,11581])=0last(/R7 — CS 2024 middle/net.tcp.service[tcp,,11581])=1Проверка TCP-порта 11581 Filestorage.

5. Шаблон Gluster Storage

Шаблон используется для мониторинга состояния кластера Gluster Storage. Он позволяет контролировать:

  • количество томов;
  • количество узлов;
  • количество активных узлов.

5.1. Элементы данных

ИмяКлючОписание
Gluster Storage Volume Numbergluster_storage_info[ «volume_count»]Возвращает общее количество томов, созданных в кластере.
Gluster Storage Nodesgluster_storage_info[ «node_count»]Возвращает общее количество узлов кластера.
Gluster Storage Active Nodesgluster_storage_info[ «nodes_active»]Возвращает количество активных узлов.

5.2. Триггеры

ИмяВыражение проблемыОписание
Gluster storage nodes is not onlinelast(/Gluster Storage Template/gluster_storage_info[«nodes_active»]) < last(/Gluster Storage Template/gluster_storage_info[«node_count»])Срабатывает, если количество активных узлов меньше общего количества узлов кластера.

5.3. Настройка автоматического обнаружения

Для работы правил автоматического обнаружения:

1. Распакуйте архив с шаблоном на сервере, который отслеживается Zabbix.

2. Перенесите gstatus_discovery.py в /etc/zabbix/

3. Перенесите файл glusterfs.conf в /etc/zabbix/zabbix_agent2.conf.d/

4. Разрешите пользователю zabbix запускать скрипт:

visudo zabbix ALL=(ALL) NOPASSWD: /etc/zabbix/gstatus_discovery.py

5. Проверьте работу скрипта:

sudo -H -u zabbix bash -c 'python3 /etc/zabbix/gstatus_discovery.py'

6. Импортируйте шаблон Gluster Storage в Zabbix (см. п.2.2.).

Скрипт получает сведения о томах и узлах Gluster Storage и передаёт их в Zabbix для автоматического обнаружения.

5.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}]Объём занятого пространства.

5.5. Прототипы триггеров

ИмяВыражение проблемыОписание
Gluster nr_entries is above 0last(/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 downfind(/Gluster Storage Template/gluster_volume_info[«health», {«#VOLUME_NAME}]), #5, «like», «up»)=0Сигнализирует о переходе тома GlusterFS в нерабочее состояние.

6. Шаблон PostgreSQL_Zabbix

Шаблон PostgreSQL используется для контроля состояния базы данных и основных показателей её работы. Перед импортом шаблона необходимо установить PostgreSQL-плагин для Zabbix Agent 2 и создать пользователя для мониторинга.

6.1. Установка и настройка

Шаг 1. Установите плагин PostgreSQL

Подключите официальный репозиторий 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. Проверьте конфигурацию плагина

Обычно конфигурационный файл находится здесь:

/etc/zabbix/zabbix_agent2.d/plugins.d/postgresql.conf

Проверьте наличие строки:

Plugins.PostgreSQL.System.Path=/usr/lib/zabbix-agent2/plugins/postgresql

В большинстве дистрибутивов путь уже задан автоматически.

Если путь отличается, найдите исполняемый файл:

find / -name postgresql 2>/dev/null

Шаг 3. Проверьте подключение конфигурации

В zabbix_agent2.conf должна быть подключена конфигурация плагинов:

Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf

Шаг 4. Перезапустите Zabbix Agent 2

systemctl restart zabbix-agent2

Шаг 5. Проверьте журнал агента

/var/log/zabbix/zabbix_agent2.log

В журнале должно появиться сообщение об успешной загрузке PostgreSQL-плагина.

Шаг 6. Создайте пользователя PostgreSQL

Создайте пользователя для мониторинга:

CREATE USER zbx_monitor WITH PASSWORD '<PASSWORD>' INHERIT;
GRANT pg_monitor TO zbx_monitor;

Шаг 7. Разрешите подключение в pg_hba.conf

Отредактируйте pg_hba.conf конфигурационный файл, чтобы разрешить подключения для пользователя zbx_monitor.

Например, для разрешения локальных TCP-подключений с одного и того же хоста можно добавить одну из перечисленных ниже строк:

Пример строк для разрешения подключений в pg_hba.conf

Шаг 8. Импортируйте шаблон PostgreSQL

Импортируйте шаблон в Zabbix способом, описанным в разделе 2.2.

6.2. Макросы PostgreSQL

ИмяОписаниеЗначение по умолчанию
{$PG.CONNSTRING.AGENT 2}URI или именованная сессия экземпляра PostgreSQL.tcp://localhost:5432
{$PG.USER}Имя пользователя PostgreSQL.zbx_monitor
{$PG.PASSWORD}Пароль пользователя PostgreSQL.
{$PG.DATABASE}База данных, используемая для подключения.postgres
{$PG.LLD.FILTER.DBNAME}Фильтр баз данных, доступных для обнаружения.. +
{$PG.LLD.FILTER.APPLICATION}Фильтр приложений, доступных для обнаружения.. +
{$PG.DEADLOCKS.MAX.WA RN}Максимальное количество взаимодействующих для срабатывания триггера.0
{$PG.CONN_TOTAL_PCT.M AX.WARN}Максимальный процент используемых подключений.90
{$PG.CONFLICTS.MAX.WA RN}Максимальное количество конфликтов восстановления.0
{$PG.QUERY_ETIME.MAX. WARN}Порог времени выполнения медленного запроса.30
{$PG.SLOW_QUERIES.MAX .WARN}Максимальное количество медленных запросов для срабатывания триггера.5

6.3. Элементы данных PostgreSQL

Элементы данных получают статистику PostgreSQL. Часть элементов является мастер-элементами: они получают полный набор данных, а остальные элементы извлекают из него отдельные показатели.

ИмяКлючОписание
Get bgwriterpgsql.bgwriter[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Получение полной статистики фонового писателя PostgreSQL.
Get archivepgsql.archive[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Получение статистики архивации WAL.
Get dbstatpgsql.dbstat[«$PG.CONNSTRING.AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Получение статистики по базам данных.
Get dbstat sumpgsql.dbstat.sum[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Суммарная статистика по базам данных.
Get connections sumpgsql.connections[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Информация о подключениях.
Get WALpgsql.wal.stat[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Статистика WAL.
Get lockspgsql.locks[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Информация о блокировках.
Custom queriespgsql.custom.query[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Выполнение пользовательского SQL-запроса.
Get replicationpgsql.replication.process[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Информация о процессах репликации.
Get queriespgsql.queries[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»»,»{$PG.QUERY_ETIME.MAX.WARN}»Информация о медленных запросах.
Versionpgsql.version[«$PG.CONNSTRING .AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Версия PostgreSQL.
WAL: Bytes writtenpgsql.wal.writeКоличество байт, записанных в WAL.
WAL: Bytes receivedpgsql.wal.receiveКоличество байт, полученных при репликации.
WAL: Segments countpgsql.wal.countКоличество WAL-сегментов в pg_wal.
Bqwriter: Buffers allocated per secondpgsql.bqwriter.buffers_alloc.rateКоличество выделенных буферов в секунду.
Bqwriter: Buffers written directly by a backend per secondpgsql.bqwriter.buffers_backend.rateКоличество буферов, записанных backend-процессом в секунду.
Bqwriter: Number of bqwriter cleaning scan stopped per secondpgsql.bqwriter.maxwritten_clean.rateКоличество остановок очистки bqwriter из-за лимита записей.
Bqwriter: Times a backend executed its own fsync per secondpgsql.bqwriter.buffers_backend_fsync.rateКоличество операций fsync, выполненных backend.
Checkpoint: Buffers written by the background writer per secondpgsql.bqwriter.buffers_clean.rateКоличество буферов, очищенных bqwriter.
Checkpoint: Buffers written during checkpoints per secondpgsql.bqwriter.buffers_checkpoint.rateКоличество буферов, записанных во время checkpoint.
Checkpoint: Scheduled per secondpgsql.bqwriter.checkpoints_time.d.rateКоличество плановых checkpoint.
Checkpoint: Requested per secondpgsql.bqwriter.checkpoints_req.rateКоличество checkpoint по запросу.
Checkpoint: Checkpoint write time per secondpgsql.bqwriter.checkpoint_write_time.rateВремя записи checkpoint.
Checkpoint: Checkpoint sync time per secondpgsql.bgwriter.checkpoint_sync_time.rateВремя синхронизации checkpoint.
Archive: Count of archived filespgsql.archive.count_archived_filesКоличество успешно архивированных WAL-файлов.
Dbstat: Conflicts per secondpgsql.dbstat.sum.conflicts.rateКоличество конфликтов за секунду.
Dbstat: Deadlocks per secondpgsql.dbstat.sum.deadlocks.rateКоличество взаимодейников за секунду.
Dbstat: Disk blocks read per secondpgsql.dbstat.sum.blks_read.rateКоличество блоков, прочитанных с диска за секунду.
Dbstat: Hit blocks read per secondpgsql.dbstat.sum.blks_hit.rateКоличество блоков, прочитанных из кэша за секунду.
Dbstat: Number temp bytes per secondpgsql.dbstat.sum.temp_bytes.rateОбъём временных файлов за секунду.
Dbstat: Number temp files per secondpgsql.dbstat.sum.temp_files.rateКоличество временных файлов за секунду.
Dbstat: Roll backed transactions per secondpgsql.dbstat.sum.xact_rollback.rateКоличество откатов транзакций за секунду.
Dbstat: Rows deleted per secondpgsql.dbstat.sum.tup_deleted.rateКоличество удалённых строк за секунду.
Dbstat: Rows fetched per secondpgsql.dbstat.sum.tup_fetched.rateКоличество полученных строк за секунду.
Dbstat: Rows inserted per secondpgsql.dbstat.sum.tup_inserted.rateКоличество вставленных строк за секунду.
Dbstat: Rows returned per secondpgsql.dbstat.sum.tup_returned.rateКоличество возвращённых строк за секунду.
Dbstat: Rows updated per secondpgsql.dbstat.sum.tup_updated.rateКоличество обновлённых строк за секунду.
Dbstat: Backends connectedpgsql.dbstat.sum.numbackendsКоличество активных подключений.
Connections sum: Activepgsql.connections.sum.activeКоличество активных подключений.
Connections sum: Fastpath function callpgsql.connections.sum.fastpath_function_callКоличество подключений, выполняющих fastpath-функции.
Connections sum: Idlepgsql.connections.sum.idleКоличество простаивающих подключений.
Connections sum: Idle in transactionpgsql.connections.sum.idle_in_transactionКоличество подключений в ожидании транзакции.
Connections sum: Preparedpgsql.connections.sum.preparedКоличество подготовленных транзакций.
Connections sum: Totalpgsql.connections.sum.totalОбщее количество подключений.
Connections sum: Total, %pgsql.connections.sum.total_pctПроцент от максимального числа подключений.
Connections sum: Waitingpgsql.connections.sum.waitingКоличество подключений, ожидающих блокировку.
Connections sum: Idle in transaction (aborted)pgsql.connections.sum.idle_in_transaction_abortedКоличество подключений в прерванной транзакции.
Connections sum: Disabledpgsql.connections.sum.disabledКоличество отключённых подключений.
Age of oldest xidpgsql.oldest.xid[«$PG.CONNSTRI NG.AGENT2″],»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}»Возраст самого старого XID.
Count of autovacuum workerspgsql.autovacuum.count[«$PG.CO NNSTRING.AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE }»Количество работающих процессов autovacuum.
Cache hit ratio, %pgsql.cache.hitПроцент попаданий в кэш.
Uptimepgsql.uptime[«$PG.CONNSTRING.A GENT2}», «{$PG.USER}», «{$PG.PASS WORD}», «{$PG.DATABASE}»Время работы PostgreSQL.
Replication: Lag in bytespgsql.replication.lag.b[«{$PG.C ONNSTRING.AGENT2}», «{$PG.USER}» , «{$PG.PASSWORD}», «{$PG.DATABASE}»Задержка репликации в байтах.
Replication: Lag in secondspgsql.replication.lag.sec[«{$PG .CONNSTRING.AGENT2}», «{$PG.USER }», «{$PG.PASSWORD}», «{$PG.DATABASE}»Задержка репликации в секундах.
Replication: Recovery rolepgsql.replication.recovery_role [«{$PG.CONNSTRING.AGENT2}», «{$PG.G.USER}», «{$PG.PASSWORD}», «{$PG.DATABASE}»Роль сервера: primary или standby.
Replication: Standby countpgsql.replication.count[«{$PG.C ONNSTRING.AGENT2}», «{$PG.USER}» , «{$PG.PASSWORD}», «{$PG.DATABASE}»Количество standby-серверов.
Replication: Statuspgsql.replication.status[«{$PG.CONNSTRING.AGENT2}», «{$PG.USER}» , «{$PG.PASSWORD}», «{$PG.DATABASE}»Состояние репликации.
Pingpgsql.ping[«{$PG.CONNSTRING.AGE NT2}», «{$PG.USER}», «{$PG.PASSWORD} RD}», «{$PG.DATABASE}»Проверка доступности PostgreSQL.

6.4. Триггеры PostgreSQL

ИмяВыражение проблемыОписание
PostgreSQL: Version has changedlast(/PostgreSQL by Zabbix agent 2/pgsql.version[«{$PG.CONNSTRING.AGENT 2}», «{$PG.USER}», «{$PG.PASSWORD}», «{$PG.DATABASE}»], #1) <>last(/PostgreSQL by Zabbix agent 2/pgsql.version[«{$PG.CONNSTRING.AGENT 2}», «{$PG.USER}», «{$PG.PASSWORD}», «{$PG.DATABASE}»], #2) and length(last(/PostgreSQL by Zabbix agent 2/pgsql.version[«{$PG.CONNSTRING.AGENT 2}», «{$PG.USER}», «{$PG.PASSWORD}», «{$PG.DATABASE}»])>0Срабатывает при изменении версии PostgreSQL.
PostgreSQL: Dbstat: Checksum failures detectedlast(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.sum.checksum_failures.rate)>0Обнаружение ошибок контрольных сумм.
PostgreSQL: Total number of connections is too highmin(/PostgreSQL by Zabbix agent 2/pgsql.connections.sum.total_pct,5m) > {$PG.CONN_TOTAL_PCT.MAX.WARN}Слишком высокий процент используемых подключений.
PostgreSQL: Oldest xid is too biglast(/PostgreSQL by Zabbix agent 2/pgsql.oldest.xid[«$PG.CONNSTRING.AG ENT2″],»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.DATABASE}») > 18000000Возраст самого старого XID превышает критическое значение.
PostgreSQL: Service has been restartedlast(/PostgreSQL by Zabbix agent 2/pgsql.uptime[«$PG.CONNSTRING.AGENT2 ]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG .DATABASE}») < 10mФиксирует недавний перезапуск PostgreSQL.
PostgreSQL: Service is downlast(/PostgreSQL by Zabbix agent 2/pgsql.ping[«$PG.CONNSTRING.AGENT2]»,»{$PG.USER}»,»{$PG.PASSWORD}»,»{$PG.D ATABASE}») =0PostgreSQL недоступен.

6.5. Прототипы элементов данных Replication discovery

ИмяКлючОписание
Application [{#APPLICATION_NAME}]: Get replicationpgsql.replication.get_metrics[«{#APPLI CATION_NAME}»]Получение сводной информации о репликации.
Application [{#APPLICATION_NAME}]: Replication flush lagpgsql.replication.process.flush_lag[«{#APPLICATION_NAME}»]Задержка репликации на стадии flush.
Application [{#APPLICATION_NAME}]: Replication replay lagpgsql.replication.process.replay_lag[«{#APPLICATION_NAME}»]Задержка репликации на стадии replay.
Application [{#APPLICATION_NAME}]: Replication write lagpgsql.replication.process.write_lag[«{#APPLICATION_NAME}»]Задержка репликации на стадии write.

6.6. Прототипы элементов данных Database discovery

ИмяКлючОписание
DB [#{DBNAME}]: Get dbstatpgsql.dbstat.get_metrics[«{#DBNAME}»]Получение статистики базы данных.
DB [#{DBNAME}]: Get lockspgsql.locks.get_metrics[«#{DBNAME}»]Получение информации о блокировках.
DB [#{DBNAME}]: Get queriespgsql.queries.get_metrics[«#{DBNAME}»]Получение информации о запросах.
DB [#{DBNAME}]: Database agepgsql.db.age[«${PG.CONNSTRING.AGENT2}»,»${PG.USER}»,»${PG.PASSWORD}»,»#{DBNAME}»]Возраст базы данных в транзакциях.
DB [#{DBNAME}]: Bloating tablespgsql.db.boating_tables[«${PG.CONNSTRING.G.AGENT2}»,»${PG.USER}»,»${PG.PASSWORD}»,»#{DBNAME}»]Количество таблиц с раздуванием.
DB [#{DBNAME}]: Database sizepgsql.db.size[«${PG.CONNSTRING.AGENT2}»,»${PG.USER}»,»${PG.PASSWORD}»,»#{DBNAME}»]Размер базы данных в байтах.
DB [#{DBNAME}]: Blocks hit per secondpgsql.dbstat.blks_hit.rate[«#{DBNAME}»]Попадания в кэш в секунду.
DB [#{DBNAME}]: Disk blocks read per secondpgsql.dbstat.blks_read.rate[«#{DBNAME}»]Блоки, прочитанные с диска в секунду.
DB [#{DBNAME}]: Detected conflicts per secondpgsql.dbstat.conflicts.rate[«#{DBNAME}»]Конфликты репликации в секунду.
DB [#{DBNAME}]: Detected deadlocks per secondpgsql.dbstat.deadlocks.rate[«#{DBNAME}»]Взаимоблокировки в секунду.
DB [#{DBNAME}]: Temp_bytes written per secondpgsql.dbstat.temp_bytes.rate[«#{DBNAME}»]Объём временных файлов в секунду.
DB [#{DBNAME}]: Temp_files created per secondpgsql.dbstat.temp_files.rate[«#{DBNAME}»]Количество временных файлов в секунду.
DB [#{DBNAME}]: Tuples deleted per secondpgsql.dbstat.tup_deleted.rate[«{#DBNAME}»]Количество удалённых строк в секунду.
DB [#{DBNAME}]: Tuples fetched per secondpgsql.dbstat.tup_fetched.rate[«{#DBNAME}»]Количество полученных строк в секунду.
DB [#{DBNAME}]: Tuples inserted per secondpgsql.dbstat.tup_inserted.rate[«{#DBNAME}»]Количество вставленных строк в секунду.
DB [#{DBNAME}]: Tuples returned per secondpgsql.dbstat.tup_returned.rate[«{#DBNAME}»]Количество возвращённых строк в секунду.
DB [#{DBNAME}]: Tuples updated per secondpgsql.dbstat.tup_updated.rate[«{#DBNAME}»]Количество обновлённых строк в секунду.
DB [#{DBNAME}]: Commits per secondpgsql.dbstat.xact_commit.rate[«{#DBNAME}»]Количество зафиксированных транзакций в секунду.
DB [#{DBNAME}]: Rollbacks per secondpgsql.dbstat.xact_rollback.rate[«{#DBNAM E}»]Количество откатов транзакций в секунду.
DB [#{DBNAME}]: Backends connectedpgsql.dbstat.numbackends[«{#DBNAME}»]Текущее количество подключений.
DB [#{DBNAME}]: Checksum failurespgsql.dbstat.checksum_failures.rate[«{#DB NAME}»]Количество ошибок контрольных сумм.
DB [#{DBNAME}]: Disk blocks read time per secondpgsql.dbstat.blk_read_time.rate[«{#DBNAM E}»]Время чтения блоков.
DB [#{DBNAME}]: Disk blocks write timepgsql.dbstat.blk_write_time.rate[«{#DBNA ME}»]Время записи блоков.
DB [#{DBNAME}]: Num of accessexclusive lockspgsql.locks.accessexclusive[«{#DBNAME}»]Количество блокировок AccessExclusive.
DB [#{DBNAME}]: Num of accessshare lockspgsql.locks.accessshare[«{#DBNAME}»]Количество блокировок AccessShare.
DB [#{DBNAME}]: Num of exclusive lockspgsql.locks.exclusive[«{#DBNAME}»]Количество блокировок Exclusive.
DB [#{DBNAME}]: Num of rowexclusive lockspgsql.locks.rowexclusive[«{#DBNAME}»]Количество блокировок RowExclusive.
DB [#{DBNAME}]: Num of rowshare lockspgsql.locks.rowshare[«{#DBNAME}»]Количество блокировок RowShare.
DB [#{DBNAME}]: Num of sharerowexclusive lockspgsql.locks.sharerowexclusive[«{#DBNAME}»]Количество блокировок ShareRowExclusive.
DB [#{DBNAME}]: Num of shareupdateexclusive lockspgsql.locks.shareupdateexclusive[«{#DBNAME}ME»]Количество блокировок ShareUpdateExclusive.
DB [#{DBNAME}]: Num of share totalpgsql.locks.share[«{#DBNAME}»]Количество блокировок Share.
DB [#{DBNAME}]: Num of locks totalpgsql.locks.total[«{#DBNAME}»]Общее количество блокировок.
DB [#{DBNAME}]: Queries max maintenance timepgsql.queries.mro.time_max[«{#DBNAME}»]Максимальное время обслуживающего запроса.
DB [#{DBNAME}]: Queries max query timepgsql.queries.query.time_max[«{#DBNAME}»]Максимальное время обычного запроса.
DB [#{DBNAME}]: Queries max transaction timepgsql.queries.tx.time_max[«{#DBNAME}»]Максимальное время транзакционного запроса.
DB [#{DBNAME}]: Queries slow maintenance countpgsql.queries.mro.slow_count[«{#DBNAME}»]Количество медленных обслуживающих запросов.
DB [#{DBNAME}]: Queries slow query countpgsql.queries.query.slow_count[«{#DBNAME}»]Количество медленных обычных запросов.
DB [#{DBNAME}]: Queries slow transaction countpgsql.queries.tx.slow_count[«{#DBNAME}»]Количество медленных транзакций.
DB [#{DBNAME}]: Queries sum maintenance timepgsql.queries.mro.time_sum[«{#DBNAME}»]Суммарное время обслуживающих запросов.
DB [#{DBNAME}]: Queries sum query timepgsql.queries.query.time_sum[«{#DBNAME}»]Суммарное время обычных запросов.
DB [#{DBNAME}]: Queries sum transaction timepgsql.queries.tx.time_sum[«{#DBNAME}»]Суммарное время транзакционных запросов.

6.7. Триггеры Database discovery

ИмяВыражение проблемыОписание
PostgreSQL: DB [{#DBNAME}]: Too many recovery conflictsmin(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.conflicts.rate[«{#DBNAME}» ], 5m) > {$PG.CONFLICTS.MAX.WARN: «{#DBNAME}»}Срабатывает при превышении допустимого количества конфликтов репликации за 5 минут.
PostgreSQL: DB [{#DBNAME}]: Checksum failures detectedlast(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.checksum_failures.rate[«{#DBNAME}»])>0Обнаруживает ошибки контрольных сумм.
PostgreSQL: DB [{#DBNAME}]: Too many slow queriesmin(/PostgreSQL by Zabbix agent 2/pgsql.queries.query.slow_count[«{#DBNAME}»], 5m})>{$PG.SLOW_QUERIES.MAX.WARN: «{#DBNAME}»}Слишком большое количество медленных запросов за 5 минут.

7. Шаблон RabbitMQ cluster

Шаблон предназначен для мониторинга RabbitMQ через Management API.

7.1. Подготовка RabbitMQ

На каждом узле кластера, который необходимо мониторить, должен быть включён Management Plugin.

Шаг 1. Включите Management Plugin

rabbitmq-plugins enable rabbitmq management

Шаг 2. Создайте пользователя для Zabbix

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.

7.2. Макросы RabbitMQ

ИмяОписаниеЗначение по умолчанию
{$RABBITMQ.API.USER}Имя пользователяzbx_monitor
{$RABBITMQ.API.PASSWORD}Пароль пользователяZabbix
{$RABBITMQ.API.CLUSTER_HOST}IP-адрес или доменное имя узла127.0.0.1
{$RABBITMQ.API.PORT}Порт Management API RabbitMQ15672
{$RABBITMQ.API.SCHEME}Протокол подключения к API: http или httpshttp
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES}Регулярное выражение для включения exchange в автоматическое обнаружение*
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES}Регулярное выражение для исключения exchange из обнаруженияCHANGE_IF_NEEDED
Обратите внимание

Пароль пользователя мониторинга необходимо заменить на фактический пароль. Не рекомендуется оставлять значение по умолчанию.

7.3. Элементы данных

ИмяКлючОписание
Get overviewweb.page.get[«{«RBABITMQ.API.SCHEME}://{«RBABITMQ.API.USER}:{«RBABITMQ.API.PASSWORD}@{«RBABITMQ.API.CLUSTER_HOST}:{«RBABITMQ.API.PORT}/api/overview»}Получает общую статистику кластера через HTTP API.
Get exchangesweb.page.get[«{«RBABITMQ.API.SCHEME}://{«RBABITMQ.API.USER}:{«RBABITMQ.API.PASSWORD}@{«RBABITMQ.API.CLUSTER_HOST}:{«RBABITMQ.API.PORT}/api/exchanges»}Получает метрики всех exchange.
Connections totalrabbitmq.overview.object_tot als.connectionsОбщее количество подключений.
Channels totalrabbitmq.overview.object_tot als.channelsОбщее количество каналов.
Queues totalrabbitmq.overview.object_tot als.queuesОбщее количество очередей.
Consumers totalrabbitmq.overview.object_tot als.consumersОбщее количество consumers.
Exchanges totalrabbitmq.overview.object_tot als.exchangesОбщее количество exchange.
Messages totalrabbitmq.overview.queuee_tota ls.messagesОбщее количество сообщений.
Messages ready for deliveryrabbitmq.overview.queuee_tota ls.messages.readyСообщения, ожидающие доставки.
Messages unacknowledgedrabbitmq.overview.queuee_tota ls.messages.unacknowledgedСообщения, которые ещё не подтверждены consumer.
Messages acknowledgedrabbitmq.overview.messages.a ckПодтверждённые consumer сообщения.
Messages acknowledged per secondrabbitmq.overview.messages.a ck.rateСкорость подтверждения сообщений.
Messages confirmedrabbitmq.overview.messages.c onfirmПодтверждённые издателем сообщения.
Messages confirmed per secondrabbitmq.overview.messages.c onfirm.rateСкорость подтверждения издателем.
Messages deliveredrabbitmq.overview.messages.d eliver_getКоличество доставленных сообщений.
Messages delivered per secondrabbitmq.overview.messages.d eliver_get.rateСкорость доставки сообщений.
Messages publishedrabbitmq.overview.messages.p ublishКоличество опубликованных сообщений.
Messages published per secondrabbitmq.overview.messages.p ublish.rateСкорость публикации.
Messages publish_inrabbitmq.overview.messages.p ublish_inКоличество сообщений, опубликованных в exchange.
Messages publish_in per secondrabbitmq.overview.messages.p ublish_in.rateСкорость публикации в exchange.
Messages publish_outrabbitmq.overview.messages.p ublish_outКоличество сообщений, опубликованных из exchange.
Messages publish_out per secondrabbitmq.overview.messages.p ublish_out.rateСкорость публикации из exchange.
Messages returned unrouteablerabbitmq.overview.messages.r eturn_unrouteableКоличество недоставленных сообщений, возвращённых издателю.
Messages returned unrouteable per secondrabbitmq.overview.messages.r eturn_unrouteable.rateСкорость возврата недоставленных сообщений.
Messages returned redeliverrabbitmq.overview.messages.r edeliverКоличество повторно доставленных сообщений.
Messages returned redeliver per secondrabbitmq.overview.messages.r edeliver.rateСкорость повторной доставки.

7.4. Триггеры

ИмяВыражение проблемыОписание
RabbitMQ cluster: Failed to fetch overview datanodata(/RabbitMQ cluster by Zabbix agent/web.page.get[«{$RABBIT MQ.API.SCHEME}://{$RABBITMQ. API.USER}: {$RABBITMQ.API.PASSWORD}@{$R ABBITMQ.API.CLUSTER_HOST}: {$RABBITMQ.API.PORT}/api/ overview»], 30m)=1Zabbix не получал данные от RabbitMQ в течение 30 минут.

7.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}»]При отсутствии активных тревог RabbitMQ возвращает 200 OK. При наличии проблем — 503 Service Unavailable.

7.6. Прототип триггеров Health Check

ИмяВыражение проблемыОписание
RabbitMQ cluster: There are active alarms in the clusterlast(/RabbitMQ cluster by Zabbix agent/web.page.get[«{$RA BBITMQ.API.SCHEME}://{$R ABBITMQ.API.USER}: {$RABBITMQ.API.PASSWORD} @{$RABBITMQ.API.CLUSTER_HOST}: {$RABBITMQ.API.PORT}/api/health/checks/ alarms{#SINGLETON}»])=0Обнаруживает активные аварийные состояния в RabbitMQ.

7.7. Прототип элементов данных Exchanges discovery

Автоматическое обнаружение позволяет создать элементы мониторинга для каждого обнаруженного exchange.

ИмяКлючОписание
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Get datarabbitmq.get_exchanges [{«#VHOST}/{#EXCHANGE}/{#TYPE}» ]Получает метрики конкретного exchange.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages acknowledgedrabbitmq.exchange.messages.ack[«{#VHOST}/{#EXCHANGE}/{#TYPE}» ]Количество подтверждённых consumer сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages acknowledged per secondrabbitmq.exchange.messages.ack.rate[«{#VHOST}/{#EXCHANGE}/{#TYPE}» ]Скорость подтверждения сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages confirmedrabbitmq.exchange.messages.confirm[«{#VHOST}/{#EXCHANGE}/{#TYPE}» ]Количество подтверждённых издателем сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages confirmed per secondrabbitmq.exchange.messages.confirm.rate[«{#VHOST}/{#EXCHANGE}/{#TYPE}» ]Скорость подтверждения издателем.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages deliveredrabbitmq.exchange.messages.deliver_get[«{#VHOST}/{#EXCHANGE}/{#TYPE}» ]Количество доставленных сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages delivered per secondrabbitmq.exchange.messages.deliver_get.rate[«{#VHOST}/{#EXCHANGE}/{#TYPE}» ]Скорость доставки сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages publishedrabbitmq.exchange.messages.publish[«{#VHOST}/{#EXCHANGE}/{#TYPE}» ]Количество опубликованных сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages published per secondrabbitmq.exchange.messages.publish.rate[«{#VHOST}/{#EXCHANGE}/{#TYPE}» ]Скорость публикации сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages publish_inrabbitmq.exchange.messages.publish_in[«{#VHOST}/{#EXCHANGE}/{#TYPE}»Количество сообщений, опубликованных в exchange.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages publish_in per secondrabbitmq.exchange.messages.publish_in.rate[«{#VHOST}/{#EXCHANGE}/{#TYPE}»Скорость публикации в exchange.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages publish_outrabbitmq.exchange.messages.publish_out[«{#VHOST}/{#EXCHANGE}/{#TYPE}»Количество сообщений, опубликованных из exchange.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages publish_out per secondrabbitmq.exchange.messages.publish_out.rate[«{#VHOST}/{#EXCHANGE}/{#TYPE}»Скорость публикации из exchange.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages returned unruptablerabbitmq.exchange.messages.return_unruptable[«{#VHOST}/{#EXCHANGE}/{#TYPE}»Количество недосталенных сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages returned unruptable per secondrabbitmq.exchange.messages.return_unruptable.rate[«{#VHOST}/{#EXCHANGE}/{#TYPE}»Скорость возврата недосталенных сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages redeliveredrabbitmq.exchange.messages.redeliver[«{#VHOST}/{#EXCHANGE}/{#TYPE}»Количество повторно доставленных сообщений.
Exchange [{#VHOST}] [{#EXCHANGE}] [{#TYPE}]: Messages redelivered per secondrabbitmq.exchange.messages.redeliver.rate[«{#VHOST}/{#EXCHANGE}/{#TYPE}»Скорость повторной доставки сообщений.

8. Проверка после настройки

После импорта и настройки шаблонов рекомендуется выполнить следующие проверки.

8.1. CS 2024 single/middle

  1. Узел находится в состоянии Доступен.
  2. Элементы net.tcp.service получают значения.
  3. Элементы proc.num получают значения.
  4. Веб-сценарии выполняются без ошибок.
  5. Триггеры не находятся в состоянии проблемы.

8.2. Gluster Storage.

Проверьте:

  • запускается ли gstatus_discovery.py;
  • обнаруживаются ли узлы и тома;
  • поступают ли значения node_count и nodes_active;
  • корректно ли определяется состояние томов.

8.3. PostgreSQL

Проверьте:

  • загружен ли PostgreSQL-плагин;
  • нет ли ошибок в zabbix_agent2.log;
  • пользователь zbx_monitor может подключиться к PostgreSQL;
  • элементы pgsql.* получают значения;
  • автоматически обнаруживаются базы данных.

8.4. RabbitMQ

Проверьте:

  • включён ли rabbitmq_management;
  • существует ли пользователь zbx_monitor;
  • доступны ли Management API;
  • получают ли значения Get overview и Get exchanges;
  • работает ли Health Check;
  • обнаруживаются ли exchange.

9. Если мониторинг не работает

При проблемах рекомендуется сначала определить, на каком уровне возникает ошибка:

Zabbix → Agent 2 → сервис → порт/API → приложение

9.1. Сервис недоступен

Проверьте:

  1. запущен ли сервис;
  2. открыт ли необходимый порт;
  3. не блокирует ли подключение firewall;
  4. доступен ли сервис с сервера Zabbix.

9.2. Нет данных от Zabbix Agent 2

Проверьте:

  1. запущен ли zabbix-agent2;
  2. корректна ли конфигурация;
  3. загружен ли необходимый плагин;
  4. отсутствуют ли ошибки в журнале агента.

9.3. Веб-сценарий завершается ошибкой

Проверьте:

  1. правильность {$sHEMA};
  2. значение {$DOMAIN};
  3. значения макросов модулей;
  4. логин и пароль пользователя мониторинга;
  5. доступность URL с сервера Zabbix;
  6. HTTP-код ответа.

9.4. PostgreSQL не мониторится

Проверьте:

  1. установлен ли PostgreSQL-плагин;
  2. загружен ли он Zabbix Agent 2;
  3. разрешено ли подключение в pg_hba.conf;
  4. существует ли пользователь zbx_monitor;
  5. выдана ли ему роль pg_monitor.

9.5. RabbitMQ не мониторится

Проверьте:

  1. включён ли rabbitmq_management;
  2. доступен ли порт 15672;
  3. корректны ли логин и пароль;
  4. указан ли правильный {$RABBITMQ.API.CLUSTER_HOST};
  5. доступен ли Management API.

Была ли эта статья полезной?

Поделитесь пожалуйста своим мнением

      В статье есть ошибкиРекомендации не помоглиТекст трудно понятьСодержание статьи не соответствует заголовкуДругое