派送規則:
1:即日起三天內,關注本號的第25,50,75,100位網友;
2:已關注公衆號,歷史分享前三名;
3:已關注公衆號,歷史留言前兩名;
符合以上三種規則任意一個,則將獲得號主發送的50元微信紅包。
第250名關注者,將獲得88.88元的超級大紅包。
一、引言
1.1. 背景
對於互聯網企業來說,隨着業務的不斷拓展,公司所運行的項目越來越多,項目業務邏輯也越來越複雜,需要定製化開發的內容也越來越多。
大數據背景下的輿情公司,由於業務需求數據範圍廣,無法通過一種統一的方式,來解決所有類型數據的採集。隨之而來的,就是定製化開發的採集器越來越多,這些採集器的運維越來越繁瑣,逐漸影響項目的進度,成爲了限制業務發展的瓶頸。
那麼,如何解決呢?自動化運維便是正解。
1.2. 業務痛點
① 管理分散在各開發人員,解決問題的效率低下;
② 項目越來越複雜,定製開發增多,部署、更新等運維難度驟增;
③ 腳本運行情況、採集數據量等監控難度加大;
④ 由於管理分散,人員流動導致運維難度係數增加;
⑤ 人爲操作失誤頻發,導致
1.3. 目標
① 實現部門內部所有服務的自動化部署。初期以採集爲主;
② 實現各服務/腳本的統一管理,實時監控異常;
③ 本系統只負責部署與監控,不參與採集或其他服務的邏輯處理。
1.4. 技術
① 系統使用語言:Java + Python
② 管理後臺使用技術:Spring Boot2.X + FreeMarker + X-Admin2.X
③ 運維端:FastAPI +Fabric(2.0版本升級爲:Ansible)
1.5. 使用範圍
① 本版本暫時只支持Linux操作系統的運維;
② Windows系統在後續2.0版本中提供支持;
二、系統概述
1.1. 系統描述
開發該系統主要是爲了實現採集器、腳本及其他服務的自動化運維管理,包括服務的部署/上傳、啓動、關閉、參數修改、簡單的服務文件的修改等。
同時,實現對服務器、採集器、腳本等服務進行監控,實時發現問題,解決問題。
1.2. 結構描述
當前系統主要包括服務器節點管理、項目管理、爬蟲管理和任務管理等四個模塊,每個模塊的具體功能細節如下表所示:
一級功能 |
二級功能 |
三級操作 |
備註 |
節點管理
|
節點列表 |
- |
實現對服務器信息的管理 |
節點環境
|
開發語言 |
管理並顯示服務器上安裝的語言環境 |
|
環境依賴 |
管理服務器上各語言環境插件 |
||
節點監控 |
- |
主要監控各服務器的硬盤、CPU、內存等使用情況 |
|
拓補圖 |
- |
主要用於展示採集相關的所有軟硬件關係、結構 |
|
項目管理 |
項目列表 |
- |
主要展示項目信息 |
爬蟲管理
|
爬蟲列表 |
- |
主要展示已經開發或部署的爬蟲信息 |
部署情況 |
- |
顯示每個爬蟲部署的服務器節點情況 |
|
任務列表 |
- |
顯示每個爬蟲已經或正在處理的任務列表 |
|
爬蟲文件 |
- |
主要用於在線修改爬蟲文件,並同步到所部署節點 |
|
運行環境 |
- |
用於管理爬蟲運行所需環境,包括安裝、卸載等 |
|
採集分析 |
- |
展示爬蟲採集數據相關的統計信息,用於監控 |
|
任務管理 |
任務列表 |
- |
主要用於查看當前所有爬蟲的採集任務信息 |
當部署爬蟲時,我們需要把爬蟲腳本,上傳到相關的服務器節點上。所以,就需要一個能與服務器進行交互的服務接口。
目前採用Fabric來實現,2.0版本時再考慮基於容器的相關技術,如docker等技術。
三、功能模塊
1.1. 節點管理
該模塊主要包括服務器、服務器配置、語言環境,以及各語言環境相關參數等信息的查看、管理等功能。
1.1.1. 數據字典設計
數據庫字典說明:
① td_idop_servers:服務器節點信息表;
② td_idop_serv_info:服務器節點配置信息表;
③ td_idop_serv_lang_rel:服務器與編程語言關聯表;
④ td_idop_serv_lang:編程語言信息表;
⑤ td_idop_serv_lang_plugs:編程語言相關插件表;
⑥ td_idop_serv_monitor_cpu:CPU使用情況監控信息表;
⑦ td_idop_serv_monitor_memory:內存使用情況監控信息表;
⑧ td_idop_serv_monitor_disk:硬盤使用情況監控信息表;
⑨ td_idop_serv_monitor_network:網絡收發數據包情況監控表;
1.1.2. 功能描述
1.1.2.1. 節點列表
主要展示當前所有的服務器節點信息。如:服務器IP、登錄信息等。
當監控服務發現服務器異常時,列表中節點名稱顏色變爲紅色,以示預警。
可以查看服務器的基本配置信息包括:內存、CPU、操作系統等信息。
亦可以查看當前服務器上已經安裝的開發語言,及執行命令信息.
系統原型如下圖所示:
操作說明:
⑩ 查詢:根據服務器名稱和Ip進行查詢;
⑪ 批量刪除:可以批量刪除服務器節點信息。同時刪除服務器節點所屬語言、插件等信息;服務器CPU、硬盤、內存及網絡等監控信息;刪除當前服務器上部署的記錄;刪除與之相關聯任務信息;
⑫ 添加:新增或編輯服務器信息;
1.1.2.2. 節點語言環境
該模塊主要用於管理服務器上語言環境,以及該語言環境下,已安裝的相關插件。如Python環境下已安裝的第三方爬蟲庫。
1.1.2.2.1. 開發語言
主要用於管理服務器上的語言環境管理,實現管理界面的一鍵安裝、卸載等。
系統原型如下圖所示:
說明:
“√”表示當前服務器已經安裝該語言;
“×”表示當前服務器未安裝該語言
操作說明:
① 查詢:根據服務器Ip進行查詢;
② 添加:指添加語言。添加後刷新列表,列表中新增一列信息;
③ 表頭“+”:表示對列表中所有的服務器節點進行安裝。如果已經安裝,則跳過;
④ 行單元格中“+”:表示安裝當前服務器安裝的當前列語言;
⑤ 行單元格中“×”:表示卸載當前服務器安裝的當前列語言;
1.1.2.2.2. 環境依賴
該模塊主要實現對各服務器節點上,已安裝的語言的插件進行管理,以便在管理系統中統一管理。如安裝、卸載等。
系統原型如下圖所示:
中部樹結構說明:
該樹形結構中數據來源於服務器信息表,以及其對應的語言表。
操作說明:
① 批量刪除:實現對插件的批量刪除。同時,服務器上需要卸載該插件;
② 添加:必須先選擇中部的樹節點下的語言節點,否則不可添加;
③ 編輯:編輯插件信息;如安裝、卸載命令等;
④ 安裝:在當前選中樹節點,所在服務器上安裝該插件;
⑤ 卸載:卸載當前選中樹節點,所在服務器上的該插件;
1.1.2.3. 節點監控
該模塊主要用於近實時的監控服務器的內存、CPU、硬盤等信息,以便運維人員實時調整採集策略。
系統原型如下圖所示:
中部樹結構說明:
該樹形結構中數據來源於服務器信息表。
統計圖說明:
後臺服務每隔五分鐘獲取一次服務器的內存、CPU、硬盤等使用率;以及網絡的收發包信息。
1.1.2.4. 網絡拓撲
該模塊主要用於顯示當前爬蟲全流程中的網絡結構。包括:服務器分佈、Redis隊列部署情況、數據存儲情況等。
系統原型如下圖所示:
後續會逐漸把整個設計方案分享給各位大佬參考,也希望各位大佬多提建議。
同時,有願意一起開發的大佬,也可以聯繫號主,如果合適,可以組隊哦!
本文分享自微信公衆號 - 十點數據(crawler-small-gun)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。