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

选择使用zabbix_sender的由来基于业务中需要从MySQL数据库中提取游戏在线人数(5个服务),如果通过zabbix_get方式获取需要执行5次脚本获取,而通过zabbix_sender执行一次脚本可将5个服务的数据批量发送到zabbix trapper更为方便,减少了不必要的脚本执行

配置步骤如下:

1.配置zabbix_agentd.conf 自定义UserParameter

1
2
3
UserParameter=send.online.count.data[*],/home/opt/scripts/online_count.sh $1
/etc/init.d/zabbix_agent stop
/etc/init.d/zabbix_agent start

注释: 此步骤的目的是在zabbix server上创建key为send.online.count.data的item用于设置脚本的执行间隔,也可以在zabbix agent服务上设置crontab实现

2.数据获取脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
host_ip=$1
zabbix_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.log
echo "$host_ip online_count[Dota] $Dota" >>/tmp/count.log
echo "$host_ip online_count[War3vs] $War3vs" >>/tmp/count.log
echo "$host_ip online_count[War3rpg] $War3rpg" >>/tmp/count.log
echo "$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

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

4. 创建图形

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

坚持原创分享,您的支持将鼓励我继续创作