14 Плагины

Обзор

Плагины дают возможность расширить функционал Zabbix. Плагины написаны на языке Go и поддерживаются только Zabbix агентом 2.

Они предоставляют альтернативу подгружаемым модулям (написанным на языке C) и другим методам расширения функциональности Zabbix, таким как пользовательские параметры (метрики агента), внешние проверки (мониторинг без агента) и элемент данных Zabbix агента system.run[].

Следующие функции относятся к Zabbix агенту 2 и его плагинам:

  • поддержка как гибких интервалов, так и интервалов по расписанию как для пассивных, так и для активных проверок;
  • управление очередью задач c учетом расписания и возможности параллельного запуска задач;
  • управление временем ожидания на уровне плагинов;
  • проверка совместимости Zabbix агента 2 и его плагина при запуске.

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

На этой странице перечислены встроенные и подгружаемые плагины, а также описаны принципы настройки плагинов с точки зрения пользователя. Для получения инструкций по написанию своих собственных плагинов, пожалуйста, обратитесь к руководству по разработке плагинов [en]. Для более подробной информации о процессе взаимодействия между Zabbix агентом 2 и подгружаемым плагином, а также процессом сбора метрик, смотрите диаграмму взаимодействия [en].

Настройка плагинов

В этом разделе описаны общие принципы настройки плагинов и рекомендации.

Все плагины настраиваются с использованием параметра Plugins.*, который может быть как частью файла конфигурации Zabbix агента 2, так и частью файла конфигурации самого плагина . Если плагин использует отдельный файл конфигурации, путь к этому файлу необходимо указать в параметре Include файла конфигурации Zabbix агента 2.

Каждый параметр плагина должен иметь следующую структуру:

Plugins.<ИмяПлагина>.<Параметр>=<Значение>

Кроме того, есть две специфичные группы параметров:

  • Plugins.<ИмяПлагина>.Default.<Параметр>=<Значение> используется для определения значений параметров по умолчанию.

  • Plugins.<ИмяПлагина>.<ИмяСессии>.<Параметр>=<Значение> используется для определения отдельных наборов параметров для различных целей мониторинга через именованные сессии.

Все имена параметров должны соответствовать следующим требованиям:

  • рекомендуется начинать названия ваших плагинов с заглавной буквы;
  • параметр должен начинаться с заглавной буквы;
  • специальные символы не разрешены;
  • количество вложенных уровней не ограничено;
  • количество параметров не ограничено.
Именованные сессии

Именованные сессии представляют дополнительный уровень параметров плагина и могут использоваться для определения отдельных наборов параметров аутентификации для каждого наблюдаемого экземпляра. Каждый параметр именованной сессии должен иметь следующую структуру:

Plugins.<ИмяПлагина>.Sessions.<ИмяСессии>.<Параметр>=<Значение>

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

В ключах элементов данных первым параметром может быть либо строка_подключения, либо Uri. Если первый параметр ключа не совпадает ни с каким именем сессии, указанным в файле конфигурации, он будет рассматриваться как Uri. Обратите внимание, что передача встроенных в URI учётных данных не поддерживается, вместо этого рекомендуется использовать именованные сессии.

Список доступных параметров именованных сессий зависит от плагина.

В Zabbix до версии 6.0.17, когда в параметрах ключа указывается строка_подключения (имя сессии), параметры ключа элемента данных для имени пользователя и пароля должны быть пустыми. Значения будут браться из параметров сессии. Если параметр аутентификации для именованной сессии не указан, будет использоваться жёстко заданное значение по умолчанию.

Начиная с Zabbix 6.0.17, вы можете переопределить параметры сессии, указывая новые значения в параметрах ключа элемента данных (смотри пример).

Начиная с Zabbix 6.0.18, если параметр не определён для именованной сессии, Zabbix агент 2 будет использовать значение, определённое в параметрах плагина по умолчанию.

Приоритет параметров

Начиная с версии 6.0.18, плагины Zabbix агента 2 ищут значения относящихся к соединению параметров в следующем порядке:

  1. Первый параметр ключа элемента данных сравнивается с именами сессий. Если совпадений не найдено, он рассматривается как реальное значение, в этом случае шаг 3 пропускается. Если же совпадение найдено, то значение этого параметра (как правило, URI) должно быть определено в параметрах сессии.
  2. Остальные параметры будут браться из ключа элемента данных, если они там есть.
  3. Если параметр ключа элемента данных (например, пароль) не указан, плагин будет искать соответствующий параметр именованной сессии.
  4. Если параметр сессии также не указан, будет использоваться значение, определённое в соответствующих параметрах по умолчанию.
  5. Если всё равно значение определить не удалось, то плагин будет использовать жёстко заданное в коде значение по умолчанию.
Пример 1

Мониторинг двух экземпляров “MySQL1” и “MySQL2”.

Параметры конфигурации:

Plugins.Mysql.Sessions.MySQL1.Uri=tcp://127.0.0.1:3306
       Plugins.Mysql.Sessions.MySQL1.User=mysql1_user
       Plugins.Mysql.Sessions.MySQL1.Password=unique_password
       Plugins.Mysql.Sessions.MySQL2.Uri=tcp://192.0.2.0:3306
       Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
       Plugins.Mysql.Sessions.MySQL2.Password=different_password

В результате таких настроек, каждое имя сессии может использоваться в качестве параметра строка_подключения в ключах элементов данных, например: mysql.ping[MySQL1], mysql.ping[MySQL2]

Пример 2

Предоставление некоторых параметров в ключе элемента данных (поддерживается, начиная с Zabbix 6.0.17).

Параметры конфигурации:

Plugins.Postgres.Sessions.Session1.Uri=tcp://192.0.2.234:5432
       Plugins.Postgres.Sessions.Session1.User=old_username
       Plugins.Postgres.Sessions.Session1.Password=session_password

Ключ элемента данных: pgsql.ping[session1,new_username,,postgres]

В результате таких настроек агент будет подключаться к PostgreSQL, используя следующие параметры:

  • URI из параметров сессии: 192.0.2.234:5432
  • Имя пользователя из ключа элемента данных: new_username
  • Пароль из параметров сессии (так как он опущен в ключе): session_password
  • Имя базы данных из ключа элемента данных: postgres
Пример 3

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

Параметры конфигурации:

Plugins.PostgreSQL.Default.Uri=tcp://192.0.2.234:5432
       Plugins.PostgreSQL.Default.User=zabbix
       Plugins.PostgreSQL.Default.Password=password

Ключ элемента данных: pgsql.ping[,,,postgres]

В результате таких настроек, агент будет подключаться к PostgreSQL, используя следующие параметры:

  • URI по умолчанию: 192.0.2.234:5432
  • Имя пользователя по умолчанию: zabbix
  • Пароль по умолчанию: password
  • Имя базы данных из ключа элемента данных: postgres
Значения по умолчанию

Начиная с версии Zabbix 6.0.18, в конфигурационном файле можно выставить значения по умолчанию для параметров, относящихся к соединению (URI, имя пользователя, пароль и т.д.), в следующем формате:

Plugins.<ИмяПлагина>.Default.<Параметр>=<Значение>

Например: Plugins.Mysql.Default.Username=zabbix, Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017 и т.д.

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

Если элемент данных не имеет никаких параметров, Zabbix агент 2 будет пытаться собрать метрику, используя значения, определённые в секции значений параметров по умолчанию.

Соединения

Некоторые плагины поддерживают сбор метрик с нескольких экземпляров одновременно. Можно наблюдать как локальные, так и удаленные экземпляры. Поддерживаются TCP и Unix-сокет соединения.

Рекомендуется настроить плагины так, чтобы они соединения с экземплярами поддерживали в открытом состоянии. Преимущества - снижение перегрузок в сети, сокращение задержек и использование меньшего объема CPU и памяти из-за меньшего количества соединений. Клиентская библиотека позаботится об этом.

Период времени, в течение которого неиспользуемые соединения должны оставаться открытыми, можно задать параметром Plugins.<ИмяПлагина>.KeepAlive.
Например: Plugins.Memcached.KeepAlive

Плагины

Все метрики, поддерживаемые Zabbix агентом 2, собираются с помощью плагинов.

Встроенные

Следующие плагины для Zabbix агента 2 доступны «из коробки». Нажмите на имя плагина, чтобы перейти к репозиторию плагина с дополнительной информацией.

Имя плагина Описание Поддерживаемые ключи элементов данных Комментарии
Agent Метрики используемого агента Zabbix. agent.hostname, agent.ping, agent.version Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
Ceph Мониторинг Ceph. ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump,
ceph.ping, ceph.pool.discovery, ceph.status
CPU Мониторинг CPU (количество CPU / ядер CPU, обнаруженные CPU, процент использования). system.cpu.discovery, system.cpu.num, system.cpu.util Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
Docker Мониторинг контейнеров Docker. docker.container_info, docker.container_stats, docker.containers, docker.containers.discovery,
docker.data_usage, docker.images, docker.images.discovery, docker.info, docker.ping
Смотрите также:
Параметры конфигурации
File Сбор файловых метрик. vfs.file.cksum, vfs.file.contents, vfs.file.exists, vfs.file.md5sum,
vfs.file.regexp, vfs.file.regmatch, vfs.file.size, vfs.file.time
Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
Kernel Мониторинг ядра. kernel.maxfiles, kernel.maxproc Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
Log Мониторинг файлов журнала. log, log.count, logrt, logrt.count Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.

Смотрите также:
Параметры конфигурации плагина (Unix / Windows)
Memcached Мониторинг Memcached сервера. memcached.ping, memchached.stats
Modbus Чтение данных Modbus. modbus.get Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
MQTT Получение опубликованных значений тем MQTT. mqtt.get Чтобы настроить шифрованное соединение к брокеру MQTT, укажите параметры TLS в конфигурационном файле агента как именованные сессии или параметры по умолчанию. В настоящее время параметры TLS нельзя передать в виде параметров ключа элемента данных.
MySQL Мониторинг MySQL и ее ответвлений. mysql.custom.query, mysql.db.discovery, mysql.db.size, mysql.get_status_variables,
mysql.ping, mysql.replication.discovery, mysql.replication.get_slave_status, mysql.version
Для настройки шифрованного подключения к базе данных используйте именованные сессии и укажите параметры TLS для именованной сессии в файле конфигурации агента. В настоящее время параметры TLS нельзя передать в виде параметров ключа элемента данных.

Ключ элемента данных mysql.custom.query поддерживается с версии Zabbix 6.0.21.
NetIf Мониторинг сетевых интерфейсов. net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
Oracle Мониторинг баз данных Oracle. oracle.diskgroups.stats, oracle.diskgroups.discovery, oracle.archive.info, oracle.archive.discovery,
oracle.cdb.info, oracle.custom.query, oracle.datafiles.stats, oracle.db.discovery,
oracle.fra.stats, oracle.instance.info, oracle.pdb.info, oracle.pdb.discovery,
oracle.pga.stats, oracle.ping, oracle.proc.stats, oracle.redolog.info,
oracle.sga.stats, oracle.sessions.stats, oracle.sys.metrics, oracle.sys.params,
oracle.ts.stats, oracle.ts.discovery, oracle.user.info, oracle.version
Установите Oracle Instant Client перед тем как использовать плагин.
Proc Процент использования CPU. proc.cpu.util Поддерживаемый ключ имеет такие же параметры, что и ключ Zabbix агента.
Redis Мониторинг Redis сервера. redis.config, redis.info, redis.ping, redis.slowlog.count
Smart Мониторинг S.M.A.R.T. smart.attribute.discovery, smart.disk.discovery, smart.disk.get Пользователю, из под которого работает Zabbix агент 2, требуются права доступа sudo/root к smartctl. Минимально требуемая версия smartctl - 7.1.

Поддерживаемые ключи можно использовать только с Zabbix агентом 2 только на Linux/Windows, как пассивными, так и активными проверками.
Смотрите также:
Параметры конфигурации
Swap Размер файла подкачки в байтах / процентах. system.swap.size Поддерживаемый ключ имеет такие же параметры, что и ключ Zabbix агента.
SystemRun Выполнение указанной команды. system.run Поддерживаемый ключ имеет такие же параметры, что и ключ Zabbix агента.

Смотрите также:
Параметры конфигурации плагина (Unix/Windows)
Systemd Мониторинг системных сервисов systemd. systemd.unit.discovery, systemd.unit.get, systemd.unit.info
TCP Проверка доступности TCP-соединения. net.tcp.port Поддерживаемый ключ имеет такие же параметры, что и ключ Zabbix агента.
UDP Мониторинг доступности и производительности сервисов UDP. net.udp.service, net.udp.service.perf Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
Uname Сбор информации о системе. system.hostname, system.sw.arch, system.uname Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
Uptime Сбор метрик времени работы системы. system.uptime Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
VFSDev Сбор метрик VFS. vfs.dev.discovery, vfs.dev.read, vfs.dev.write Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
WebCertificate Мониторинг TLS/SSL сертификатов веб-сайтов. web.certificate.get
WebPage Мониторинг веб-страниц. web.page.get, web.page.perf, web.page.regexp Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
ZabbixAsync Сбор асинхронных метрик. net.tcp.listen, net.udp.listen, sensor, system.boottime, system.cpu.intr, system.cpu.load,
system.cpu.switches, system.hw.cpu, system.hw.macaddr, system.localtime, system.sw.os,
system.swap.in, system.swap.out, vfs.fs.discovery
Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
ZabbixStats Внутренние метрики Zabbix сервера / прокси или количество элементов данных в очереди. zabbix.stats Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
ZabbixSync Сбор синхронных метрик. net.dns, net.dns.record, net.tcp.service, net.tcp.service.perf, proc.mem,
proc.num, system.hw.chassis, system.hw.devices, system.sw.packages,
system.users.num, vfs.dir.count, vfs.dir.size, vfs.fs.get, vfs.fs.inode,
vfs.fs.size, vm.memory.size.
Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.

Подгружаемые

Подгружаемые плагины, когда выполняются с:
- --V --version - печатают версию плагина и информацию о лицензии;
- -h --help - печатают справочную информацию.

Нажмите на имя плагина, чтобы перейти к репозиторию плагина с дополнительной информацией.

Имя плагина Описание Поддерживаемые ключи элементов данных Комментарии
MongoDB Мониторинг серверов и кластеров MongoDB (документоориентированная, распределённая база данных). mongodb.collection.stats, mongodb.collections.discovery, mongodb.collections.usage, mongodb.connpool.stats,
mongodb.db.stats, mongodb.db.discovery, mongodb.jumbo_chunks.count, mongodb.oplog.stats,
mongodb.ping, mongodb.rs.config, mongodb.rs.status, mongodb.server.status,
mongodb.sh.discovery, mongodb.version
Данный плагин является подгружаемым, начиная с версии 6.0.6 (ранее был встроенным). Предварительно скомпилированные бинарные файлы плагина для Windows доступны, начиная с версии Zabbix 6.0.19, и совместимы с предыдущими версиями 6.0.

Для настройки шифрованного подключения к базе данных укажите параметры TLS в файле конфигурации агента как параметры именованной сессии.
Поддерживается в плагинах версий 1.2.1, 6.0.13 и новее1.
В настоящее время параметры TLS нельзя передать в виде параметров ключа элемента данных.

Смотрите также: конфигурационный файл плагина MongoDB.
MSSQL Мониторинг баз данных MSSQL. mssql.availability.group.get, mssql.custom.query, mssql.db.get, mssql.job.status.get, mssql.last.backup.get, mssql.local.db.get, mssql.mirroring.get, mssql.nonlocal.db.get, mssql.perfcounter.get, mssql.ping, mssql.quorum.get, mssql.quorum.member.get, mssql.replica.get, mssql.version Данный плагин поддерживается, начиная с версии 6.0.27. Предварительно скомпилированные бинарные файлы плагина для Windows доступны, начиная с версии Zabbix 6.0.28 и совместимы с версией 6.0.27.

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

Смотрите также: параметры конфигурации плагина MSSQL.
PostgreSQL Мониторинг PostgreSQL и ее ответвлений. pgsql.autovacuum.count, pgsql.archive, pgsql.bgwriter, pgsql.cache.hit, pgsql.connections,
pgsql.custom.query, pgsql.dbstat, pgsql.dbstat.sum, pgsql.db.age, pgsql.db.bloating_tables,
pgsql.db.discovery, pgsql.db.size, pgsql.locks, pgsql.oldest.xid, pgsql.ping, pgsql.queries,
pgsql.replication.count, pgsql.replication.process, pgsql.replication.process.discovery, pgsql.replication.recovery_role, pgsql.replication.status,
pgsql.replication_lag.b, pgsql.replication_lag.sec, pgsql.uptime, pgsql.version, pgsql.wal.stat
Данный плагин является подгружаемым, начиная с версии 6.0.10 (ранее был встроенным). Предварительно скомпилированные бинарные файлы плагина для Windows доступны, начиная с версии Zabbix 6.0.19, и совместимы с предыдущими версиями 6.0.

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

Смотрите также: параметры конфигурации плагина PostgreSQL.

Смотрите также: Создание подгружаемых плагинов.

Примечания

1 - Начиная с версии 6.0.13, подгружаемые плагины стали использовать ту же систему версий, что и сам Zabbix. Как следствие, версия плагина MongoDB поменялась с 1.2.0 на 6.0.13, а версия плагина PostgreSQL изменилась с 1.2.1 на 6.0.13.