这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.

2 插件

概述

插件提供了一种扩展 Zabbix 监控能力的选项。插件使用 Go 编程语言编写,仅受 Zabbix agent 2 支持。
插件可作为 loadable modules(用 C 编写)和 other methods 的替代方案,用于扩展 Zabbix 功能。

以下功能专用于 agent 2 及其插件:

  • 支持被动检查和主动检查的定时和灵活间隔;
  • 根据调度和任务并发性进行任务队列管理;
  • 插件级别的超时;
  • Zabbix agent 2 及其插件在启动时的兼容性检查。

从 Zabbix 6.0 开始,插件无需直接集成到 agent 2 中,可以作为可加载插件添加,从而简化了创建用于收集新监控指标的附加插件的过程。

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

有关编写自己的插件的说明,请参见 Developer centerExample plugin for Zabbix agent 2

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

配置插件

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

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

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

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

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

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

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

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

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

例如,若希望仅对 Uptime 插件,在 agent 重启后立即执行没有 Scheduling update interval被动与主动检查, 请在 configuration file 中设置 Plugins.Uptime.System.ForceActiveChecksOnStart=1。 同样,若希望为 CPU 插件设置自定义的 检查并发性 限制, 请在 configuration file 中设置 Plugins.CPU.System.Capacity=N

默认值

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

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.0:3306
       Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
       Plugins.Mysql.Sessions.MySQL2.Password=different_password

此配置的结果是,每个会话名称都可以用作item 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

Item 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

Item key: pgsql.ping[,,,postgres]

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

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

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

建议将插件配置为保持与实例的连接处于打开状态。这样可以减少网络拥塞、延迟以及由于连接数较少导致的 CPU 和 memory 使用量。客户端库会自动处理这一点。

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

Plugins

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

内置

以下插件适用于Zabbix agent 2,开箱即用。点击插件名称可前往插件仓库获取更多信息。

插件名称 描述 Supported item keys 评论
Agent 正在使用的Zabbix agent的指标。 agent.hostname, agent.ping, agent.version 支持的键具有与Zabbix agent相同的参数 keys
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、使用率百分比)。 system.cpu.discovery, system.cpu.num, system.cpu.util 支持的键具有与Zabbix agent相同的参数 keys
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
另请参阅:
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相同的参数 keys
Kernel 内核监控。 kernel.maxfiles, kernel.maxproc 支持的键具有与Zabbix agent相同的参数 keys
Log 日志file监控。 log, log.count, logrt, logrt.count 支持的键具有与Zabbix agent相同的参数 keys

另请参阅:
插件配置参数 (Unix/Windows)
Memcached Memcached服务器监控。 memcached.ping, memcached.stats
Modbus 读取Modbus数据。 modbus.get 支持的键具有与Zabbix agent相同的参数 keys
MQTT 接收MQTT主题发布的值。 mqtt.get 要配置到MQTT代理的加密连接,请在agent配置file中指定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配置file中指定TLS参数为命名会话默认参数。目前,TLS参数不能作为监控项键参数传递。
NetIf 网络接口监控。 net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total 支持的键具有与Zabbix agent相同的参数 keys
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 agent相同的参数 key
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 最低要求的smartctl version为7.1。
执行Zabbix agent 2的用户需要具有对smartctl的sudo/root访问权限。插件仅使用以下命令:
/usr/sbin/smartctl -a *
/usr/sbin/smartctl --scan *
/usr/sbin/smartctl -j -V

支持的keys只能在Linux/Windows上与Zabbix agent 2一起使用,无论是被动检查还是主动检查。
另请参阅:
Configuration parameters
SW 已安装软件包列表。 system.sw.packages, system.sw.packages.get 支持的键具有与Zabbix agent相同的参数 key
Swap 交换空间大小(字节/百分比)。 system.swap.size 支持的键具有与Zabbix agent相同的参数 key
SystemRun 执行指定命令。 system.run 支持的键具有与Zabbix agent相同的参数 key

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

Zabbix agent 2 的可加载插件并非开箱即用,需要单独安装:

点击插件名称可前往插件仓库查看更多信息。

插件名称 描述 支持的 监控项 键 备注
Ember+ Ember+ 的监控。 ember.get 当前仅支持从源码构建(适用于 Unix 和 Windows)。

另请参见 参数
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 配置 file 中将 TLS 参数指定为 命名会话 参数。
目前,TLS 参数不能作为 监控项 键参数传递。

另请参见 参数
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 配置 file 中将 TLS 参数指定为 命名会话默认 参数。
目前,TLS 参数不能作为 监控项 键参数传递。

另请参见 参数
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 配置 file 中将 TLS 参数指定为 命名会话默认 参数。
目前,TLS 参数不能作为 监控项 键参数传递。

另请参见 参数

启动可加载插件时使用以下参数:
- -V --version - 显示插件 version 和许可证信息;
- -h --help - 显示帮助信息。