插件提供了一种扩展 Zabbix 监控能力的选项。插件使用 Go 编程语言编写,仅受 Zabbix agent 2 支持。
插件可作为 loadable modules(用 C 编写)和 other methods 的替代方案,用于扩展 Zabbix 功能。
以下功能专用于 agent 2 及其插件:
从 Zabbix 6.0 开始,插件无需直接集成到 agent 2 中,可以作为可加载插件添加,从而简化了创建用于收集新监控指标的附加插件的过程。
本页面列出了 Zabbix 原生插件和可加载插件,并从用户角度描述了插件的配置原则。
有关编写自己的插件的说明,请参见 Developer center 和 Example 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=zabbix,Plugins.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。如果以上方法均失败,则插件将使用硬编码的默认值。
监控两个实例“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]
。
在 监控项 密钥中提供部分参数。
配置参数:
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:
使用默认配置参数收集指标。
配置参数:
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:
一些插件支持同时从多个实例收集指标。可以监控本地和远程实例。支持 TCP 和 Unix 套接字连接。
建议将插件配置为保持与实例的连接处于打开状态。这样可以减少网络拥塞、延迟以及由于连接数较少导致的 CPU 和 memory 使用量。客户端库会自动处理这一点。
未使用的连接应保持打开的时间段由 Plugins.<PluginName>.KeepAlive 参数确定。例如:Plugins.Memcached.KeepAlive
所有 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 - 显示帮助信息。