簡介
????Prometheus/Process-Exporter/Grafana三件套,用于監(jiān)控腳本/應(yīng)用是否一直在運行,長時間運行時的性能使用情況并用可視化的圖標(biāo)顯示出來。
一、Prometheus
Prometheus(普羅米修斯)是一套比較完備的監(jiān)控報警系統(tǒng),其主要架構(gòu)設(shè)計如圖:

1.?主要是由以下組件構(gòu)成:
? ? 1.1. Prometheus server:服務(wù)中心,主要負(fù)責(zé)拉取和存儲時序書庫(Prometheus有自帶的時序數(shù)據(jù)庫)
? ? 1.2. Client Libraries:客戶端庫,主要用于和具體的服務(wù)進(jìn)行集成,采集監(jiān)控數(shù)據(jù),例如Micrometer
? ? 1.3. Push gateway:另外一種數(shù)據(jù)push的采集方式(Prometheus默認(rèn)使用pull的方式主動采集應(yīng)用數(shù)據(jù)),用于適配一些沒有長期穩(wěn)定的進(jìn)程? ?的服務(wù)
? ? 1.4. Exporter:用于針對某些特定服務(wù)的數(shù)據(jù)采集工具,例如:mysql/kafka/HA等..
? ? 1.5. Alert Manager:Prometheus的監(jiān)控告警工具,主要通過webhook和其他告警系統(tǒng)進(jìn)行集成告警,能夠進(jìn)行告警規(guī)則的配置
? ? 1.6. 其他工具
同時,Prometheus也有一套自己的查詢語法,用于已經(jīng)采集的數(shù)據(jù)的結(jié)果查詢,具體可以參考:
https://prometheus.io/docs/prometheus/latest/querying/basics/
或者中文翻譯:?http://www.itdecent.cn/p/3bdc4cfa08da
2. 安裝部署
我使用的是Windows,首先在Prometheus官方下載安裝包
官網(wǎng)高速入口:“點我!點我!點我!”
下載完畢后安裝軟件其目錄結(jié)構(gòu)如下:

1. data為Prometheus 是自帶時序數(shù)據(jù)庫持久化的目錄
2. pometheus.yml 為整個Prometheus的配置文件
3. pometheus.exe 為服務(wù)啟動應(yīng)用,雙擊直接啟動
這個時候Prometheus會使用最基本的默認(rèn)配置,運行在本地9090端口,采集自身的運行的數(shù)據(jù)并持久化到時序數(shù)據(jù)
prometheus.yml的配置規(guī)則參考文檔:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/
4.當(dāng)Prometheus啟動完畢后,本地瀏覽器訪問:http://localhost:9090? 能夠訪問,說明安裝并啟動成功。
二、Process-Exporter
????Process-Exporter就是用來監(jiān)控進(jìn)程的,其中一項能力,便是監(jiān)控進(jìn)程的狀態(tài)。如果機器上運行了一些小腳本,想要對其進(jìn)行監(jiān)控但又不想用上一些在代碼里做信息采集的SDK那么重,比如:單純想要監(jiān)控該腳本是否一直在運行,運行時CPU、內(nèi)存使用情況,那么Process-Exporter會是一個現(xiàn)成的好選擇。
1.安裝部署
? ?1.1 下載最新發(fā)布/舊的版本的適合你機器的就可以,我用的是當(dāng)時的最新版process-exporter-0.7.10.linux-arm64.tar.gz,可以用wget + 下載鏈接 命令直接下載到服務(wù)器上也可以下載下來拖進(jìn)去解壓
下載高速入口:“點我!點我!點我!”
????1.2 進(jìn)入解壓出的目錄,我們開始設(shè)置我們需要監(jiān)控的進(jìn)程。Process-Exporter的做法是配置需要監(jiān)控的進(jìn)程的名稱,他會去搜索該進(jìn)程從而得到其需要的監(jiān)控信息,其實也就是我們常做的“ps -efl | grep xxx”命令來查看對應(yīng)的進(jìn)程。解壓出來配置文件是沒有的,需要創(chuàng)建,名字隨便。

以監(jiān)控 “java” 為例:
process_names:
? ? ? ? - name: "{{.Matches}}"
? ? ? ? ? cmdline:
? ? ? ? ? - 'java'
這里,在配置文件(process-conf.yaml)中,我添加了1個監(jiān)控的進(jìn)程“java”,一個process_names就定義了要監(jiān)控的一組進(jìn)程,{{.Matches}}模板表示映射包含應(yīng)用命令行所產(chǎn)生的所有匹配項,還有其他模板如下:
????1.3模板變量:
? ? {{.Comm}} contains the basename of the original executable, i.e. 2nd field in /proc/<pid>/stat
????{{.ExeBase}} contains the basename of the executable
????{{.ExeFull}} contains the fully qualified path of the executable
????{{.Username}} contains the username of the effective user
????{{.Matches}} map contains all the matches resulting from applying cmdline regexps
1.4 配置好后,我們依據(jù)此配置文件來運行process-exporter:
./process-exporter -config.path process-conf.yaml &
1.5 查看是否運行成功,有沒有數(shù)據(jù)
curl http://localhost:9256/metrics
1.6 添加到開機自啟動(xxx使用絕對路徑)
xxx/xxx/process-exporter -config.path xxx/xxx/process-conf.yaml &
三、Grafana
????Grafana是一個開源的度量分析與可視化套件。經(jīng)常被用作基礎(chǔ)設(shè)施的時間序列數(shù)據(jù)和應(yīng)用程序分析的可視化,它在其他領(lǐng)域也被廣泛的使用包括工業(yè)傳感器、家庭自動化、天氣和過程控制等。
Grafana支持許多不同的數(shù)據(jù)源。每個數(shù)據(jù)源都有一個特定的查詢編輯器,該編輯器定制的特性和功能是公開的特定數(shù)據(jù)來源。
其工作模式主要分為三步:
設(shè)置數(shù)據(jù)源:可視化的基礎(chǔ)數(shù)據(jù)來源,例如從數(shù)據(jù)庫/Prometheus/ElasticSearch
配置數(shù)據(jù)抽取方式:例如通過數(shù)據(jù)庫的SQL/Prometheus的ProQuery等進(jìn)行數(shù)據(jù)查詢
數(shù)據(jù)面板配置:Grafana支持多樣的數(shù)據(jù)呈現(xiàn)方式,例如折線圖/直方圖/熱力圖等等,通過簡單的配置,即可通過多樣化的數(shù)據(jù)呈現(xiàn)方式去展示監(jiān)控數(shù)據(jù)
安裝部署
????Grafana的部署和Prometheus的部署差不多,我使用的是Windows,首先從官方下載安裝包:
官網(wǎng)高速入口:“點我!點我!點我!”
1. 下載安裝程序如下:

?2. 直接雙擊 grafana-cli.exe 啟動
?3. 訪問地址?http://127.0.0.1:3000(默認(rèn)端口為3000,默認(rèn)用戶名和密碼均為admin)
四、Prometheus/Process-Exporter/Grafana/NSSM四件套組合使用
1.?Prometheus配置prometheus.yml

2.訪問:http://localhost:9090?查看連接狀態(tài),以下為正常狀態(tài)

3.?grafana配置Prometheus數(shù)據(jù)庫,添加數(shù)據(jù)源。


4.搭建展示Prometheus數(shù)據(jù)的儀表盤

????官網(wǎng)有很多模板,根據(jù)你自己的需要和喜歡去選擇即可

5.下載 NSSM
????從NSSM 官方網(wǎng)站下載最新版本的 NSSM 工具(選擇與系統(tǒng)位數(shù)匹配的版本),解壓到任意目錄(例如C:\Tools\nssm)。

2. 配置 Prometheus 服務(wù)
????以管理員身份打開命令提示符(CMD),執(zhí)行以下命令:
????進(jìn)入D盤:D:
????進(jìn)入指定目錄:cd?\Tools\nssm
3.注冊服務(wù):nssm install?
????此時會彈出 NSSM 配置窗口,需填寫以下關(guān)鍵信息:
? ??Application:Prometheus 可執(zhí)行文件路徑(例如C:\Prometheus\prometheus.exe)。
? ??App parameters:啟動參數(shù)(例如--config.file=C:\Prometheus\prometheus.yml,需根據(jù)實際配置文件路徑填寫)。
? ??Startup directory:工作目錄(設(shè)置為 Prometheus 所在目錄,如C:\Prometheus)。
? ??Output:日志路徑(例如C:\Prometheus\logs\stdout.log和C:\Prometheus\logs\stderr.log,需提前創(chuàng)建目錄)。
4.啟動服務(wù)
? ??配置完成后,在命令提示符中執(zhí)行:net start prometheus
????服務(wù)啟動后,Prometheus 將在后臺運行,任務(wù)管理器中僅顯示nssm.exe進(jìn)程,不會出現(xiàn)控制臺窗口。
5.其他注意事項
? ??自動啟動:在 NSSM 配置窗口的Startup選項卡中,將啟動類型設(shè)置為Automatic,確保系統(tǒng)重啟后服務(wù)自動運行。
? ??路徑空格處理:若路徑包含空格(如Program Files),建議使用短路徑(例如Progra~1)或用引號包裹完整路徑。
? ??參數(shù)配置:根據(jù)需求調(diào)整 Prometheus 的啟動參數(shù),例如數(shù)據(jù)存儲路徑(--storage.tsdb.path)、保留時間(--storage.tsdb.retention.time)等。
某園類似的帖子:https://www.cnblogs.com/cghuang/p/15384847.html