机房ping监控 smokeping+prometheus+grafana

1、前言

一、本监控方案主要由smokeping+promethues+grafana组成。smokeping主要数据采集,promethues做为数据存储,grafana数据展现
二、其实smokeping也有本身的展现方案,可是太low太难看,不符合当下装逼的风格,因此果断换成grafana
三、之因此使用promethues,是因为目前的生产环境有一个promethues,能够直接复用,固然也能够选用graphite等python


2、环境准备

组件 版本
OS Ubuntu 16.04.4 LTS


3、smokeping

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

安装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报错了,就安装对应的包就好了github

配置过程

克隆代码数据库

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

建立config文件,而且配置全国各区域ip监测点json

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.aspxssh

启动:工具

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

4、promethues

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

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

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

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

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/blob/master/prometheus/collection_to_prometheus.py

5、grafana

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

效果:


6、小结

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



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

相关文章
相关标签/搜索