通过zabbix_sender实现批量传递key值(备忘)
原文
主题
选择使用zabbix_sender的由来基于业务中需要从MySQL数据库中提取游戏在线人数(5个服务),如果通过zabbix_get方式获取需要执行5次脚本获取,而通过zabbix_sender执行一次脚本可将5个服务的数据批量发送到zabbix trapper更为方便,减少了不必要的脚本执行
配置步骤如下:
1.配置zabbix_agentd.conf 自定义UserParameter
UserParameter=send.online.count.data[*],/home/opt/scripts/online_count.sh $1/etc/init.d/zabbix_agentstop/etc/init.d/zabbix_agentstart
注释: 此步骤的目的是在zabbix server上创建key为send.online.count.data的item用于设置脚本的执行间隔,也可以在zabbix agent服务上设置crontab实现
2.数据获取脚本
#!/bin/bashhost_ip=$1zabbix_server_ip="10.1.1.1"mysql -C -N -h localhost -u geekwolf -pgeekwolf "--execute=select total,dota,war3vs,war3rpg,first_login from online_table;">/tmp/.dataTotal=`cat /tmp/.data |awk '{print $1}'`Dota=`cat /tmp/.data |awk '{print $2}'`War3vs=`cat /tmp/.data |awk '{print $3}'`War3rpg=`cat /tmp/.data |awk '{print $4}'`First_Login=`cat /tmp/.data |awk '{print $5}'` echo "$host_ip online_count[Total] $Total" >/tmp/count.logecho "$host_ip online_count[Dota] $Dota" >>/tmp/count.logecho "$host_ip online_count[War3vs] $War3vs" >>/tmp/count.logecho "$host_ip online_count[War3rpg] $War3rpg" >>/tmp/count.logecho "$host_ip online_count[First_login] $First_Login" >>/tmp/count.logzabbix_sender -z $zabbix_server_ip -i /tmp/count.log &>/dev/null
3.创建模板和项目
A. 创建模板Online_Count_Template
B. 创建项目send.count.data
C. 创建Total监控项,其他略
4. 创建图形