前言
當初項目的本意是為了監測中心機房到全國各地(主要是省會與重要城市)的ping速率而創建,目標ip地址是根據某個ip網站爬取,而現在該網站已經下線了,導致目標ip無法獲取,再加上所用組件版本已經年久失修,最後是本人懶惰~~,導致項目已經不可用很久了
今年勤奮戰勝懶惰,又重新佔領高地,想着把該項目重修修繕一遍
開始修繕
- 更換ip庫:放棄了之前的網站,重新找了一份ip地址庫,並且會定期更新
- 部署方式變更:使用docker容器部署,方便部署,
- 加入更多城市:不但跟蹤省會以及重要城市,還有地級市也一併跟蹤了
- 自動更新ip:每3個小時處理不能ping通的ip,並且從ip庫找一個可用的ip地址更新
- 更換最新頁面:可以選擇使用原生的頁面,也可以prometheus+pushgateway+grafana查看更細緻的頁面
安裝
docker volume create idc_ping_monitor_V
docker run -d --name idc_smokeping -p 8001:80 -v idc_ping_monitor_V:/opt -v ./data:/data registry.cn-beijing.aliyuncs.com/wilsonchai/idc_smokeping:v1
docker run -d --name idc_sidecar -v idc_ping_monitor_V:/opt -v ./data/:/data registry.cn-beijing.aliyuncs.com/wilsonchai/idc_sidecar:v1
這裏需要注意的是,./data文件存放了所有城市的ping數據,idc_smokeping與idc_sidecar需要共享該目錄。如果之前的數據不想要,可直接刪除即可
如果有需要推送到pushgateway,那就需要重新配置idc_sidecar
注:prometheus需要idc_ping_monitor啓動6分鐘之後才會有數據
docker rm -f idc_sidecar
docker run -d --name idc_sidecar -e PUSHGATEWAY_URL=10.22.12.178:9091 -v idc_ping_monitor_V:/opt -v ./data/:/data registry.cn-beijing.aliyuncs.com/wilsonchai/idc_sidecar:v1
編譯
如果需要自己編譯,也可以進入兩個目錄分別操作
-
idc_smokeping
cd smokeping && docker build . -t registry.cn-beijing.aliyuncs.com/wilsonchai/idc_smokeping:v1 -
idc_sidecar
cd sidecar && docker build . -t registry.cn-beijing.aliyuncs.com/wilsonchai/idc_sidecar:v1
詳解
idc_smokeping:使用smokeping作為數據採集端,負責採集到各城市ip的ping數據,存為rrd格式的數據文件,每3分鐘採集一次,並且每3小時會應用一次新的城市ip(如果有更新)idc_sidecar:- 使用cron+python腳本,每小時檢查城市ip是否能夠ping通,如果不能ping通,就立刻在ip庫中更換一個
- 如果配置了環境變量:
PUSHGATEWAY_URL,那每3分鐘將各個城市的數據採集到pushgateway,從而進入prometheus,方便後續分析
./data:各城市的ping數據存放在宿主機當前目錄的./data下面,便於保存、備份或者刪除idc_ping_monitor_V:docker volume,用來存放各城市的ip地址以及ip庫
效果
1)原生的效果圖

2)grafana

這裏需要注意的是:該panel有2個參數:省份和城市。省份可以選擇,由於城市過多(1010個),選擇城市的時候需要自行輸入
代碼倉庫
代碼地址
最後再來分析一下倉庫目錄下的代碼組成,方便大家使用
▶ tree -L 1
.
├── grafana
├── sidecar
└── smokeping
-
grafana目錄主要存放了grafana的模版文件,需要的時候直接導入進grafana即可▶ ls -l grafana total 20 -rw-rw-r-- 1 wilson wilson 18946 11月 5 18:43 全國速率監測(地級市版).json -
sidecar目錄主要存放了各種操作城市數據相關的腳本 -
smokeping目錄主要存放了smokeping相關的配置文件
聯繫我
- 聯繫我,做深入的交流

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