Contents
前言
在我的群組車站的即時健康監測及警報這一塊,我一直使用的是uptime-kuma + bark server的組合(具體搭建及配置參見:docker系列搭建基於bark server的訊息推播伺服器和docker系列搭建基於uptime和bark的應用即時健康監測及警報系統)。
不過,講道理,這個組合我最主要用到的還是即時警報功能,很少去看uptime-kuma的即時監測頁面,原因有以下幾點:
1.的確沒有必要一直盯著uptime-kuma的即時監測頁面看(除非像真甲方一樣有專門的運維人員)
2.uptime-kuma的監控方式都是採用的外部偵測的方式,角度較為單一,盯著看也看不出啥名堂,例如:某台設備流量多大?某個docker或某台主機的資源消耗是否異常?哪些主機上有工作異常的進程?某台主機上某個行程佔用的cpu、記憶體是多少?某台主機上的日誌中是否有指定關鍵字的報錯?某台主機上某個關鍵的檔案是否被竄改過?某個資料庫的某個表的內容是否達到某個閾值等等。
3.uptime-server本身的監控展現頁也比較單調,逼格頗低:
基於以上原因,uptime-kuma + bark server這套組合我一直就只是當即時警報系統來用,就沒覺得有即時監測方面的功能。
前幾天忽然心血來潮,專門研究了下(免費的)維運監控系統,沒想到還真讓我找到一款符合我心意的:wgcloud,雖然略有瑕疵(免費版各功能的對像都有10個的上限),但是總體而言算是達到了我的要求:前面提到uptime-kuma不能做的都能實現,並且展現界面也有品味多了,最終效果如下:
本文(上篇)就詳細記錄wgcloud的部署過程,具體配置在下篇介紹。
部署wgcloud
環境準備
安裝java環境
WGCLOUD的server可以運行在JDK1.8、JDK11或更高版本JDK,OpenJDK也支持
我用的debian 12,所以採用以下步驟:
1、更新軟體來源
apt update
2、安裝預設OpenJDK 11
apt-get install default-jdk
3.驗證java是否安裝成功
java -version
其他系統的安裝方式請參考官方說明:https://www.wgstart.com/help/docs7.html。
註:只有server端需要部署JDK,只是agent的主機不需要部署。
建立資料庫(可選)
wgcloud需要使用資料庫,支援的資料庫(資料來源):MySQL(MySQL 5.X和MySQL 8.X都可以)、MariaDB、Oracle、PostgreSQL(建議10版本或以上)。以上資料庫選擇性一種即可,也支援國產資料庫openGauss和OceanBase。大家可以依照自己的使用習慣來進行選擇,我其他的應用mariadb用得的比較多,所以有現成的,就直接選擇mariadb了(mysql也可以,但是有選擇的情況下永遠優先mariadb)。
wgcloud需要利用現成的資料庫(我這裡是mariadb)中的對應函式庫並進行初始化配置,如果還沒有資料庫,則需要新建。
建立新mariadb資料庫的流程建議如下:
建立宿主機上需要掛載到mariadb容器中的目錄
mkdir -p /docker/mariadb/db
建立mariadb容器
docker run --name=mariadb01 -d --restart=always \ -p 3306:3306 \ #映射宿主機的3306埠到容器的3306埠-v /docker/mariadb/db:/var/lib/mysql \ #掛載前面建立的宿主機目錄到容器內部指定目錄-e MARIADB_ROOT_PASSWORD=123 \ #指定資料庫root使用者對應的密碼,這個大家自行修改mariadb:10.11
在mariadb中新建wgcloud函式庫
具體請參考我另一篇文章:奇技淫巧系列新建空白資料庫以及給予對應使用者權限,下文假定初始化後函式庫名稱、對應的使用者名稱和密碼均為"wgcloud"。
部署wgcloud server端和agent端
下載server端並解壓縮
wgcloud在github的下載連結如下:https://github.com/tianshiyeben/wgcloud/releases,我安裝時候最新版的releases是wgcloud-v3.5.1.tar.gz(記得是下server端)。另外,v3.x版本是免費不開源商業版,免費開源版我這個時候是v2.3.7。
下載完成後,將server端解壓縮到特定目錄,我這裡就直接放在/root目錄下,然後解壓縮:
cd ~ tar -zxvf wgcloud-v3.5.1.tar.gz
解壓縮後的目錄wgcloud-v3.5.1.tar.gz的檔案結構如下:
有以下注意事項:
1.server端目錄裡自帶agent客戶端,如果只是單agent的主機,也建議放在相同路徑下,這樣方便升級。
2、server和agent部署都是解壓縮後,對設定檔稍作必要修改,就可以啟動運行了,不用編譯
3.server端只部署一個就行,所有agent向這個server單向上報指標數據
4.有多少主機需要監控,就部署多少個agent(即使是server主機需要監控也要啟動agent)
5、server和agent需要保持相同的版本
6.監控主機資訊由agent自動採集上報,因此server端主機列表頁面不能新增主機。 agent部署好啟動後,就可以在【主機管理】頁面看到監控主機了
7.wgcloud-daemon-release為守護進程,執行server/start.sh會同時啟動wgcloud-server-release.jar和wgcloud-daemon-release,守護程式不要關閉,server要和守護程式進行通信
8.server和agent所在主機系統時間需要保持一致,即使有差異,時間差應不超過15個小時(此時間差內agent打印防篡改校驗失敗信息,請忽略即可,不影響監測採集)
9.注意不要編輯/修改server/wgcloud-server-release.jar,否則agent日誌將出現防篡改校驗失敗的信息,達到一定週期後將不再上報數據
10.如果agent無法直連存取server,可以透過代理程式wgcloud-proxy,實作將資料轉上報給server
11.如果是在Windows部署執行server,盡量不要讓server所在目錄路徑中有空格(如C:\Program Files (x86)\wgcloud),有時候低版本windows會因路徑中有空格而導致啟動不了的問題
12、server和agent可以混用,只要保持同一版本即可。即server運行在linux上,agent可以運行在linux也可運行在windows上,反之也可以
初始化wgcloud函式庫
/root/wgcloud-v3.5.1
目錄中有3個sql檔:
因為我用的mariadb,所以初始化檔案選擇:
wgcloud-MySQL.sql
應用wgcloud-MySQL.sql檔的方式很多,以phpmyadmin為例:
初始化完成:
當然,也可以用命令列格式導入,如下:
mysql -u root -p -h 127.0.0.1 #資料庫IP依實際情況修改,如果非預設的3306,就用-P參數後加埠use wgcloud; source /root/wgcloud-v3.5.1/wgcloud-MySQL. sql
設定application.yml文件
wgcloud server的資料庫指向由/root/wgcloud-v3.5.1/server/config/application.yml
文件裡的以下內容決定:
我的實際配置如下:
"application.yml"檔案中其他重要參數如下,包括管理員的使用者名稱密碼、web ssh、叢集功能等,大家可以依照自己的需求進行修改,一般除了管理員的使用者名稱、密碼,其他保持預設即可:
#核心設定參數base: #管理員登陸帳號account: admin #管理員登陸帳號的密碼accountPwd: 111111 #是否開啟免密登錄,yes開啟,no關閉,此功能開啟需升級至專業版openSSO: no #server和agent的通訊金鑰,server和agent設定檔中的wgToken值要保持一致wgToken: wgcloud #每頁顯示多少條數據,建議不小於10 pageSize: 20 #是否開啟web ssh客戶端,yes開啟,nowebSsh : yes #web ssh客戶端的服務端口,如果要使用web ssh,那麼server主機的9998端口要在防火牆放行,不用web ssh可不開啟webSshPort: 9998 #守護程序訪問url,server服務使用,agent不使用,若守護連接埠修改,那麼這裡的連接埠也要同步修改下(一般保持預設即可) daemonUrl: http://localhost:9997 #是否開啟公眾看板,yes開啟,no關閉,開啟後看板頁面無需登陸dashView: yes #是否開啟資料開放接口,yes開啟,no關閉openDataAPI: yes #公眾看板頁面主機IP是否開啟脫敏顯示,yes開啟,no關閉dashViewIpHide: yes #是否開啟大屏幕展示看板,yes開啟,no關閉,開啟後看板頁面無需登陸dapingView: yes #是否自動閉合左側選單,yes是,no否sidebarCollapse: yes #是否在清單頁面顯示警告次數,yes是,no否,一般不建議開啟(至少不建議長期開啟) ,因為可能會影響效能showWarnCount: no #是否開啟指令下發(若關閉,將不能再新增和下發指令),yes是,no否shellToRun: yes #指令下發不能包含的敏感字符,小寫即可,多個用逗號隔開shellToRunBlock: 'rm ,mkfs, /dev/,:(){:|:&};:,mv ,wget , install ,del ,delete ,format ,ren ,rd ,rd/ s/q ,rmdir ' #資料監控的sql語句,不能寫出現的敏感字元(即sql可能注入的關鍵字),小寫即可,多個用逗號隔開sqlInKeys: 'execute ,update ,delete , insert ,create ,drop ,alter ,rename ,modify ' #資料表監控間隔,單位秒,預設60分鐘dbTableTimes: 3600 #服務介面監控間隔,單位秒,預設10分鐘heathTimes: 600 #ft介面監控單位秒,預設10分鐘ftpTimes: 600 #數通設備PING監控間隔,單位秒,預設15分鐘dceTimes: 900 #數通設備snmp監測間隔,單位秒,預設20分鐘snmpTimes: 1200 #告警快取時間(即靜默時間)間隔(此時間內同一警報通知不再重複發),單位秒,預設120分鐘。此期間只是不推送告警到第三方(郵件釘釘微信等)了,系統監控掃描工作仍正常進行warnCacheTimes: 7200 #監控資料保留天數,預設30天 historyDataOut: 30 #監控資料趨勢折線圖,每個圖表每次查詢時最多展現的數據量,若數據量超過此值,系統則會自動均衡化處理數據,最終保留的數據量等於此值,主要為防止圖表一次展示過多數據導致瀏覽器卡頓,配置為0表示不壓縮均衡化處理資料chartDataMaxShowValue: 4000 #節點類型,master或slave,一個叢集只能有一個master和N(最多31)個slave,如:slave1,slave2 nodeType: master #是否開啟使用標籤,yes開啟,no關閉hostGroup: no
啟動服務端
cd /root/wgcloud-v3.5.1/server ls -l
如果沒有執行權限,請使用以下命令新增:
chmod +x start.sh chmod +x stop.sh
啟動wgcloud的server端:
sh start.sh #重啟也是用該指令,如需停止進程,則使用sh stop.sh
結果如下:
註1:啟動server,會同時啟動守護程式wgcloud-daemon-relese,不要關閉守護程式。
註2:如果部署wgcloud server端的主機有防火牆或安全群組,需要放開9999端口和9998端口(9998是web ssh端口,如果不需要可以不放開)。
啟動agent端
agent也有對應的配置文件,其路徑是:
/root/wgcloud-v3.5.1/agent/config/application.properties
在agent的設定檔裡需要修改的只有serverUrl這一條,需要修改為server的位址,不過唯一例外的是server端本身的agent,可以不用修改:
註1:wgToken為agent和server通訊的金鑰,相當於密碼,可以自訂為自己的設定密碼(需要和server/config/application.yml中的wgToken值一致),暫時預設即可
註2:agent主動單向給server上報採集數據,agent主機不需要開啟任何端口,因為server不會存取agent。
啟動agent和上一節啟動server是一樣的,就是所在目錄不一樣:
cd /root/wgcloud-v3.5.1/agent ls -l
啟動wgcloud的agent端:
sh start.sh #重啟也是用該指令,如需停止進程,則使用sh stop.sh
結果如下:
其他版本的agent請自行下載,就在server端下載的同一個release連結。
如果需要設定agent開機啟動,linux可以參考我另一篇文章:debian系列設定指令或腳本開機啟動的3種常見方式,macos可以透過將腳本加入登入項,win版的agent透過執行regAgentService.bat的批次檔將agent註冊為服務,然後直接將服務設定為開機啟動即可,我這裡就不多說了,都很簡單。
下篇(功能篇)參見:家庭資料中心系列透過wgcloud部署自己的維運監控系統(下):功能篇。