有时您可能需要run一个Zabbix未预定义的agent检查项,这正是用户参数发挥作用之处。
您可以编写一个用于获取所需数据的命令,并将其包含在agent configuration file文件中的用户参数('UserParameter'配置参数)里。
用户参数的语法如下:
如您所见,用户参数还包含一个键值。在配置监控项时需要使用该键值。请设置一个便于引用的自定义键值(该键值在一个主机中必须唯一)。
重启agent或使用agent的运行时控制选项来加载新参数,例如:
随后,当configuring an item时,输入键值即可引用您希望执行的用户参数中的命令。
用户参数是由Zabbix agent执行的命令。请注意,在item value preprocessing介入前最多可返回16MB数据。
在UNIX操作系统中,使用/bin/sh作为命令行解释器。用户参数遵循agent检查的超时设置;若达到超时时间,派生的用户参数进程将被终止。
另请参阅:
一个简单的命令:
对于具有“ping”键的监控项,agent将始终返回“1”。
一个更复杂的示例:
如果MySQL服务器处于运行状态,agent 将返回 '1',否则返回 '0'。
灵活的用户参数接受带有键的参数。通过这种方式,一个灵活的用户参数可以作为创建多个 监控项 的基础。
灵活的用户参数具有以下语法:
参数 | 描述 |
---|---|
Key | 唯一的 监控项 键。[*] 表示此键接受括号内的参数。 在配置 监控项 时提供参数。 |
Command | 用于评估键值的命令。 仅适用于灵活的用户参数: 可以在命令中使用位置引用 $1…$9 来引用 监控项 键中的相应参数。 Zabbix 会解析 监控项 键的 [ ] 中包含的参数,并相应地在命令中替换 $1,...,$9。 $0 将被原始命令(在替换 $0,...,$9 之前)替换。 无论位置引用是否包含在双引号 (") 或单引号 (') 中,都会被解析。 要使用未更改的位置引用,请指定双美元符号 - 例如,awk '{print $$2}'。在这种情况下, $$2 在执行命令时实际上会变成 $2 。 |
仅针对灵活的用户参数,Zabbix agent 会搜索并替换带有 $ 符号的位置引用。对于简单的用户参数,不会进行此类引用处理,因此不需要任何 $ 符号的转义。
默认情况下,用户参数中不允许使用某些符号。完整的符号列表请参见 UnsafeUserParameters 文档。
一些非常简单的示例:
我们可以为监控定义无限数量的 监控项,所有具有 ping[something] 格式的监控项。
让我们添加更多的含义!
此参数可用于监控MySQL数据库的可用性。我们可以传递用户名和密码:
如何计算文件中匹配正则表达式的行数?
此参数可用于计算文件中的行数。
命令的返回值是命令产生的标准输出和标准错误输出的组合。
如果某个 监控项 返回的是文本(字符、日志或文本类型的信息),即使产生了标准错误输出,该监控项也不会变为不支持状态。
返回值限制为 16MB(包含尾随空格,超出部分会被截断);同时也适用 文本数据限制 的限制。
返回文本(字符、日志或文本类型的信息)的用户参数也可以返回空格。
如果结果无效,则该 监控项 将变为不支持状态。