2022 Zabbix中国峰会
2022 Zabbix中国峰会

2 插件

概述

插件提供了扩展 Zabbix 监控功能的选项。插件使用 Go 编程语言编写,仅受 Zabbix agent 2 支持。插件提供了可加载模块(使用 C 编写)的替代方案,以及扩展 Zabbix 功能的其他方法。

以下功能特定于agent 2 及其插件:

  • 支持被动和主动检查的预定和灵活的间隔;
  • 关于计划和任务并发的任务队列管理;
  • 插件级超时;
  • 启动时检查 Zabbix agent 2 及其插件的兼容性。

自 Zabbix 6.0 起,插件不必直接集成到agent 2 中,而是可以作为可加载插件添加,从而更容易创建用于收集新监控指标的附加插件。

本页列出了 Zabbix 原生和可加载的插件,并从用户角度描述了插件配置原则。

有关编写自己的插件的说明和教程,请参阅开发者中心

有关 Zabbix agent 2 与可加载插件之间的通信过程以及指标收集过程的更多信息,请参阅连接图

配置插件

This section provides common plugin configuration principles and best practices. 本节提供常见的插件配置原则和最佳实践。

所有插件都使用Plugins.*参数进行配置,该参数可以是 Zabbix agent 2 配置文件的一部分,也可以是插件自己的配置文件。如果插件使用单独的配置文件,则应在 Zabbix agent 2 配置文件的 Include 参数中指定该文件的路径。

典型的插件参数具有以下结构:

Plugins.<PluginName>.<Parameter>=<Value>

此外,还有两组特定的参数:

  • Plugins.<PluginName>.Default.<Parameter>=<Value> 用于定义默认参数值。

  • Plugins.<PluginName>.<SessionName>.<Parameter>=<Value> 用于通过命名会话为不同的监控目标定义单独的参数集。

所有参数名称均应遵守以下要求:

  • 建议将插件名称大写;
  • 参数应该大写;
  • 不允许有特殊字符;
  • 嵌套不受最大级别的限制;
  • 参数的数量不受限制。

例如,要仅为 Uptime 插件执行没有在代理重启后立即安排更新间隔主动检查,请在配置文件中设置。同样,要为 CPU 插件设置并发检查的自定义限制,请在配置文件中设置。 设置 Plugins.Uptime.System.ForceActiveChecksOnStart=1配置文件. Similarly, to set custom limit for concurrent checks for the CPU plugin, 设置 Plugins.CPU.System.Capacity=N配置文件.

命名会话

命名会话代表插件参数的附加级别,可用于为每个受监控的实例指定单独的身份验证参数集。每个命名会话参数应具有以下结构:

插件.<插件名称>.会话.<会话名称>.<参数>=<值>

会话名称可以用作 connString 项目键参数,而不必单独指定 URI、用户名和/或密码。

在监控项中,第一个参数可以是 connString 或 URI。如果第一个键参数与任何会话名称都不匹配,它将被视为 URI。请注意,不支持在项目键中传递嵌入式 URI 凭据,请改用命名会话参数。

可用的命名会话 参数列表取决于插件。

可以通过在项目键参数中指定新值来覆盖会话参数( 参见示例)。

如果没有为命名会话定义参数,Zabbix 代理 2 将使用默认插件参数中定义的值。

参数优先级

Zabbix agent 2 插件按以下顺序搜索与连接相关的参数值:

  1. 第一个 item 键参数与会话名称进行比较。如果未找到匹配项,则将其视为实际值;在这种情况下,将跳过步骤 3.如果找到匹配项,则必须在命名会话中定义参数值(通常为 URI)。 2.如果已定义,其他参数将从监控项中获取。
  2. 如果某个项目关键参数(例如密码)为空,插件将查找相应命名的会话参数。
  3. 如果会话参数也没有指定,那么将使用相应默认参数中定义的值。
  4. 如果一切都失败了,插件将使用硬编码的默认值。
示例 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

作为此配置的结果,每个会话名称都可以用作监控项key中的 connString ,例如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

监控项 key: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

监控项 key: pgsql.ping[,,,postgres]

此配置的结果是,代理将使用以下参数连接到 PostgreSQL:

  • 默认 URI: 192.0.2.234:5432
  • 默认用户名: zabbix
  • 默认密码: password
  • 来自监控项的数据库名称: postgres
默认值

You can set default values for the connection-related parameters (URI, username, password, etc.) in the configuration file in the format: 您可以在配置文件中设置连接相关参数(URI、用户名、密码等)的默认值,格式如下:

*插件.<插件名称>.默认.<参数>=<值>

例如,Plugins.Mysql.Default.Username=zabbix, Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017, etc.

如果项目键或命名会话参数中未提供此类参数的值,则插件将使用默认值。如果默认参数也未定义,则将使用硬编码默认值。

如果项目键没有任何参数,Zabbix agent 2 将尝试使用默认参数部分中定义的值来收集指标。

连接

一些插件支持同时从多个实例收集指标。可以监控本地和远程实例。支持 TCP 和 Unix 套接字连接。

建议配置插件以保持与实例的连接处于打开状态。这样做的好处是,由于连接数较少,网络拥塞、延迟以及 CPU 和内存使用率会降低。客户端库会处理此问题。

未使用的连接应保持打开的时间段可以通过Plugins.<PluginName>.KeepAlive参数确定。例如:Plugins.Memcached.KeepAlive

插件

Zabbix agent 2 支持的所有指标均由插件收集。

内置

Zabbix Zabbix 2 的以下插件可立即使用。单击插件名称可转到包含更多信息的插件存储库。

插件名称 描述 支持的监控项键 注解
Agent 正在使用的 Zabbix Agent的指标。 agent.hostname, agent.ping, agent.version 支持的密钥具有与 Zabbix agent密钥相同的参数
Ceph Ceph monitoring. ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump,
ceph.ping, ceph.pool.discovery, ceph.status
CPU System 系统 CPU 监控(CPU/CPU 核心数量、发现的 CPU、利用率百分比)。 system.cpu.discovery, system.cpu.num, system.cpu.util 支持的密钥具有与 Zabbix agent 密钥相同的参数参数
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
See also:
Configuration parameters
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 agent 密钥相同的参数参数.
Kernel 内核监控。 kernel.maxfiles, kernel.maxproc 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
Log 日志文件监控。 log, log.count, logrt, logrt.count 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.

See also:
Plugin configuration parameters (Unix/Windows)
Memcached Memcached 服务器监控。 memcached.ping, memcached.stats
Modbus 读取 Modbus 数据。 modbus.get 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
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
parameters.要配置与数据库的加密连接,请将代理配置文件中的 TLS 命名会话默认参数。目前,TLS 参数不能作为项目密钥参数传递。
NetIf 网络接口的监控。 net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
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 Install the Oracle Instant Client before using the plugin. proc.cpu.util 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
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 Sudo/root access rights to smartctl are required for the user executing Zabbix agent 2. The minimum required smartctl version is 7.1.

Supported keys can be used with Zabbix agent 2 only on Linux/Windows, both as a passive and active check.
See also执行 Zabbix 代理 2 的用户需要具有对 smartctl 的 sudo/root 访问权限。所需的最低 smartctl 版本为 7.1。

支持的密钥 只能在 Linux/Windows 上与 Zabbix agent 2 一起使用,既可用作被动检查,也可用作主动检查。另请参阅::
配置参数
SW 已安装程序包的列表。 system.sw.packages, system.sw.packages.get The supported keys have the same parameters as Zabbix agent key.
Swap 交换空间大小(以字节/百分比为单位)。 system.swap.size 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
SystemRun 运行指定的命令。 system.run 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.

另请参阅:
插件配置参数 (Unix/Windows)
Systemd 监控 systemd 服务。 systemd.unit.discovery, systemd.unit.get, systemd.unit.info
TCP TCP 连接可用性检查。 net.tcp.port 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
UDP 监控 UDP 服务的可用性和性能。 net.udp.service, net.udp.service.perf 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
Uname 检索有关系统的信息。 system.hostname, system.sw.arch, system.uname 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
Uptime 系统正常运行时间指标收集。 system.uptime Supported key has the same parameters as Zabbix agent key.
VFSDev VFS 指标收集。 vfs.dev.discovery, vfs.dev.read, vfs.dev.write 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
WebCertificate 监控 TLS/SSL 网站证书。 web.certificate.get
WebPage 网页监控。 web.page.get, web.page.perf, web.page.regexp 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
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 agent 密钥相同的参数参数.
ZabbixStats Zabbix server/proxy内部指标或队列中延迟的项目数。 zabbix.stats 支持的密钥具有与 Zabbix agent 密钥相同的参数参数.
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 agent 密钥相同的参数参数.
可加载

可加载插件,启动时: - -V --version - 打印插件版本和许可证信息; - -h --help - 打印帮助信息。

单击插件名称即可转到包含更多信息的插件存储库。

插件名称 描述 支持的项目键 注释
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 插件配置参数

另请参阅: