zabbix 压测

前景:
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 配置:

  1. 自动发现规则:


    自动发现.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

脚本解析:

  1. 很明显是个死循环,可以配合 bash zidongsend1.sh &使用

  2. for循环里就是 主item的 key

  3. 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 值

这个值 是 我们的指标,有两种取值方法:

  1. zabbix web端 图表
  2. 数据库实时查询
    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 ,看能否里获取告警或者恢复告警

你可能感兴趣的:(zabbix 压测)