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

2 插件

概述

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

以下特性为agent 2及其插件所特有:

  • 支持被动检查和主动检查的计划任务与灵活间隔
  • 基于任务调度和并发性的任务队列管理
  • 插件级超时控制
  • 启动时对Zabbix agent 2及其插件的兼容性检查

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

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

关于编写自定义插件的指导,请参阅Developer centerExample plugin for Zabbix agent 2

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

配置插件

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

所有插件均通过Plugins.*参数进行配置,这些参数可以是Zabbix agent 2configuration file的组成部分,也可以是插件自身的configuration file。 若插件使用独立的file配置文件,则应在Zabbix agent 2的file配置文件中通过Include参数指定该文件路径。

典型插件参数结构如下:

Plugins.<插件名称>.<参数>=<值>

此外还存在两类特殊参数组:

  • Plugins.<插件名称>.Default.<参数>=<值> 用于定义默认参数值

  • Plugins.<插件名称>.<会话名称>.<参数>=<值> 用于通过命名会话为不同监控目标定义独立参数集

所有参数命名需符合以下要求:

  • 建议插件名称采用首字母大写
  • 参数名称应大写
  • 不允许使用特殊字符
  • 嵌套层级不受限制
  • 参数数量无限制

例如,若需在agent重启后立即执行没有Schedulingupdate interval被动与主动检查(仅针对Uptime插件),请在configuration file中设置Plugins.Uptime.System.ForceActiveChecksOnStart=1。 同理,要为CPU插件设置检查并发性的自定义限制,请在configuration file中配置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.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

内置

以下插件可用于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核心数、发现的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 要配置到Redis的加密连接,需在agent配置file中指定TLS参数作为命名会话默认值参数。TLS参数不能作为监控项键参数传递。注意错误或无效的TLS配置可能导致Zabbix agent 2无法启动,因此在启用TLS前请确保证书文件、权限和路径正确。
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 - 打印帮助信息