2 插件

概述

插件扩展了 Zabbix agent 2 的监控能力。 它们使用 Go 编程语言编写,作为 可加载模块(使用 C 编写)和 其他方法 的替代方案,用于扩展 Zabbix 功能。

以下功能是 agent 2 及其插件特有的:

  • 适用于被动和主动检查的计划和灵活间隔
  • 考虑调度和任务并发性的任务队列管理
  • 插件级超时
  • 启动时对 Zabbix agent 2 及其插件进行兼容性检查

Zabbix agent 2 支持的所有指标都由插件采集。 本页从用户角度介绍插件配置原则,并列出 Zabbix 提供的内置插件和可加载插件。

自 Zabbix 6.0 起,插件不再需要内置到 agent 2 中。 你可以将它们作为可加载插件添加,从而简化新指标插件的创建。 有关创建你自己的插件的说明,请参见 开发者中心Zabbix agent 2 示例插件

配置插件

本节介绍通用的插件配置原则和最佳实践。

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

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

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

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

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

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

所有参数名称都应符合以下要求:

  • 建议将插件名称首字母大写。
  • 参数应首字母大写。
  • 不允许使用特殊字符。
  • 嵌套层级没有最大限制。
  • 参数数量没有限制。

例如,要仅为 Uptime 插件在 agent 重启后立即执行不具有 Scheduling 更新间隔主动检查,请在配置文件中设置 Plugins.Uptime.System.ForceActiveChecksOnStart=1。 同样地,要为 CPU 插件设置 并发检查的自定义限制,请在配置文件中设置 Plugins.CPU.System.Capacity=N

默认值

您可以在配置file中设置连接相关参数(URI、用户名、密码等)的默认值,格式如下:

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

例如 Plugins.Mysql.Default.Username=zabbixPlugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017 等。

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

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

命名会话

命名会话代表插件参数的附加层级,可用于为每个被监控实例指定独立的认证参数集。 每个命名会话参数应具有以下结构:

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

会话名称可作为connString 监控项键参数使用,无需单独指定URI、用户名和/或密码。

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

可用named session parameters列表取决于具体插件。

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

如果命名会话中未定义某个参数,Zabbix agent 2将使用默认插件参数中定义的值。

参数优先级

Zabbix agent 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.1: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.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]

由于此配置,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

监控项键: 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 的可加载插件默认不提供,需要单独安装:

在安装插件之前,请先查看其 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 插件配置参数
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 - 输出帮助信息。