機房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



至此,本文結束
在下才疏學淺,有撒湯漏水的,請各位不吝賜教...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM