2 Плагины
Обзор
Плагины расширяют возможности мониторинга Zabbix агент 2. Написанные на языке программирования Go, они предоставляют альтернативу загружаемым модулям (написанным на C) и другим методам расширения функциональности Zabbix.
Эти возможности относятся только к агент 2 и его плагинам:
- Плановые и гибкие интервалы как для пассивных, так и для активных проверок
- Управление очередью задач с учетом расписания и параллельного выполнения задач
- Тайм-ауты на уровне плагина
- Проверка совместимости Zabbix агент 2 и его плагинов при запуске
Все метрики, поддерживаемые Zabbix агент 2, собираются плагинами. На этой странице описаны принципы настройки плагинов с точки зрения пользователя, а также перечислены как встроенные, так и загружаемые плагины, предоставляемые Zabbix.
Начиная с Zabbix 6.0, плагины больше не требуется встраивать в агент 2. Их можно добавлять как загружаемые плагины, что упрощает создание плагинов для новых метрик. Инструкции по созданию собственных плагинов см. в центре для разработчиков и примере плагина для Zabbix агент 2.
Настройка плагинов
В этом разделе приведены общие принципы настройки плагинов и рекомендации по их использованию.
Все плагины настраиваются с помощью параметра Plugins.*, который может быть частью файла конфигурации Zabbix агент 2 или собственного файла конфигурации плагина. Если плагин использует отдельный файл конфигурации, путь к этому файлу должен быть указан в параметре Include файла конфигурации Zabbix агент 2.
Типичный параметр плагина имеет следующую структуру:
Plugins.<PluginName>.<Parameter>=<Value>
Кроме того, существуют две специальные группы параметров:
-
Plugins.<PluginName>.Default.<Parameter>=<Value> используется для определения значений параметров по умолчанию.
-
Plugins.<PluginName>.<SessionName>.<Parameter>=<Value> используется для определения отдельных наборов параметров для разных целей мониторинга с помощью именованных сессий.
Все имена параметров должны соответствовать следующим требованиям:
- рекомендуется писать имена ваших плагинов с заглавной буквы
- имя параметра должно начинаться с заглавной буквы
- специальные символы не допускаются
- уровень вложенности не ограничен
- количество параметров не ограничено
Например, чтобы выполнять активные проверки, у которых отсутствует интервал обновления Scheduling, сразу после перезапуска агента только для плагина Uptime, задайте Plugins.Uptime.System.ForceActiveChecksOnStart=1 в файле конфигурации.
Аналогично, чтобы задать пользовательское ограничение для параллельных проверок для плагина CPU, укажите Plugins.CPU.System.Capacity=N в файле конфигурации.
Значения по умолчанию
Вы можете задать значения по умолчанию для параметров, связанных с подключением (URI, имя пользователя, пароль и т. д.), в файле конфигурации в формате:
Plugins.<PluginName>.Default.<Parameter>=<Value>
Например, Plugins.Mysql.Default.Username=zabbix, Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017 и т. д.
Если значение такого параметра не указано в ключе элемента данных или в параметрах именованной сессии, плагин будет использовать значение по умолчанию. Если параметр по умолчанию также не определен, будут использованы жестко заданные значения по умолчанию.
Если ключ элемента данных не содержит никаких параметров, Zabbix агент 2 попытается собрать метрику, используя значения, определенные в разделе параметров по умолчанию.
Именованные сессии
Именованные сессии представляют собой дополнительный уровень параметров плагина и могут использоваться для указания отдельных наборов параметров аутентификации для каждого из контролируемых экземпляров. Каждый параметр именованной сессии должен иметь следующую структуру:
Plugins.<PluginName>.Sessions.<SessionName>.<Parameter>=<Value>
Имя сессии может использоваться в качестве параметра ключа элемента данных connString вместо отдельного указания URI, имени пользователя и/или пароля.
В ключах элементов данных первый параметр может быть либо connString, либо URI. Если первый параметр ключа не соответствует ни одному имени сессии, он будет интерпретирован как URI. Обратите внимание, что передача встроенных учетных данных URI в ключе элемента данных не поддерживается; вместо этого используйте параметры именованной сессии.
Список доступных параметров именованной сессии зависит от плагина.
Параметры сессии можно переопределить, указав новые значения в параметрах ключа элемента данных (см. пример).
Если параметр не определен для именованной сессии, Zabbix агент 2 будет использовать значение, заданное в параметре плагина по умолчанию.
Приоритет параметров
Плагины Zabbix агент 2 ищут значения параметров, связанных с подключением, в следующем порядке:

- Первый параметр ключа элемента данных сравнивается с именами сессий. Если совпадение не найдено, он рассматривается как фактическое значение; в этом случае шаг 3 будет пропущен. Если совпадение найдено, значение параметра (обычно URI) должно быть определено в именованной сессии.
- Остальные параметры будут взяты из ключа элемента данных, если они определены.
- Если параметр ключа элемента данных (например, пароль) пуст, плагин будет искать соответствующий параметр именованной сессии.
- Если параметр сессии также не указан, будет использовано значение, заданное в соответствующем параметре по умолчанию.
- Если ничего из перечисленного не сработает, плагин использует жестко заданное значение по умолчанию.
Пример 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
В результате такой конфигурации каждое имя сессии может использоваться как connString в ключе элемента данных, например, mysql.ping[MySQL1] или mysql.ping[MySQL2].
Пример 2
Указание некоторых параметров в ключе элемента данных.
Параметры конфигурации:
Plugins.PostgreSQL.Sessions.Session1.Uri=tcp://192.0.2.234:5432
Plugins.PostgreSQL.Sessions.Session1.User=old_username
Plugins.PostgreSQL.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.<PluginName>.KeepAlive. Пример: Plugins.Memcached.KeepAlive
Встроенные плагины
Встроенные плагины Zabbix агент 2 доступны сразу после установки. Нажмите на имя плагина, чтобы перейти в репозиторий плагина с дополнительной информацией.
| Имя плагина | Описание | Поддерживаемые ключи элементов данных | Комментарии |
|---|---|---|---|
| Agent | Метрики используемого Zabbix агента. | agent.hostname, agent.ping, agent.version | Поддерживаемые ключи имеют те же параметры, что и ключи Zabbix агента. |
| 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 broker, укажите параметры 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 Database. | 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 недоступны «из коробки» и должны устанавливаться отдельно:
- В Linux вы можете использовать пакеты (например, установить Ember+ в Ubuntu с помощью
apt install zabbix-agent2-plugin-ember-plus) или собрать плагины - В Windows вы можете установить из MSI или собрать плагины
Перед установкой плагина, пожалуйста, проверьте его файл README. Он может содержать специальные требования и инструкции по установке.
Нажмите на имя плагина, чтобы перейти в репозиторий плагина, который содержит файл README плагина с дополнительной информацией.
| Название плагина | Описание | Поддерживаемые ключи элементов данных | Комментарии |
|---|---|---|---|
| Ceph | Мониторинг Ceph. | ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump, ceph.ping, ceph.pool.discovery, ceph.status |
См. также параметры конфигурирования плагина Ceph. |
| Ember+ | Мониторинг Ember+. | ember.get | См. также параметры конфигурирования плагина Ember+. |
| MongoDB | Мониторинг серверов и кластеров MongoDB (документо-ориентированная распределенная база данных). | mongodb.cfg.discovery, 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. |
| NVIDIA GPU | Мониторинг NVIDIA GPU. | nvml.device.count, nvml.device.decoder.utilization, nvml.device.ecc.mode, nvml.device.encoder.stats.get, nvml.device.encoder.utilization, nvml.device.energy.consumption, nvml.device.errors.memory, nvml.device.errors.register, nvml.device.fan.speed.avg, nvml.device.get, nvml.device.graphics.frequency, nvml.device.memory.bar1.get, nvml.device.memory.fb.get, nvml.device.memory.frequency, nvml.device.pci.utilization, nvml.device.performance.state, nvml.device.power.limit, nvml.device.power.usage, nvml.device.serial, nvml.device.sm.frequency, nvml.device.temperature, nvml.device.utilization, nvml.device.video.frequency, nvml.system.driver.version, nvml.version | См. также параметры конфигурирования плагина NVIDIA GPU. |
| 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— выводят справочную информацию.-t, --test <item key>— запускают плагин для тестирования (конфигурация плагина игнорируется).