2. Плагины

Обзор

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

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

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

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

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

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

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

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

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

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

Типичный параметр плагина имеет следующую структуру:

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

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

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

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

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

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

Например, для того, чтобы активные проверки, не имеющие интервала обновления по расписанию, выполнялись сразу же после перезапуска агента только для плагина Uptime, задайте в файле конфигурации Plugins.Uptime.System.ForceActiveChecksOnStart=1. Аналогично, чтобы задать пользовательский лимит на параллельные проверки для плагина CPU, задайте в файле конфигурации Plugins.CPU.System.Capacity=N.

Значения по умолчанию

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

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

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

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

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

Именованные сессии

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

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

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

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

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

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

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

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

Плагины 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=уникальный_пароль
       Plugins.Mysql.Sessions.MySQL2.Uri=tcp://192.0.2.0:3306
       Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
       Plugins.Mysql.Sessions.MySQL2.Password=другой_пароль

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

Пример 2

Предоставление некоторых параметров в ключе элемента данных.

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

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
Соединения

Некоторые плагины поддерживают сбор метрик с нескольких экземпляров одновременно. Можно наблюдать как локальные, так и удаленные экземпляры. Поддерживаются 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, memcached.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 нельзя передать в виде параметров ключа элемента данных.
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 Для настройки шифрованного подключения к Redis укажите параметры TLS в конфигурационном файле агента как именованные сессии или параметры по умолчанию. Параметры TLS нельзя передать в виде параметров ключа элемента данных. Обратите внимание, что неправильная или иным образом недействительная конфигурация TLS может помешать запуску Zabbix агента 2, поэтому проверьте файлы сертификатов, права и пути перед включением TLS.
Smart Мониторинг S.M.A.R.T. smart.attribute.discovery, smart.disk.discovery, smart.disk.get Минимально требуемая версия smartctl — 7.1.
Пользователю, из под которого работает Zabbix агент 2, требуются права доступа sudo/root к smartctl. Плагин использует только следующие команды:
/usr/sbin/smartctl -a *
/usr/sbin/smartctl --scan *
/usr/sbin/smartctl -j -V

Поддерживаемые ключи можно использовать только с Zabbix агентом 2 только на Linux/Windows, как пассивными, так и активными проверками.
Смотрите также:
Параметры конфигурации
SW Список установленных пакетов. system.sw.packages, system.sw.packages.get Поддерживаемые ключи имеют такие же параметры, что и ключи Zabbix агента.
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 агента.
Подгружаемые

Подгружаемые плагины для Zabbix агента 2 недоступны «из коробки», и их нужно установить отдельно:

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

Имя плагина Описание Поддерживаемые ключи элементов данных Комментарии
Ember+ Мониторинг Ember+. ember.get В настоящее время доступна сборка только из исходного кода (как для Unix, так и для Windows).

Смотрите также Параметры конфигурации плагина Ember+.
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
Для настройки шифрованного подключения к базе данных укажите параметры TLS в файле конфигурации агента как параметры именованной сессии.
В настоящее время параметры 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 Для настройки шифрованного подключения к базе данных укажите параметры 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
Для настройки шифрованного подключения к базе данных укажите параметры TLS в файле конфигурации агента как параметры именованной сессии или по умолчанию.
В настоящее время параметры TLS нельзя передать в виде параметров ключа элемента данных.

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

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