前景:
trapper 模式,zabbix 有个trapper 模式
trapper模式是通过 zabbix_send 往 key 里面供数
大体架构
agent 一台 (只做自动发现 items 用)
server 一台 (用来自动生成item和接受 值以及 发现告警信息)
自动发送key脚本 (部署在 server上,死循环往 key里供数)
压测的值 :value processed by zabbix server per second 这个 item的 值
压测的表达:当压测值达到一定值是,如果来了一条告警,是否立马能 获得 告警
agent配置:
1. 自动发现脚本:
脚本名:test.sh
脚本内容: cat /zabbix/zabbix/bin/xxx.test
2. xxx.test内容:
{
"data":[
{"{#APPNAME}":"ESB","{#TRANSTYPE}":"esb0"},
{"{#APPNAME}":"ESB","{#TRANSTYPE}":"esb1"},
{"{#APPNAME}":"ESB","{#TRANSTYPE}":"esb2"},
.........
{"{#APPNAME}":"ESB","{#TRANSTYPE}":"esb4000"}
]
}
规则就是 只有esb后面的 数字不一样, 1-4000
3. key 配置文件
esb.conf文件内容:
UserParameter=odb_app_trans_discovery_lk[*],/zabbix/zabbix/bin/test.sh
server端web 配置:
-
自动发现规则:
自动发现.PNG
2.trapper模式主items:(只用来为他的子item供职)
主.PNG
3.trapper模式子items:(真正的监控项)
从.PNG
4.子item是通过preprocessing取得值:
从json.PNG
自动发送脚本
名称: zidongsend1.sh
内容:
while true
do
for i in obd_app_trans_discovery_lk[ESBesb{1..200}L1] ;
do
#k=obd_app_trans_discovery_lk[ESBesb"$i"L1] ;
value={\"avgProcessTime\":1,\"avgStatus\":2,\"count\":3,\"test1\":1,\"test2\":1,\"test3\":1} ;
#>/dev/null &
/boslog/zabbix/zabbix/bin/zabbix_sender -z 10.240.91.177 -s 10.240.2.81 -k $i -o $value > /dev/null
# /boslog/zabbix/zabbix/bin/zabbix_sender -z 10.240.91.177 -s 10.240.2.81 -k $i -o \{"avgProcessTime":1,"avgStatus":2,"count":3\} > /dev/null
done
done
脚本解析:
-
很明显是个死循环,可以配合
bash zidongsend1.sh &
使用 -
for循环里就是 主item的 key
-
value 是 要 发送给主item的 key的值
子item 通过 preprocessing 从 得到的json文本 里取值
json文本里 一个键就代表一个 子item
4.数据计算:(假设 这个脚本执行完一次需要两秒)
每2秒insert 增加的值 = (1主item+6子item)*200 = 1400
如何增大 每秒insert数:
1) 多开几个脚本一起跑(这里1-200循环,完全可以再开一个201-400循环,但是当脚本开的个数 到一定数量,基本就增长不了了,shell还是有瓶颈的)
2) 优化脚本,使其执行更快(比如用python多行程搞)
3)多开 子 item,这个效率是 最高的 ,翻倍翻得厉害
多开item,记得 value 变量的值要增长
如何获取 value processed by zabbix server per second 值
这个值 是 我们的指标,有两种取值方法:
- zabbix web端 图表
- 数据库实时查询
select * from items where name = 'value processed by zabbix server per second';
根据hostid 判断是否取到的是正确的主机,获得监控项 itemid(例19261)
select * from history where itemid = 19261 ;
根据得到的itemid 获取他的 值,可以 把value processed by zabbix server per second这个监控项 刷新时间调到5s (默认1m)
测试的性能
本次测试的内容是 value processed by zabbix server per second 到达一定值的时候 ,这时候 有告警进来是否能立马收到
方法 :
上面的 主item ,选一个 不在for 循环 里面的
然后 手动往 这个 item里 发值
给他的 子item创 tragger
实时刷新 problem ,看能否里获取告警或者恢复告警
网友评论