這一年一直在爲公司開發一個全網的新聞輿情爬蟲,隨着開發的逐步推動,一個高效直觀的監控系統便提上了日程,當時運維小姐姐使用Flask開發了一套監控系統,基於數據庫中每時每刻保存的爬蟲結果來展示監控的數據。每隔一段時間進行爬蟲抓取數量的彙報。git
可是逐漸的這套監控的弊端展示了出來。github
首先,不夠實時,我不能實時的知道程序是否發生了異常,是否爬蟲調度出現問題。docker
其次,數據不夠直觀,幾千個網站的抓取監控,在眼花繚亂的數據中,很難知道是否發生了異常。數據庫
可是運維小姐姐還有不少更重要的任務,因而進一步監控的計劃也就沒有繼續下去,這期間我一直是本身看日誌來查找錯誤。後端
好在及時遇到了Grafana+Influxdb這一套高效酷炫,開箱即用的監控系統。bash
InfluxDB是一個由InfluxData開發的開源時序型數據庫。它基於Golang開發,着力於高性能地查詢與存儲時序型數據。InfluxDB被普遍應用於存儲系統的監控數據,IoT行業的實時數據等場景。服務器
Github: github.com/influxdata/…運維
官網: www.influxdata.com/products/in…函數
基本上InfluxDB的查詢於其餘的關係型數據庫很相似,很是容易上手。工具
Github: github.com/grafana/gra…
固然安裝部署也很是方便,直接按照文檔我也沒有遇到什麼問題。
可是在這裏我使用Docker來部署這樣一套監控系統。
我在Github上找到一個很是不錯的repo,鏡像中做者還加入了Telegraf,這樣咱們也能夠同時監控咱們服務器的各類資源與負載了。
若是你的服務器上已經安裝了Docker,那麼直接運行
docker run --ulimit nofile=66000:66000 \
-d \
--name docker-statsd-influxdb-grafana \
-p 3003:3003 \
-p 3004:8888 \
-p 8086:8086 \
-p 8125:8125/udp \
samuelebistoletti/docker-statsd-influxdb-grafana:latest
複製代碼
這樣你就直接部署好了Grafana+InfluxDB了。
固然你能夠直接clone下來,根據Grafana InfluxDB Telegraf的配置來本身build容器。
接着訪問對應IP的 3003端口就能夠了。
左上角加號新建Dashboard
點擊Add Query
能夠在圖標上拉大顯示範圍,也能夠經過右上角的時間範圍來設置顯示的時間範圍。
若是想要監控本身的數據,就須要在InfluxDB建立本身的數據庫來儲存數據了。InfluxDB很是方便的提供HTTP接口來插入數據建立數據庫等等等,又有不少Client支持。
在setting中的Data Source中添加新的InfluxDB數據庫,而後依然是新建Dashboard。
一樣InfluxDB支持不少的數據聚合和函數,包括平均值,最大值,最小值,平均值,還有求和,功能很是多。
在這樣一番配置以後,很快你就會擁有一個簡單易用酷炫的監控系統了。
Grafana中的設置和功能很是多,本篇文章只是一個簡單的指導。若是你想要郵件提醒之類的功能,就本身研究吧,哈哈哈哈。
部署這個監控系統不久,立刻就派上了用場,就在寫文章的時候。
立刻上線解決了問題。看來一個好用的監控系統實在是太有必要了。