1. 前言
本文並不是講解爬蟲的相關技術實現的,而是從實用性的角度,將抓取並存入 MongoDB 的數據 用 InfluxDB 進行處理,而後又通過 Grafana 將爬蟲抓取數據情況通過酷炫的圖形化界面展示出來。(喜歡的可以轉發評論,需要Python學習福利私信小編“123”)
在開始之前,先對 Grafana 和 InfluxDB 做一下簡要的介紹:
- Grafana:是一個開源的分析和監控系統,擁有精美的web UI,支持多種圖表,可以展示influxdb中存儲的數據,並且有報警的功能。
- **Influxdb **:是一款開源的時間序列數據庫,專門用來存儲和時間相關的數據(比如我用它存儲某個時間點爬蟲抓取信息的數量)。
最終能實現的效果是這樣的:
![手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面](http://p2.ttnews.xyz/loading.gif)
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
請注意以下操作,都是 Mac 下實現的。但是原理是相似的,你可以在自己的 PC 上進行試驗。
2. 安裝配置 InfluxDB
安裝 InfluxDB
![手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面](http://p2.ttnews.xyz/loading.gif)
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
修改配置文件/usr/local/etc/influxdb.conf,如果原文件中沒有對應配置項,需自己添加。
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
3. 安裝配置 Grafana
安裝 Grafana
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
並修改 Grafana 配置文件 /usr/local/etc/grafana/grafana.ini,內容如下:
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
4. 爬蟲代碼
由於這裡主是要介紹如何將 Grafana 和 InfluxDB 與爬蟲進行結合的方案,而不是主講爬蟲原理,而且代碼也比較多,影響可讀性,所以就不貼出爬取的代碼。
5. 監控腳本
考慮到可能要增加爬蟲到監控中,因此這裡使用了熱更新對監控進行動態配置。
配置文件 influx_settings.conf 主要用於熱更新相關設置。
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
如何動態讀取這個配置文件的設置呢?需要寫一個腳本來監控。代碼如下:
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
來試著運行一下
python3 influx_monitor.py
運行,得到下圖內容,表示監控腳本運行成功。
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
另建窗口,修改配置文件 influx_settings.conf
# 修改間隔時間為8秒
interval = 8
切換至第一次運行 influxDB 的窗口,會提示配置更新,說明配置熱更新生效。
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
6. 配置 Grafana
首先打開 Chrome 瀏覽器,輸入 http://127.0.0.1:3000 登錄 grafana 頁面。
連接本地 influxDB 數據庫,操作如下圖。
在紅色方框內選擇 Type 類型為 InfluxDB,並輸入URL:http://localhost:8086
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
在紅框內輸入influxDB數據庫名稱
新建 dashboard
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
新建 graph 類型 dashboard
修改 dashboard 設置
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
點擊紅色方框修改設定
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
修改 dashboard 配置
設置監控的數據對象
在監控腳本中,寫入influxDB的代碼如下,其中 "measurement" 對應 表名,"fields" 對應寫入的字段;
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
7. 運行爬蟲文件
啟動 MongoDB 數據庫服務。
brew services mongodb start
新建一個 terminal 窗口,運行爬蟲文件。
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
爬蟲文件運行成功
我們可以在剛剛打開的控制檯裡查看效果展示:
手把手教你實現一個可視化爬蟲監控系統,酷炫的圖形化界面
怎麼樣?學會了嗎?
閱讀更多 Python新寵兒 的文章