Raspberry Pi 筆記(87):安裝普羅米修斯Prometheus監控工具

Prometheus 普羅米修斯是在2012年時在 SoundCloud 上構建的系統監視和告警工具軟體,大多數組件都是用 Go 語言編寫而成的,易於構建和部署。Prometheus 1.0 於 2016年7月發布,其特點包括:具備多維數據模型、操作簡便、彈性的數據收集及強大的查詢語言。它使用 HTTP 拉取(pull model)時間序列資料庫(time series database )中記錄實時指標,並具有靈活的查詢和實時警報功能,架構如下圖:
來源:prometheus.io

普羅米修斯採集監控數據的方法有兩種:一是在被收集目標上安裝代理程式,這個程式被稱為 exporter,官方 下載 網頁上有很多種類的 exporter 可以下載使用。這些 exporter 能為我們轉送目標主機的監控數據給普羅米修斯。這時候 exporter 會開啟一個 http Port,普羅米修斯就透過這個 HTTP 協定使用 Pull 的方式週期性拉取回應的數據。

另一種方法是使用 Push 的模式來進行數據收集,這時需要安裝一個 Push Gateway 程式,然後目標主機的資料可以推送到 Push Gateway,普羅米修斯再通過 Pull 的方式從 Push Gateway 取得數據。從架構圖裡可以看到 Pull metrics 分兩個方向的的原因,一個是直接從目標主機取得(pull)數據;另一個是對目標主機的 Push Gateway 拉取(pull)數據。

普羅米修斯定期從目標主機或服務拉取數據,當拉取的數據大於配置的記憶體時,普羅米修斯會將數據寫到硬碟或是雲端主機。當需要查詢時,可透過 PromQL、API、Console 或其他可視化系統如 Grafana、Promdash 呈現視覺化圖形。普羅米修斯可以設定規則 rules,定時查詢接收到的數據,當條件符合時,就觸發告警推送到設定的 Alertmanager。Alertmanager 收到觸發的訊息時,會判斷是否多個告警為同一事件,去掉重複發出的告警,分析是否為誤判或僅一次性告警後主機狀況隨即恢復正常,最後才由 Alertmanager 發出警告。

[安裝普羅米修斯]

安裝前先執行系統更新:
$ sudo apt-get update
$ sudo apt-get upgrade
連線到官網 下載 網頁,選擇要安裝的作業系統類型,或是那種架構下的系統,如下圖紅色框處:

選擇系統後,可以看到下方出現可以下載的檔案連結,按右鍵選擇「複製連結網址「,稍後會應用在安裝指令上直接下載安裝:

使用 wget下載 Prometheus 2.25.0版本程式,wget指令後面的網址就是剛剛複製的網址,可以直接在命令列處貼上:
$ wget https://github.com/prometheus/prometheus/releases/download/v2.25.0/prometheus-2.25.0.linux-armv7.tar.gz
解壓縮檔案:
$ tar xfz prometheus-2.25.0.linux-armv7.tar.gz
更換目錄到 prometheus-2.25.0.linux-armv7,然後執行以下指令啟動普羅米修斯:
$ cd prometheus-2.25.0.linux-armv7/
$ ./prometheus
這時可使用瀏覽器連線到樹莓派IP,使用 9090 Port就可以看到網頁呈現的內容,以我的IP:192.168.0.107為例:
http://192.168.0.107:9090
可以看到以下的畫面:


[設定開機時啟動服務]

如果每次重開機後,需要進入 Console 執行上述指令,才能開始提供服務,實在有點麻煩。以下就說明如何設定將普羅米修斯在每次開機時以服務的方式自動執行:
首先更名為簡短的目錄名稱,這樣在設定檔中寫目錄名稱才不會很長:
$ mv prometheus-2.25.0.linux-armv7/ prometheus/
其次使用 nano 編輯器在 /etc/systemd/system/ 目錄中建立一個文字檔:
$ sudo nano /etc/systemd/system/prometheus.service
檔案內容如下,這裡要注意的是 prometheus 的目錄路徑是否跟您解壓縮後存放執行檔的目錄路徑一樣?
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=pi
Restart=on-failure

ExecStart=/home/pi/prometheus/prometheus \
  --config.file=/home/pi/prometheus/prometheus.yml \
  --storage.tsdb.path=/home/pi/prometheus/data

[Install]
WantedBy=multi-user.target
每次開機會執行位於 /home/pi/prometheus/prometheus 內的執行檔,配合的設定檔是 /home/pi/prometheus/prometheus.yml。yml 檔內可設定透過瀏覽器連線的 Port,預設是 9090,可自行修改後,按下   CTRL   +    X   存檔,然後按   Y   確定後離開 nano 編輯器。

要在開機時,自動執行普羅米修斯服務,可執行以下命令:
$ sudo systemctl enable prometheus
如要手動啟動普羅米修斯服務,可執行以下指令:
$ sudo service prometheus start
如要手動停止服務,可執行以下指令:
$ sudo service prometheus stop
檢視服務是否正常啟動:
$ sudo service prometheus status

[結果]

上方的下拉選單可以讓使用者選擇不同的資料類型,如下圖:

例如:記憶體配置的狀況圖:

普羅米修斯的分析可以跟可視化工具 Grafana 結合使用,透過圖形的呈現瞭解受監控主機的狀況,下一篇文章再來瞭解一下如何安裝設定 Grafana 呈現普羅米修斯取得的數據,並呈現在瀏覽器上。

[參考資料]

Post a Comment

較新的 較舊