zabbix 自定义用户key与参数userparameters监控监本输出
zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求。幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据。
定义key有两种修改方式:
vim /etc/zabbix/zabbix_agentd.conf # 进入到配置文件 第一种: 1.找到 UnsafeUserParameters=0 改为 UnsafeUserParameters=1 2.找到 UserParameter= 在下面直接添加用户参数 UserParameter=<key>,<shell command> key:服务器添加监控时需用到的key值 shell command:监控脚本的绝对路径 例:UserParameter=tomcat,/etc/zabbix/alertscripts/tomcat.sh (注意用逗号隔开) 如果要添加多个监控项,就依次写多个UserParameter 第二种: 1.修改自定义key路径 找到 Include=/usr/local/etc/zabbix_agentd.conf.d/ # 在下面添加读取用户参数的文件路径 改为 Include=/etc/zabbix/zabbix_agentd.d/*.conf # 也可以定义其他路径 2.创建配置文件 vim /etcl/zabbix/zabbix_agentd.d/userparameter.conf 添加想要监控的项,比如UserParameter=tomcat,/etc/zabbix/alertscripts/java.sh 多个自定义监控项都可写在这个文件里
配置完成后重启zabbix agent服务
定义配置文件
在/etc/zabbix/zabbix_agentd.d目录下创建一个自定义key和userparameters的配置文件,我定义的文件名字是userparameter_mysql.conf
内容为
# 这个文件监控自定义脚本输出值 # 格式为UserParameter=<key>,<command> # UserParameter=key,脚本路径 #UserParameter=mysql.ping,HOME=/etc/zabbix/ mysqladmin ping | grep -c alive #UserParameter=mysql.version,mysql -V # UserParameter=mysql.status[*],/etc/zabbix/alertscripts/check_mysql.sh $1 UserParameter=mysql.ping,mysqladmin -uzabbix -p'123456' -h127.0.0.1 ping | grep -c alive UserParameter=mysql.version,mysql -V UserParameter=mysql.user_num,/etc/zabbix/alertscripts/mysql_usernum.sh UserParameter=switch_parameters,/etc/zabbix/alertscripts/switch_parameters.sh UserParameter=dynamic_env_temp[*],/etc/zabbix/alertscripts/dynamic_env_temp.sh $1 UserParameter=dynamic_env_hum[*],/etc/zabbix/alertscripts/dynamic_env_humidity.sh $1 UserParameter=switch_cpu,/etc/zabbix/alertscripts/switch_cpu.sh UserParameter=switch_memoryTotal,/etc/zabbix/alertscripts/switch_memoryTotal.sh UserParameter=switch_memoryUsed,/etc/zabbix/alertscripts/switch_memoryUsed.sh UserParameter=switch_memoryPercent,/etc/zabbix/alertscripts/switch_memoryPercent.sh UserParameter=switch_info,/etc/zabbix/alertscripts/switch_info.sh UserParameter=switch_vendorName,/etc/zabbix/alertscripts/switch_vendorName.sh UserParameter=switch_version,/etc/zabbix/alertscripts/switch_version.sh UserParameter=switch_runtime,/etc/zabbix/alertscripts/switch_runtime.sh UserParameter=discovery_gsd_ip_num,/etc/zabbix/alertscripts/discovery.py UserParameter=gsd_ip_num[*],/etc/zabbix/alertscripts/get.py $1
zabbix-agent配置文件路径为/etc/zabbix/zabbix_agentd.conf,有两次需要修改
#1.将UnsafeUserParameters的参数由0改为1 UnsafeUserParameters=1 #2.确定userparameter_switch.conf的配置路径是否正确 Include=/etc/zabbix/zabbix_agentd.d/*.conf
保存之后重启zabbix-agent
systemctl restart zabbix-server zabbix-agent httpd mariadb
测试获取自定义key的值
在zabbix-server上使用zabbix_get工具获取自定义值。
[root@localhost ~]# cd /etc/zabbix/alertscripts/ # 切换到脚本路径下 # 脚本内容,数据库里获取温度数据 dbset="--default-character-set=utf8 -A" #select_sql="select temperature from zabbix.environments where id=10019231" select_sql="select temperature from zabbix.environments where id=$1" result=`mysql -h127.0.0.1 -P3306 -uzabbix -p123456 -Ne "${select_sql}"` echo ${result} # 获取自定义值 [root@localhost alertscripts]# zabbix_get -s 127.0.0.1 -k dynamic_env_temp[10019231] bash: zabbix_get: 未找到命令... # 遇到这个报错说明zabbix_get未安装 # 安装zabbix-get [root@localhost alertscripts]# yum list all |grep zabbix zabbix-release.noarch 4.0-1.el7 installed zabbix-server-mysql.x86_64 4.0.21-2.el7 @zabbix zabbix-agent.x86_64 4.0.44-1.el7 zabbix zabbix-get.x86_64 4.0.44-1.el7 zabbix [root@localhost alertscripts]# yum install zabbix-get.x86_64 # 执行脚本 [root@localhost alertscripts]# zabbix_get -s 127.0.0.1 -k dynamic_env_temp[10019231] 22.1 获取到了上面例子中执行的结果,说明配置是成功的,通过后台是可以获取数据的。 Zabbix在服务器上执行Agent上的脚本时返回Permission denied,在页面上显示该item为"Not Supported" root@ubuntu:zabbix_get -s IP地址 -p 10050 -k key # 报错:sh:脚本: Permission denied # 排查问题: 1、脚本的执行权限、用户组等 2、脚本所在目录的权限,一层层排查 当某个文件或者目录属于某个用户的时候,但是该用户被删除掉之后,会导致文件或目录的的用户:用户组显示为原用户在/etc/passwd中的UID
现在开始再做一些配置,使得其能在前台显示出来
实例1
创建动环模板
在模板里添加监控项,键值是自定义的,如 dynamic_env_temp[{$ENVID}]
添加动环主机
选择刚刚创建的模板
配上模板里需要的参数,如 {$ENVID} = 10019231
配置好后前台就能看到展示信息了
实例2
创建一个脚本(此处可以不写)
zabbix脚本默认的脚本文件在/etc/zabbix/alertscripts目录下,在这个目录下创建一个脚本switch_script.sh,内容为
bw_switch_user=admin1234 echo "${bw_switch_user}" echo "bw_switch_pwd=bw123456@" echo $1 echo $2
在相关主机上添加一个监控项,页面如下
在最新数据里显示界面如下,配置完成
上面用到方法的一些解释
UserParameter=key[*],command
key为唯一值,[*]表示参数。
command为要执行的命令或脚本,key的[*]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令。返回结果数据最大为512KB。
参数禁止使用下列字符:\ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) <> | # @
脚本的命令行参数可以通过搜索引擎搜索相关文章。
转自 http://www.qiansw.com/zabbix-user-parameters-key-script.html