23fwerw 发表于 2016-4-22 10:56:13

zabbix检测网络质量取代smokeping

趁着中午休息时间写篇博吧。
    最近让我很头疼的一件事就是公司网络的监控,不知道该用什么方案解决,大的网络故障一出现,老总第一时间就问怎么没有监控,这锅真的不好甩。花钱的方案有,但是作为运维人来说不是首选。怎么从开源领域找到一个切实可行的办法呢?


[*]写脚本,全国的节点每个机房抽两台机器跑脚本,管理难度大;
[*]smokeping,搭一台,这是有必要的,但是告警不好聚合与分级,没办法做总的预测;
[*]用zabbix写一个template替代smokeping,看好zabbix告警聚合分级功能;
    zabbix-trapper:这是一种数据传递方式,不同于zabbix-agent,这种方式定义的item需要使用zabbix-sender来发送数据给zabbix-server

    zabbix-sender需要的参数:

    -z - 指定zabbix server的IP
    -p - 指定zabbix server的端口,默认为10051
    -s - 指定目标主机,主机名必须是配置中的hostname而不是visible name,切记
    -k - 指定key,我们定义的trapper的key,这边便是我们前面定义的trap
    -o - 指定要传递的数据

   使用fping探测各节点丢包率

    fping的参数:

    -b ping包大小

    -c ping的次数   
    -p ping间隔,单位ms
放在server端的externalscripts中的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
#
ZBXSERVER=127.0.0.1
FPING=/usr/sbin/fping
ZBXSENDER=/usr/local/zabbix/bin/zabbix_sender
# Where to send ping
IP=$1
# How many ping to send
COUNT=$2
# What interval between ping
INTERVAL=$3
# How many bytes in one ping
BYTES=$4
# 'Hostname' of the host which will collect data
HOSTNAME=$5
if [ $# -lt 5 ]
then
   echo
   echo " Not enough parameters"
   echo " Usage: zbxsmokeping   "
   echo " Zabbix External Check Item ex.: zbxsmokeping[{HOST.IP},6,1000,68,{HOST.HOST}]"
exit 2
fi
# debug
#echo $FPING -b $BYTES -c $COUNT -q -p $INTERVAL $IP 2>&1
OUTPUT=`$FPING -b $BYTES -c $COUNT -q -p $INTERVAL $IP 2>&1 | awk '{print $5,$8}' | tr -d "%|," | tr -s " " "/" | awk -F"/" '{print $3,$4,$5,$6}'`
tab=($OUTPUT)
#echo ${tab}
# debug
# echo $ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k PrimaryLoss -o ${tab}
# echo $ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k PrimaryLatencyMin -o ${tab}
# echo $ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k PrimaryLatencyMax -o ${tab}
# echo $ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k PrimaryLatencyAvg -o ${tab}
$ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k SmokLoos -o ${tab} -v | grep"failed: 1" &> /dev/null
$ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k SmokLatencyMin -o ${tab} -v | grep"failed: 1" &>/dev/null
$ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k SmokLatencyMax -o ${tab} -v |grep"failed: 1"&>/dev/null
$ZBXSENDER -z $ZBXSERVER -p 10051 -s $HOSTNAME -k SmokLatencyAvg -o ${tab} -v | grep"failed: 1"&>/dev/null





脚本赋予执行权限和属主,模板挂载需要探测的节点上,并不需要在每个节点上定义键值对。
模板中的项:

模板中的触发值:


模板中的图:

    以上我们的zabbix形式的smokeping已经建立完成,下面就要用zabbix关联触发与平均值的方式设置主干网的监控了。

    1.每个机房分一个组,在组的基础上设置一个丢包率平均值的it
em

    2.设置这个组的警戒点



    3.将几个组的警戒点关联在一起,都达到触发要求的时候执行总判断,判断为主干网故障。





江沪椿明 发表于 2017-11-13 10:47:56

感谢分享 正在需要

chris_huang 发表于 2018-5-22 16:58:19

还没搞清楚

kellar 发表于 2018-5-23 16:57:12

感谢分享 正好需要

xianshen 发表于 2018-6-8 13:56:38

感谢分享 正需要

iloveker 发表于 2018-8-22 16:18:52

感谢分享 正需要

DevOpsSec 发表于 2018-10-25 10:15:35

感谢分享 正需要

Asumita 发表于 2018-11-5 15:10:29


感谢分享 正需要

wx_UtNN2Z21 发表于 2019-10-31 14:46:53

正好是想要的东西。
页: [1]
查看完整版本: zabbix检测网络质量取代smokeping