7 插件的配置参数

请参阅 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.0: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-socket 连接。

建议将插件配置为保持与实例的连接处于打开状态。 这样做的好处是,由于连接数量减少,可降低网络拥塞、延迟以及 CPU 和内存使用率。 客户端库会处理这一点。

未使用连接应保持打开状态的时间段可通过 Plugins.<PluginName>.KeepAlive 参数确定。 示例:Plugins.Memcached.KeepAlive