4 用户自定义参数
概述
有时你可能想要运行一个代理检查,它不是用Zabbix预定义的,这时你会用到用户参数来帮忙。
你可以编写一个命令来检索所需的数据,并将其包含在用户参数代理配置文件中 ('UserParameter' 配置参数)。
用户参数具有以下语法:
- UserParameter=<key>,<command>
如你看到的,用户参数还包含一个Key。 一个用户参数包含一个Key。输入你选择的Key,这将很容易引用(它在主机中必须是唯一的)。重新启动代理。
然后,当 配置一个监控项时, 输入要从执行的用户参数中引用该命令的Key。
用户参数是由Zabbix代理执行的命令。最多可以返回512KB的数据。 /bin/sh 在UNIX操作系统下用于命令行解释器。用户参数满足代理检查超时,如果达到超时,则分支用户参数进程终止。
请参考:
用户参数示例
简单的命令:
- UserParameter=ping,echo 1
代理将始终使用'ping'键为一个监控项返回'1'。
一个更复杂的例子:
- UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive
如果MySQL服务器是活动状态,代理将返回'1',否则为0。
灵活的用户参数
灵活的用户参数使用Key接受参数。这样一个灵活的用户参数可以作为创建几个监控项的基础。
灵活的用户参数具有以下语法:
- UserParameter=key[*],command
参数 | 描述 |
---|---|
Key | 唯一的监控项Key。[]定义该Key接收括号内的参数。在配置监控项时给出参数。 |
*Command | 执行命令以评估Key的值。仅适用于灵活的用户参数:你可以使用命令中的位置引用$ 1 … $ 9来引用监控项Key中的相应参数。Zabbix解析监控项Key的[]中包含的参数,并相应地替换$ 1,…,$ 9。$ 0将由原始命令(在扩展$ 0,…,$ 9之前)替换为运行。不管它们是用双引号(“)还是单引号(')括起来,都会解析位置引用。要使用位置引用不变,请指定双美元符号 - 例如,awk'{print $$2}'。 在这种情况下,执行命令时,“$$2”实际上会变成“$2”。 |
使用$符号的位置引用仅由灵活的用户参数搜索并由Zabbix代理替代。对于简单的用户参数,跳过此类引用处理,因此任何$号引用都不是必需的。
默认情况下,用户参数中不允许使用某些符号。请查阅 不安全的用户参数的完整列表文档。
示例 1
有些事情很简单:
- UserParameter=ping[*],echo $1
我们可以定义无限数量的监控项,用于监视所有具有格式ping [something]的设置。
ping[0] - 总是返回 '0'
ping[aaa] - 总是返回 'aaa'
示例 2
让我们增添更多的意义!
- UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive
此参数可用于监视MySQL数据库的可用性。我们可以传递用户名和密码:
- mysql.ping[zabbix,our_password]
示例 3
有多少行匹配文件中的正则表达式?
- UserParameter=wc[*],grep -c "$2" $1
此参数可用于计算文件中的行数。
- wc[/etc/passwd,root]
- wc[/etc/services,zabbix]
命令结果
命令的返回值与标准错误一起按照标准输出。
在标准错误输出的情况下,文本(字符、日志或文本信息类型)监控项将被支持。
返回文本(字符、日志、文本信息类型)的用户参数可以返回空格。 在无效结果的情况下,或执行退出代码不匹配0(零)的监控项将不被支持。