機房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@host-10-40-72-180:/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@host-10-40-72-180:/tmp# ./configure --prefix=/usr/local/smokeping root@host-10-40-72-180:/tmp# unset LC_ALL root@host-10-40-72-180:/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地址,可以參考 ofollow,noindex" target="_blank">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/blob/master/prometheus/collection_to_prometheus.py
五、grafana
將idc_ping_monitor/grafana/ping_monitor.json匯入到grafana即可
效果:
六、小結
● 本文的思路:smokeping採集資料之後儲存到rrd檔案,然後通過指令碼把資料提取出來,格式化之後傳送到prometheus,然後通過grafana展示出來
● 文中使用的全國ping站點列表,資料推送指令碼以及grafana模板 https://github.com/wilsonchai8/idc_ping_monitor
至此,本文結束
在下才疏學淺,有撒湯漏水的,請各位不吝賜教...