配置参数:插件

请参阅 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

默认值

您可以在配置文件中为连接相关参数(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 凭据,请改用命名会话参数。

可用的 命名会话参数 列表取决于插件。

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

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

参数优先级

Zabbix agent 2 插件按以下顺序查找与连接相关的参数值:

  1. 第一个监控项键参数会与会话名称进行比较。 如果未找到匹配项,则将其视为实际值;在这种情况下,将跳过步骤 3。 如果找到匹配项,则必须在该命名会话中定义该参数值(通常是 URI)。
  2. 其他参数如果已定义,则将从监控项键中获取。
  3. 如果某个监控项键参数(例如 password)为空,插件将查找对应的命名会话参数。
  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

由于此配置,每个会话名称都可以在 监控项键值 中用作 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