zoukankan      html  css  js  c++  java
  • 机房ping监控 smokeping+prometheus+grafana

    一、前言

    1、本监控方案主要由smokeping+promethues+grafana组成。smokeping主要数据采集,promethues作为数据存储,grafana数据展示
    2、其实smokeping也有自己的展示方案,但是太low太难看,不符合当下装逼的风格,所以果断换成grafana
    3、之所以使用promethues,是由于目前的生产环境有一个promethues,可以直接复用,当然也可以选用graphite等


    二、环境准备

    组件 版本
    OS Ubuntu 16.04.4 LTS

    三、smokeping

    smokeping的原理其实很简单,就是使用fping工具ping全国各省的IP,将结果存储在rrd文件当中

    安装smokeping

    root@localhost:/tmp# apt-get install gcc make rrdtool librrds-perl librrds-dev openssh-client libcgi-fast-perl libconfig-grammar-perl libdigest-hmac-perl liblwp-protocol-https-perl liblwp-mediatypes-perl fpint
    root@localhost:/tmp# ./configure --prefix=/usr/local/smokeping
    root@localhost:/tmp# unset LC_ALL
    root@localhost:/tmp# make && make install
    

    安装过程中需要很多依赖包,如果./configure报错了,就安装对应的包就行了

    配置过程

    克隆代码

    cd /tmp
    git clone https://github.com/wilsonchai8/idc_ping_monitor.git
    

    创建config文件,并且配置全国各区域ip监测点

    smokeping_home_dir=/usr/local/smokeping
    cd $smokeping_home_dir/etc
    cp -rf /tmp/idc_ping_monitor/smokeping/* ./
    

    监测点ip主要由国内的三大运营商的IP站点组成,也可以自定义需要检测的站点,更多的ip地址,可以参考 http://ip.yqie.com/china.aspx

    启动:

    mkdir -p $smokeping_home_dir/cache
    mkdir -p $smokeping_home_dir/data
    mkdir -p $smokeping_home_dir/var
    chmod -R 0755 $smokeping_home_dir
    chmod 600 $smokeping_home_dir/etc/smokeping_secrets.dist
    $smokeping_home_dir/bin/smokeping
    

    四、promethues

    为什么要选择时序数据库?
    ● 时序数据库强调的是以时间为主坐标,根据时间的流逝来记录事物的变化关系。关系型数据库主要是描述事物与事物之间的变化关系,这个关系相对于时间就比较复杂,比如一对多,多对多。而时间相对简单,只需要简单记录在这个时间点的某个事物发生的变化。监控数据恰恰符合这个时间变化,我们只需要记录某个指标在时间流逝当中的变化即可
    ● 时序数据库非常适合"变化"。比如在关系型数据库中描述事物的关系,使用表结构,一旦定义下来,就遵循这个表结构不断的采集数据,如果发生变化,比如新增一个采集维度,那就要变更表结构,DDL操作对于关系型数据库来说,是非常大的代价。然后这对于时序数据库来说,并没有这个烦恼,时间序列数据集跟踪整个系统的改动并不断插入新数据,而不是更新原有数据。所以,对于监控数据来说,采集新的数据维度对于整个表结构不会有任何影响,因为它压根就没有表结构

    balabala说了一大堆,终于要开始使用promethues(关于promethues的安装,网上一搜一大把),经过一顿猛如虎的操作:

    模块 访问地址
    Prometheus server 192.168.56.101:9090
    Prometheus Pushgateway 192.168.56.101:9091

    把smokeping采集的数据通过rrdtool读取之后,按照一定的格式推送到prometheus的gateway,时间间隔是1分钟

    cp /tmp/idc_ping_monitor/prometheus/collection_to_prometheus.py $smokeping_home_dir
    

    配置crontab

    crontab -e 
    
    * * * * * python /usr/local/smokeping/collection_to_prometheus.py
    

    在/usr/local/smokeping/collection_to_prometheus.py中,按照实际情况配置3个参数:

    'LOG_FILE' : '/tmp/smoking_pushgateway.log'             # 日志文件  
    'prometheus_gateway' : 'http://192.168.56.101:9091'     # Prometheus gateway地址  
    'data_dir' : '/usr/local/smokeping/data'                # smokeping rrd文件的存放地址 
    

    等待一段时间之后,已经有数据了,在prometheus里,metrics name:
    smokeping_lost_package_num
    smokeping_rrt


    附上源代码:

    https://github.com/wilsonchai8/idc_ping_monitor

    五、grafana

    将idc_ping_monitor/grafana/ping_monitor.json导入到grafana即可

    效果:


    六、小结

    ● 本文的思路:smokeping采集数据之后存储到rrd文件,然后通过脚本把数据提取出来,格式化之后发送到prometheus,然后通过grafana展示出来
    ● 文中使用的全国ping站点列表,数据推送脚本以及grafana模板 https://github.com/wilsonchai8/idc_ping_monitor



    至此,本文结束
    在下才疏学浅,有撒汤漏水的,请各位不吝赐教...

  • 相关阅读:
    【C/C++】动态内存分配和链表
    【C/C++】递归算法
    UnicodeMath编码教程
    UnicodeMath数学公式编码_翻译(Unicode Nearly Plain
    浅谈Java反射机制
    lvs--小白博客
    python部署lvs
    python部署galery集群
    python第九章:面向对象--小白博客
    python之yagmail模块--小白博客
  • 原文地址:https://www.cnblogs.com/MrVolleyball/p/10062231.html
Copyright © 2011-2022 走看看