2 插件
概述
插件扩展了 Zabbix agent 2 的监控能力。 它们使用 Go 编程语言编写,作为 可加载模块(使用 C 编写)和 其他方法 的替代方案,用于扩展 Zabbix 功能。
以下功能是 agent 2 及其插件特有的:
- 适用于被动检查和主动检查的计划和灵活间隔
- 考虑调度和任务并发性的任务队列管理
- 插件级超时
- 启动时对 Zabbix agent 2 及其插件进行兼容性检查
Zabbix agent 2 支持的所有指标都由插件采集。 本页从用户角度介绍插件配置原则,并列出 Zabbix 提供的内置插件和可加载插件。
自 Zabbix 6.0 起,插件不再需要内置到 agent 2 中。 你可以将它们作为可加载插件添加,从而简化新指标插件的创建。 有关创建你自己的插件的说明,请参见 开发者中心 和 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 插件执行没有在agent 重启后立即安排更新间隔的主动检查,请在配置文件中设置。同样,要为 CPU 插件设置并发检查的自定义限制,请在配置文件中设置。
设置 Plugins.Uptime.System.ForceActiveChecksOnStart=1 在 配置文件。
相似的,设置自定义限制为 并行检查 对于 CPU 插件,
设置 Plugins.CPU.System.Capacity=N 在 配置文件.
默认值
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 将尝试使用默认参数部分中定义的值来收集指标。
命名会话
命名会话代表插件参数的附加级别,可用于为每个受监控的实例指定单独的身份验证参数集。每个命名会话参数应具有以下结构:
插件.<插件名称>.会话.<会话名称>.<参数>=<值>
会话名称可以用作 connString 项目键参数,而不必单独指定 URI、用户名和/或密码。
在监控项中,第一个参数可以是 connString 或 URI。如果第一个键参数与任何会话名称都不匹配,它将被视为 URI。请注意,不支持在项目键中传递嵌入式 URI 凭据,请改用命名会话参数。
可用的命名会话 参数列表取决于插件。
可以通过在项目键参数中指定新值来覆盖会话参数( 参见示例)。
如果没有为命名会话定义参数,Zabbix agent2 将使用默认插件参数中定义的值。
参数优先级
Zabbix agent 2 插件按以下顺序搜索与连接相关的参数值:

- 第一个 item 键参数与会话名称进行比较。如果未找到匹配项,则将其视为实际值;在这种情况下,将跳过步骤 3.如果找到匹配项,则必须在命名会话中定义参数值(通常为 URI)。 2.如果已定义,其他参数将从监控项中获取。
- 如果某个项目关键参数(例如密码)为空,插件将查找相应命名的会话参数。
- 如果会话参数也没有指定,那么将使用相应默认参数中定义的值。
- 如果一切都失败了,插件将使用硬编码的默认值。
示例 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.1:3306
Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
Plugins.Mysql.Sessions.MySQL2.Password=different_password
由于此配置,每个会话名称都可以在 监控项键值 中用作 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]
此配置的结果是,agent 将使用以下参数连接到 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]
此配置的结果是,agent 将使用以下参数连接到 PostgreSQL:
- 默认 URI: 192.0.2.234:5432
- 默认用户名: zabbix
- 默认密码: password
- 来自监控项的数据库名称: postgres
连接
某些插件支持同时从多个实例收集指标。 本地和远程实例都可以被监控。 支持 TCP 和 Unix 套接字连接。
建议将插件配置为保持与实例的连接处于打开状态。 这样做的好处是,由于连接数量更少,可以减少网络拥塞、延迟以及 CPU 和内存使用。 客户端库会负责处理这一点。
未使用连接应保持打开状态的时间段可通过 Plugins.<PluginName>.KeepAlive 参数确定。 示例:Plugins.Memcached.KeepAlive
内置插件
Zabbix agent 2 内置插件开箱即用。 单击插件名称可跳转到插件仓库,查看附加信息。
| 插件名称 | 说明 | 支持的监控项键值 | 备注 |
|---|---|---|---|
| Agent | 正在使用的 Zabbix agent 的指标。 | agent.hostname, agent.ping, agent.version | 支持的键值与 Zabbix agent 键值的参数相同。 |
| 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 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 |
另请参见: 配置参数 |
| 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 键值的参数相同。 另请参见: 插件配置参数(Unix/Windows) |
| Memcached | Memcached 服务器监控。 | memcached.ping, memcached.stats | |
| Modbus | 读取 Modbus 数据。 | modbus.get | 支持的键值与 Zabbix agent 键值的参数相同。 |
| MQTT | 接收已发布的 MQTT 主题值。 | mqtt.get | 要为 MQTT broker 配置加密连接,请在 agent 配置文件中将 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 |
要为数据库配置加密连接,请在 agent 配置文件中将 TLS 参数指定为 命名会话或默认参数。目前 TLS 参数不能作为监控项键值参数传递。 |
| NetIf | 网络接口监控。 | net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total | 支持的键值与 Zabbix agent 键值的参数相同。 |
| 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 agent 键值的参数相同。 |
| Redis | Redis 服务器监控。 | redis.config, redis.info, redis.ping, redis.slowlog.count | 要为 Redis 配置加密连接,请在 agent 配置文件中将 TLS 参数指定为 命名会话或默认参数。TLS 参数不能作为监控项键值参数传递。请注意,不正确或无效的 TLS 配置可能会导致 Zabbix agent 2 无法启动,因此在启用 TLS 之前,请先验证证书文件、权限和路径。 |
| Smart | S.M.A.R.T. 监控。 | smart.attribute.discovery, smart.disk.discovery, smart.disk.get | 所需的 smartctl 最低版本为 7.1。 运行 Zabbix agent 2 的用户需要具备 smartctl 的 sudo/root 访问权限。该插件仅使用以下命令: /usr/sbin/smartctl -a */usr/sbin/smartctl --scan * /usr/sbin/smartctl -j -V 支持的键值仅可在 Linux/Windows 上与 Zabbix agent 2 一起使用,且可作为被动检查和主动检查使用。 另请参见: 配置参数 |
| SW | 已安装软件包列表。 | system.sw.packages, system.sw.packages.get | 支持的键值与 Zabbix agent 键值的参数相同。 |
| 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 | 支持的键值与 Zabbix agent 键值的参数相同。 |
| 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 服务器/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 键值的参数相同。 |
可加载插件
Zabbix agent 2 的可加载插件默认不提供,需要单独安装:
- 在 Linux 上,您可以使用 软件包(例如,在 Ubuntu 上通过
apt install zabbix-agent2-plugin-ember-plus安装 Ember+)或 构建插件 - 在 Windows 上,您可以 从 MSI 安装 或 构建插件
在安装插件之前,请先查看其 README 文件。 其中可能包含特定要求和安装说明。
点击插件名称可进入插件仓库,其中包含带有更多信息的插件 README 文件。
| 插件名称 | 描述 | 支持的监控项键值 | 备注 |
|---|---|---|---|
| Ember+ | 监控 Ember+。 | ember.get | 另请参见 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 |
要配置到数据库的加密连接,请在 agent 配置文件中将 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 | 要配置到数据库的加密连接,请在 agent 配置文件中将 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 |
要配置到数据库的加密连接,请在 agent 配置文件中将 TLS 参数指定为 命名会话 或 默认 参数。目前,TLS 参数不能作为监控项键值参数传递。 另请参见 PostgreSQL 插件配置参数。 |
可加载插件在使用以下参数启动时:
-V --version- 打印插件版本和许可证信息;-h --help- 打印帮助信息。