通过zabbix_sender实现批量传递key值(备忘)

时间 2016-10-26 17:58:52  Geekwolf's Blog

原文  http://www.simlinux.com/archives/1748.html

主题 zabbix

选择使用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/.data
Total=`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.log
zabbix_sender -z $zabbix_server_ip -i /tmp/count.log &>/dev/null

3.创建模板和项目

A. 创建模板Online_Count_Template

B. 创建项目send.count.data

eEjmYj6.png!web

C. 创建Total监控项,其他略

Y7vUni2.png!web

4. 创建图形

7NJzqaV.png!web

5. 将模板关联到主机即可(可通过最新数据查看是否有数据上报 )