本站文章(技术文章和tank手记)均为社长矢量比特工作.实践.学习中的心得原创,请勿转载!

业务层面如何快速拥有自己的网络监控?

监控告警 矢量比特

网络属于基础资源,每当收到告警时总难免要先看一下网络有没有问题,即时没有收到网络方面的通告,业务开发也难免怀疑是网络抖动导致,每次找网络部门查,查多了也伤感情,在

       网络属于基础资源,每当收到告警时总难免要先看一下网络有没有问题,即使没有收到网络方面的通告,业务开发也难免怀疑是网络抖动导致,每次找网络部门查大多数查不出什么问题,查多了也伤感情(有时网络部门会觉得业务部门在甩锅),在这么个大背景下,就想到业务方也需要有一个简单的网络监控,能随时查到机房间网络的ping延时、丢包。

       做这个事儿也有很多方案,如SmokePing等等,不过为了简单、高效快速实现,还是选择了自己写采集脚本,在每个机房选择一台机器埋点,做出来的效果如下:

image.png

       分享一下技术实现,编写脚本使用ping命令采集数据落到磁盘,使用filebeat采集,logstash进行数据的清洗分段,然后推到elastic里建立索引,数据源接入grafana里进行展现,采集的逻辑是15s一次,ping超时时间是2s,采集的脚本如下:

#!/bin/bash
#writer: gaolixu@xiaomi.com
dst="lg-im-ims01.bj c3-im-ims31.bj c4-im-ims01.bj"
host_name=`hostname`
while true
do
  for i in `echo $dst`
  do
    s=`ping -c 1 -W 2  $i | awk -F',' '/packets/{print $(NF-1),$NF}' |tr -d "(%|ms)"`
    loss=`echo $s |awk '{print $1}'`
    delay=`echo $s |awk '{print $NF}'`
    timestamp=`date +"%Y-%m-%d %T"`
    if [ `date +%H%M` == "0301" ]; then
      echo -e "${timestamp}|${host_name} -->  ${i}|${loss}|${delay}" > /home/work/log/pping.log
    else
      echo -e "${timestamp}|${host_name} -->  ${i}|${loss}|${delay}" >> /home/work/log/pping.log
    fi
  done
  sleep 15
done

打出来的日志如下

2018-05-24 03:03:18|tj1-sre-test-glx.kscn --> c4-im-ims01.bj|0|6
2018-05-24 03:03:33|tj1-sre-test-glx.kscn --> lg-im-ims01.bj|0|6
2018-05-24 03:03:33|tj1-sre-test-glx.kscn --> c3-im-ims31.bj|0|8

filebeat和logstash之前的博文多有介绍,不拿出来单说了,如果要增加监控的粒度,增加埋点即可。

运维网咖社”原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://www.net-add.com


©本站文章(技术文章和tank手记)均为社长"矢量比特"工作.实践.学习中的心得原创或手记,请勿转载!

喜欢 (3) or 分享 (0)
欢迎扫描关注微信公众号【运维网咖社
社长"矢量比特",曾就职中软、新浪,现任职小米,致力于DevOps运维体系的探索和运维技术的研究实践.