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

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

Обновлено: 02.09.26

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

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

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_80net.tcp.service[http,,80]Проверка статуса службы с использованием TCP-соединения.

Важно

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

Возвращаемое значение:

  • 0 — служба недоступна;
  • 1 — служба запущена.
Статус сервиса nginx_443net.tcp.service[https,,443]
Статус сервиса RabbitMQ-servernet.tcp.service[tcp,,5672]
Статус сервиса redisnet.tcp.service[tcp,,6379]
Статус сервиса cddisk:apinet.tcp.service[tcp,,38033]
Статус сервиса cddisk:apissonet.tcp.service[tcp,,38034]
Статус сервиса cddisk:filestorage_httpnet.tcp.service[http,,11580]
Статус сервиса cddisk:filestorage_tcpnet.tcp.service[tcp,,11581]
Статус сервиса cddisk:processingproc.num[dotnet,,,Processing]Проверка количества процессов.

Возвращаемое значение:

  • целое число.
Статус сервиса cddisk:registrynet.tcp.service[tcp,,7777]Проверка статуса службы с использованием TCP-соединения.

Важно

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

Возвращаемое значение:

  • 0 — служба недоступна;
  • 1 — служба запущена.
Статус сервиса cddisk:searchapinet.tcp.service[tcp,,2664]
Статус сервиса ds:converterproc.num[converter]Проверка количества процессов.

Возвращаемое значение:

  • целое число.
Статус сервиса ds:docservicenet.tcp.service[tcp,,8000]Проверка статуса службы с использованием TCP-соединения.

Важно

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

Возвращаемое значение:

  • 0 — служба недоступна;
  • 1 — служба запущена.
Статус сервиса ds:metricsnet.tcp.service[tcp,,8126]
Статус сервиса PostgreSQLnet.tcp.service[tcp,,5432]

2.3. Описание веб-сценариев

ИмяШагиОписание
Доступность Р7-КалендарьАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Календарь:

URL:

{$SHEMA}://{$CALENDAR}.{$DOMAIN}/

Проверка статуса модулей.

  • указанное в сценарии значение

Требуемые коды состояния:

  • 200
Доступность Р7-УправлениеАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/users

Доступность Р7 Корпоративный сервер 2024Авторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Управление:

URL:

{$SHEMA}://{$CDDISK}.{$DOMAIN}/docs

Доступность Р7-ПочтаАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Почта:

URL:

{$SHEMA}://{$CDMAIL}.{$DOMAIN}/inbox

Доступность Р7-ПроектыАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Проекты:

URL:

{$SHEMA}://{$PROJECTS}.{$DOMAIN}/

Доступность Р7-КонтактыАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Контакты:

URL:

{$SHEMA}://{$CONTACTS}.{$DOMAIN}/organizations

Доступность Сервер документовДоступность Сервер документов:

URL:

{$SHEMA}://{$DS}.{$DOMAIN}/welcome/

Доступность Р7-ГрафикаАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Графика:

URL:

{$SHEMA}://{$DRAW}.{$DOMAIN}/

2.4. Описание триггеров

ИмяВыражение проблемыВыражение восстановленияОписание
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Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу http

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

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Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу https

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

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Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

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Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

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Триггер уведомляет о статусе службы при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

Доступность Р7-Календарьlast(/CS 2024/web.test.fail[Доступность Р7-Календарь])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Календарь],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Управлениеlast(/CS 2024/web.test.fail[Доступность Р7-Управление])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Управление],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Дискlast(/CS 2024/web.test.fail[Доступность Р7-Диск])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Диск],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Почтаlast(/CS 2024/web.test.fail[Доступность Р7-Почта])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Почта],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Проектыlast(/CS 2024/web.test.fail[Доступность Р7-Проекты])=1 or
nodata(/CS 2024/web.test.error[Доступность Р7-Проекты],150s)=0
Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Контактыlast(/CS 2024/web.test.fail[Доступность Р7-Контакты])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Контакты],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Сервер документовlast(/CS 2024/web.test.fail[Доступность Сервер документов])=1 or nodata(/CS 2024/web.test.error[Доступность Сервер документов],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Графикаlast(/CS 2024/web.test.fail[Доступность Р7-Графика])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Графика],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Сервер документов converter не запущенlast(/CS 2024/proc.num[converter])<2 or nodata(/CS 2024/proc.num[converter],150s)=1last(/CS 2024/proc.num[converter])>=3Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • proc.num

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

Сервер документов 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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

Сервер документов 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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

процесс cddisk:apisso не запущен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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

процесс cddisk:api не запущен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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

процесс cddisk:filestorage_http не запущен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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу http

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

процесс cddisk:filestorage_tcp не запущен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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

процесс cddisk:processing не запущен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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • proc.num

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

процесс cddisk:registry не запущен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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

процесс cddisk:searchapi не запущен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Триггер уведомляет о статусе процесса при превышении значений данных в элементе полученных с помощью стандартного ключа агента:

  • net.tcp.service по протоколу tcp

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

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 rawproc.get[dotnet,,R7.Storage.Server.Api.Host.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 space usedswapОбъем использованного 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 sizevsizeОбщий объем виртуальной памяти, выделенной процессу.
R7-CS: Статус HTTP-сервиса APInet.tcp.service[http,,38033]Выполняет проверку доступности TCP-порта 38033, на котором работает HTTP-сервис API.
R7-CS: Статус HTTP-сервиса Filestoragenet.tcp.service[http,,11580]Проверяет доступность HTTP-сервиса Filestorage по порту 11580
R7-CS: Статус TCP-сервиса Filestoragenet.tcp.service[tcp,,11581]Проверяет доступность TCP-сервиса Filestorage по порту 11581
R7-CS: Статус HTTP-сервиса Registrynet.tcp.service[http,,7777]Проверяет доступность HTTP-сервиса Registry по порту 7777
R7-CS: Статус HTTP-сервиса Searchnet.tcp.service[http,,2664]Проверяет доступность HTTP-сервиса поиска (Search) по порту 2664
R7-CS: Статус HTTP-сервиса SSOnet.tcp.service[http,,38034]Проверяет доступность сервиса SSO по порту 38034

3.3. Описание веб-сценариев

ИмяШагиОписание
Доступность Р7-КалендарьАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Календарь:

URL:

{$SHEMA}://{$CALENDAR}.{$DOMAIN}/

Проверка статуса модулей.

    • указанное в сценарии значение
  • Требуемые коды состояния:
    • 200
Доступность Р7-УправлениеАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/users

Доступность Р7 Корпоративный сервер 2024Авторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Управление:

URL:

{$SHEMA}://{$CDDISK}.{$DOMAIN}/docs

Доступность Р7-ПочтаАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Почта:

URL:

{$SHEMA}://{$CDMAIL}.{$DOMAIN}/inbox

Доступность Р7-ПроектыАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Почта:

URL:

{$SHEMA}://{$PROJECTS}.{$DOMAIN}/

Доступность Р7-КонтактыАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Контакты:

URL:

{$SHEMA}://{$CONTACTS}.{$DOMAIN}/organizations

Доступность Сервер документовДоступность Сервер документов:

URL:

{$SHEMA}://{$DS}.{$DOMAIN}/welcome/

Доступность Р7-ГрафикаАвторизация Р7-Управление:

URL:

{$SHEMA}://{$CDADMIN}.{$DOMAIN}/api/v2/auth/login

Доступность Р7-Графика:

URL:

{$SHEMA}://{$DRAW}.{$DOMAIN}/

3.4. Описание триггеров

ИмяВыражение проблемыВыражение восстановленияОписание
Доступность Р7-Календарьlast(/CS 2024/web.test.fail[Доступность Р7-Календарь])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Календарь],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Управлениеlast(/CS 2024/web.test.fail[Доступность Р7-Управление])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Управление],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Дискlast(/CS 2024/web.test.fail[Доступность Р7-Диск])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Диск],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Почтаlast(/CS 2024/web.test.fail[Доступность Р7-Почта])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Почта],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Проектыlast(/CS 2024/web.test.fail[Доступность Р7-Проекты])=1 or
nodata(/CS 2024/web.test.error[Доступность Р7-Проекты],150s)=0
Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Контактыlast(/CS 2024/web.test.fail[Доступность Р7-Контакты])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Контакты],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Сервер документовlast(/CS 2024/web.test.fail[Доступность Сервер документов])=1 or nodata(/CS 2024/web.test.error[Доступность Сервер документов],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Доступность Р7-Графикаlast(/CS 2024/web.test.fail[Доступность Р7-Графика])=1 or nodata(/CS 2024/web.test.error[Доступность Р7-Графика],150s)=0Триггер уведомляет о статусе модуля при превышении значений в элементе данных:

  • web.test.fail
  • web.test.error
Недоступен порт 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-интерфейса
Недоступен порт 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

4. Описание переменных в шаблоне Gluster Storage

4.1. Описание элементов данных

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

4.2. Описание триггеров

ИмяВыражение проблемыОписание
Gluster storage nodes is not onlinelast(/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 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 перешёл в нерабочее состояние и недоступен для операций чтения/записи.

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 bgwriterpgsql.bgwriter["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]Получение полной статистики фонового писателя (bgwriter) 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}"]Получение информации о блокировках (locks) (мастер-элемент)
Custom queriespgsql.custom.query["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}",""]Выполнение пользовательского SQL-запроса (через Custom Query)
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)
WAL: Segments countpgsql.wal.countКоличество WAL-сегментов в директории pg_wal
Bgwriter: Buffers allocated per secondpgsql.bgwriter.buffers_alloc.rateКоличество буферов, выделенных фоновым писателем (bgwriter) за секунду
Bgwriter: Buffers written directly by a backend per secondpgsql.bgwriter.buffers_backend.rateКоличество буферов, записанных напрямую серверным процессом (backend) за секунду
Bgwriter: Number of bgwriter cleaning scan stopped per secondpgsql.bgwriter.maxwritten_clean.rateКоличество раз, когда очистка bgwriter останавливалась из-за превышения лимита записей за секунду
Bgwriter: Times a backend executed its own fsync per secondpgsql.bgwriter.buffers_backend_fsync.rateКоличество раз, когда backend выполнял собственный fsync за секунду
Checkpoint: Buffers written by the background writer per secondpgsql.bgwriter.buffers_clean.rateКоличество буферов, очищенных фоновым писателем (bgwriter) за секунду
Checkpoint: Buffers written during checkpoints per secondpgsql.bgwriter.buffers_checkpoint.rateКоличество буферов, записанных во время контрольных точек (checkpoints) за секунду
Checkpoint: Scheduled per secondpgsql.bgwriter.checkpoints_timed.rateКоличество плановых контрольных точек (по таймеру) за секунду
Checkpoint: Requested per secondpgsql.bgwriter.checkpoints_req.rateКоличество запрошенных контрольных точек (по требованию) за секунду
Checkpoint: Checkpoint write time per secondpgsql.bgwriter.checkpoint_write_time.rateВремя записи контрольных точек (в миллисекундах) за секунду
Checkpoint: Checkpoint sync time per secondpgsql.bgwriter.checkpoint_sync_time.rateВремя синхронизации контрольных точек (в миллисекундах) за секунду
Archive: Count of archived filespgsql.archive.count_archived_filesКоличество успешно заархивированных WAL-файлов
Archive: Count of failed attempts to archive filespgsql.archive.failed_trying_to_archiveКоличество неудачных попыток архивации WAL-файлов
Archive: Count of files in archive_status need to archivepgsql.archive.count_files_to_archiveКоличество WAL-файлов, ожидающих архивации (в статусе ready)
Archive: Size of files need to archivepgsql.archive.size_files_to_archiveОбщий размер WAL-файлов, ожидающих архивации
Dbstat: Blocks read timepgsql.dbstat.sum.blk_read_timeВремя чтения блоков (суммарно по всем БД)
Dbstat: Blocks write timepgsql.dbstat.sum.blk_write_timeВремя записи блоков (суммарно по всем БД)
Dbstat: Checksum failures per secondpgsql.dbstat.sum.checksum_failures.rateКоличество сбоев контрольных сумм (checksum failures) за секунду
Dbstat: Committed transactions per secondpgsql.dbstat.sum.xact_commit.rateКоличество зафиксированных транзакций за секунду
Dbstat: Conflicts per secondpgsql.dbstat.sum.conflicts.rateКоличество конфликтов (например, при репликации) за секунду
Dbstat: Deadlocks per secondpgsql.dbstat.sum.deadlocks.rateКоличество взаимоблокировок (deadlocks) за секунду
Dbstat: Disk blocks read per secondpgsql.dbstat.sum.blks_read.rateКоличество дисковых блоков, прочитанных за секунду
Dbstat: Hit blocks read per secondpgsql.dbstat.sum.blks_hit.rateКоличество блоков, прочитанных из кэша (hit) за секунду
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Количество полученных строк (fetch) за секунду
Dbstat: Rows inserted per secondpgsql.dbstat.sum.tup_inserted.rateКоличество вставленных строк за секунду
Dbstat: Rows returned per secondpgsql.dbstat.sum.tup_returned.rateКоличество возвращённых строк (return) за секунду
Dbstat: Rows updated per secondpgsql.dbstat.sum.tup_updated.rateКоличество обновлённых строк за секунду
Dbstat: Backends connectedpgsql.dbstat.sum.numbackendsКоличество активных подключений (backend-процессов) в данный момент
Connections sum: Activepgsql.connections.sum.activeКоличество активных подключений (выполняют запрос)
Connections sum: Fastpath function callpgsql.connections.sum.fastpath_function_callКоличество подключений, выполняющих fastpath-функции
Connections sum: Idlepgsql.connections.sum.idleКоличество простаивающих подключений (idle)
Connections sum: Idle in transactionpgsql.connections.sum.idle_in_transactionКоличество подключений в режиме ожидания транзакции (idle in transaction)
Connections sum: Preparedpgsql.connections.sum.preparedКоличество подготовленных транзакций (prepared)
Connections sum: Totalpgsql.connections.sum.totalОбщее количество подключений
Connections sum: Total, %pgsql.connections.sum.total_pctПроцент от максимального числа подключений (total_pct)
Connections sum: Waitingpgsql.connections.sum.waitingКоличество подключений, ожидающих блокировку (waiting)
Connections sum: Idle in transaction (aborted)pgsql.connections.sum.idle_in_transaction_abortedКоличество подключений в прерванной транзакции (idle in transaction aborted)
Connections sum: Disabledpgsql.connections.sum.disabledКоличество отключённых (disabled) подключений
Age of oldest xidpgsql.oldest.xid["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]Возраст (в транзакциях) самого старого XID (идентификатора транзакции)
Count of autovacuum workerspgsql.autovacuum.count["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]Количество работающих процессов автовакуума
Cache hit ratio, %pgsql.cache.hitПроцент попаданий в кэш буферов (cache hit ratio)
Uptimepgsql.uptime["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]Время работы экземпляра PostgreSQL (uptime) в секундах
Replication: Lag in bytespgsql.replication.lag.b["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]Задержка репликации в байтах (Lag in bytes)
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.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]Роль сервера репликации (primary / standby)
Replication: Standby countpgsql.replication.count["{$PG.CONNSTRING.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.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]Проверка доступности PostgreSQL (Ping) – возвращает 1, если подключение успешно, иначе 0

5.4. Описание триггеров

ИмяВыражение проблемыОписание
PostgreSQL: Version has changedlast(/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 detectedlast(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.sum.checksum_failures.rate)>0Сигнализирует об обнаружении сбоев контрольных сумм (checksum failures) в базах данных.
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.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]) > 18000000Оповещает, что возраст самого старого идентификатора транзакции (XID) превысил критическое значение (18000000).
PostgreSQL: Service has been restartedlast(/PostgreSQL by Zabbix agent 2/pgsql.uptime["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]) < 10mФиксирует перезапуск сервиса PostgreSQL. Срабатывает, если время работы (uptime) меньше 10 минут.
PostgreSQL: Service is downlast(/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 replicationpgsql.replication.get_metrics["{#APPLICATION_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

5.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.bloating_tables["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]Количество таблиц, страдающих от раздувания (bloat)
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}"]Количество взаимоблокировок (deadlocks) в секунду
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}"]Количество полученных (fetched) строк в секунду
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["{#DBNAME}"]Количество откатов транзакций в секунду
DB [{#DBNAME}]: Backends connectedpgsql.dbstat.numbackends["{#DBNAME}"]Текущее количество активных подключений (бэкендов) к базе данных
DB [{#DBNAME}]: Checksum failurespgsql.dbstat.checksum_failures.rate["{#DBNAME}"]Количество сбоев контрольных сумм страниц данных в секунду
DB [{#DBNAME}]: Disk blocks read time per secondpgsql.dbstat.blk_read_time.rate["{#DBNAME}"]Время чтения блоков данных с диска (в секундах)
DB [{#DBNAME}]: Disk blocks write timepgsql.dbstat.blk_write_time.rate["{#DBNAME}"]Время записи блоков данных на диск (в секундах)
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}"]Количество блокировок уровня ShareUpdateExclusive
DB [{#DBNAME}]: Num of share lockspgsql.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}"]Суммарное время выполнения транзакционных запросов (в миллисекундах)

5.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}"}Срабатывает, когда количество конфликтов репликации (отмен запросов из-за recovery) в базе данных за 5 минут превышает заданный порог (макрос {$PG.CONFLICTS.MAX.WARN:"{#DBNAME}"}). Указывает на возможные проблемы с синхронизацией реплик.
PostgreSQL: DB [{#DBNAME}]: Deadlock occurredmin(/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 detectedlast(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.checksum_failures.rate["{#DBNAME}"])>0Обнаруживает сбои контрольных сумм (checksum failures) в базе данных. Срабатывает при любом положительном значении (скорость >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 минут в базе данных. Порог задаётся макросом {$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 RabbitMQ15672
{$RABBITMQ.API.SCHEME}Протокол подключения к API: http или httpshttp
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES}Регулярное выражение для включения обменников в автоматическое обнаружение (LLD).*
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES}Регулярное выражение для исключения обменников из обнаружения (например, системные или служебные)CHANGE_IF_NEEDED

6.3. Описание элементов данных

ИмяКлючОписание
Get overviewweb.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]Мастер-элемент, получающий общую статистику кластера через HTTP API.
Get exchangesweb.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"]Мастер-элемент, получающий метрики всех обменников через HTTP API.
Connections totalrabbitmq.overview.object_totals.connectionsОбщее количество подключений к кластеру.
Channels totalrabbitmq.overview.object_totals.channelsОбщее количество каналов в кластере.
Queues totalrabbitmq.overview.object_totals.queuesОбщее количество очередей.
Consumers totalrabbitmq.overview.object_totals.consumersОбщее количество потребителей.
Exchanges totalrabbitmq.overview.object_totals.exchangesОбщее количество обменников.
Messages totalrabbitmq.overview.queue_totals.messagesОбщее количество сообщений (готовых к доставке и неподтверждённых).
Messages ready for deliveryrabbitmq.overview.queue_totals.messages.readyКоличество сообщений, готовых к доставке (ожидающих в очереди).
Messages unacknowledgedrabbitmq.overview.queue_totals.messages.unacknowledgedКоличество неподтверждённых сообщений (ещё не подтверждённых потребителем).
Messages acknowledgedrabbitmq.overview.messages.ackКоличество сообщений, доставленных клиентам и подтверждённых ими.
Messages acknowledged per secondrabbitmq.overview.messages.ack.rateСкорость подтверждения сообщений (в секунду).
Messages confirmedrabbitmq.overview.messages.confirmКоличество подтверждённых сообщений (со стороны издателя).
Messages confirmed per secondrabbitmq.overview.messages.confirm.rateСкорость подтверждения сообщений издателем (в секунду).
Messages deliveredrabbitmq.overview.messages.deliver_getСуммарное количество сообщений, доставленных потребителям (включая режимы с подтверждением и без).
Messages delivered per secondrabbitmq.overview.messages.deliver_get.rateСкорость доставки сообщений потребителям (в секунду).
Messages publishedrabbitmq.overview.messages.publishКоличество опубликованных сообщений (всего).
Messages published per secondrabbitmq.overview.messages.publish.rateСкорость публикации сообщений (в секунду).
Messages publish_inrabbitmq.overview.messages.publish_inКоличество сообщений, опубликованных в данный обзор (из каналов).
Messages publish_in per secondrabbitmq.overview.messages.publish_in.rateСкорость публикации сообщений в данный обзор (в секунду).
Messages publish_outrabbitmq.overview.messages.publish_outКоличество сообщений, опубликованных из данного обзора в очереди.
Messages publish_out per secondrabbitmq.overview.messages.publish_out.rateСкорость публикации сообщений из обзора в очереди (в секунду).
Messages returned unroutablerabbitmq.overview.messages.return_unroutableКоличество сообщений, возвращённых издателю как недоставляемые.
Messages returned unroutable per secondrabbitmq.overview.messages.return_unroutable.rateСкорость возврата недоставляемых сообщений (в секунду).
Messages returned redeliverrabbitmq.overview.messages.redeliverКоличество сообщений с флагом повторной доставки (redelivered).
Messages returned redeliver per secondrabbitmq.overview.messages.redeliver.rateСкорость появления сообщений с флагом повторной доставки (в секунду).

6.4. Описание триггеров

ИмяВыражение проблемыОписание
RabbitMQ cluster: Failed to fetch overview datanodata(/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)=1Zabbix не получал никаких данных за последние 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 clusterlast(/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 datarabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Мастер-элемент, получающий метрики конкретного обменника через HTTP API.
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledgedrabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Количество сообщений, доставленных клиентам и подтверждённых ими.
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 [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per secondrabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Скорость публикации сообщений в обменник (в секунду).
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_outrabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Количество сообщений, опубликованных из обменника в очереди.
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per secondrabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Скорость публикации сообщений из обменника в очереди (в секунду).
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutablerabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Количество сообщений, возвращённых издателю как недоставляемые.
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per secondrabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Скорость возврата недоставляемых сообщений (в секунду).
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redeliveredrabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Количество сообщений с флагом повторной доставки (redelivered).
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered per secondrabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]Скорость появления сообщений с флагом повторной доставки (в секунду).

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

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

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