🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>感谢运维生存时间,原文地址http://www.ttlsa.com/zabbix/zabbix-user-parameters/ ### 为什么要自定义KEY 有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法。我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter. #### 灵活的自定义key: 如下为灵活的用户自定义参数 ```shell UserParameter=key[*],command 1 UserParameter=key[*],command ``` 参数描述 Key唯一. [*]表示里面可以传递多个参数 Command 需要执行的脚本,key的[]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令. #### 注意事项 1. 如果需要使用命令行里面出现$2这种变量,那么你要使用两个$$2,例如awk ’{ print $$2 }’,之前就遇到过这个问题,不停的测试自己脚本输出正常,但是zabbix却拿不到数据,原来是出在这里。为了防止和参数冲突,所以zabbix做了这个规定。 2. zabbix禁止使用一些不安全的参数,如下: \ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @ 3. 从zabbix 2.0开始,zabbix返回文本数据可以是空格。 #### 示例1 ```shell UserParameter=ping[*],echo $1 ping[0] - 将一直返回0 ping[aaa] - 将一直返回 'aaa' ``` #### 示例2 ```shell UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive 如下参数用于监控MYSQL,并且可以传递用户名和密码。 mysql.ping[zabbix,our_password] ``` #### 示例3 ```shell 统计一个文件中有多少行被匹配? UserParameter=wc[*],grep -c "$2" $1 如下方法将会返回文件中出现指定字符的行数 wc[/etc/passwd,root] wc[/etc/services,zabbix] ```