Try   HackMD

普羅米修斯Prometheus監控

tags: 大二

介紹

Grafana

Grafana是一款用Go語言開發的開源數據可視化工具,可以做數據監控和數據統計,帶有警告功能,而它的介面十分精美,且可以創建自定義的面版。

Grafana本身不保存監控數據,需要從其他數據源獲取,以下是Grafana支持接收的數據源,而我們這次的主題就是其中的 prometheus

Prometheus

是一個開源的系統監控和警報工具包

非常適合記錄時間序列資料,比如可以記錄機器CPU、Memory的使用情況,也可以在微服務中收集各個維度的資訊

本身,就是一個存時間序列的 資料集/資料庫,支援拉取資料,以及擁有外圍元件生態

Prometheus同其他時序數據庫相比有一个非常典型的特性:它是主動從各TARGET(客户端)上拉取(pull)數據,而非等待監控端的推送(push)

官方給的架構:

Node Exporter

在Prometheus的架構設計中,Prometheus Server并不直接服務監控特定的目標,其主要任務負責數據的收集,儲存且對外提供數據查詢支持。因此為了能夠監控到數據,如主機的CPU使用率或是記憶體使用狀況,我們需要使用到Exporter

Exporter是Prometheus的指標數據收集组件。它負責從目標Jobs收集數據,並把收集到的數據轉換為Prometheus支持的時序數據格式。和傳統的指標數據收集组件不同的是,他只負責收集,並不向Server端發送數據,而是等待Prometheus Server 主動住抓取

安裝

1. 安裝 / 設定prometheus

A. 先將樹梅派更新:

sudo apt-get update && sudo apt-get upgrade # p.s. 如果執行上述指令,會出現Error訊息,請執行以下指令: sudo apt full-upgrade

B. 下載壓縮檔:

wget https://github.com/prometheus/prometheus/releases/download/v2.35.0/prometheus-2.35.0.linux-armv7.tar.gz

執行完指令後,點選資料夾會看見出現了一個壓縮檔

C. 解壓縮檔案:

tar xfz prometheus-2.35.0.linux-armv7.tar.gz

執行完指令後,會出現解壓縮完畢的資料夾

D. 將路徑轉移到 prometheus-2.35.0.linux-armv7 的資料夾:

cd prometheus-2.35.0.linux-armv7

E. 找自己的 ip 位置:

hostname -i 192.168.209.128

F. 執行 prometheus服務:

./prometheus #如果上面指令無法進入該網址,是因為port9090有被占用,所以需要換一個port ./prometheus --web.listen-address=:9010 &

執行完指令後,會在prometheus-2.35.0.linux-armv7 的資料夾中出現data資料夾

G. 打開一個網頁,然後在網頁輸入網址的地方打上:

# 紅色部分為剛剛使用 hostname -i 找到的ip位置 http://192.168.209.128:9090 # 如果剛剛port有問題,有做port轉換的話,請輸入下面的網址 http://192.168.209.128:9010

成功之後就會有以上畫面

H. 將資料夾更名:

# 回到根目錄,將資料夾名字改成縮短版 cd ~ # 把資料夾prometheus-2.35.0.linux-armv7改名為prometheus mv prometheus-2.35.0.linux-armv7 prometheus

輸入指令過後資料夾名稱會改變

I. 開啟 nano 編輯:

sudo nano /etc/systemd/system/prometheus.service
在 nano 的文字檔內輸入

( 因為每次開機會執行位於 /home/pi/prometheus/prometheus 內的執行檔,配合的設定檔是 /home/pi/prometheus/prometheus.yml。yml 檔內可設定透過瀏覽器連線的 Port,預設是 9090,要改成9010 )

[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

J. 啟用 prometheus 服務、 設定開機時啟動服務

如果想在開機時自動執行普羅米修斯服務:
sudo systemctl enable prometheus
如果要手動啟動普羅米修斯服務:
sudo service prometheus start
如果要手動停止服務:
sudo service prometheus stop
檢視服務是否正常啟動:
sudo service prometheus status

成功畫面為出現綠色active (running)

如果遇到了錯誤訊息,可以試著使用

systemctl daemon-reload #再填入自己的密碼,重新開啟一次 prometheus

K. 去到網頁部分,先 F5 更新頁面

可以看到下拉式選單,可以選擇不同的資料類型

點按Execute可以得到,以下有兩個例子

記憶體配置的狀況圖


2. 安裝 / 設定Node Exporter

A. 下載、解壓縮 node_exporter:

# 先到 Github : node_exporter 取得版本號及相關資訊 wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-armv7.tar.gz tar -xzvf node_exporter-1.1.2.linux-armv7.tar.gz # 解壓縮

下載完壓縮檔會出現tar.gz檔

解壓縮過後會出現一個同名資料夾

B. 更改資料夾名稱:

mv node_exporter-1.1.2.linux-armv7 node_exporter

C. 開啟 nano 編輯:

sudo nano /etc/systemd/system/nodeexporter.service
在 nano 的文字檔內輸入
[Unit] Description=Prometheus Node Exporter Documentation=https://prometheus.io/docs/guides/node-exporter/ After=network-online.target [Service] User=pi Restart=on-failure ExecStart=/home/pi/node_exporter/node_exporter [Install] WantedBy=multi-user.target

D. 啟用 node_exporter 服務:

如果想在開機時自動執行 node_exporter:
sudo systemctl enable nodeexporter
如果要手動啟動 node_exporter服務:
sudo service nodeexporter start
如果要手動停止服務:
sudo service nodeexporter stop
檢視服務是否正常啟動:
sudo service nodeexporter status

# 去該網頁查看 nodeexporter 是否可以啟動正常 http://192.168.209.128:9100

一開始進入的頁面

點選Metrics後的結果頁面

E. 使用 nano 修改prometheus.yml ( 設定檔 ) :

讓他定時向監控主機的exporter取資料。

# 先變更prometheus檔案所在的路徑 cd prometheus nano prometheus.yml
在nano檔內,要修改

( 由於安裝的 Prometheus 和 node_exporter 在同一台樹莓派,yml設定檔內用 localhost:9100 取得受監控主機數據,如果分別安裝在兩部主機,需將 localhost 改成安裝 Exporter 的主機 IP )

- job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']

在檔案最後加上以下幾行 node_exporter 設定

3. 安裝 Grafana

因為grafana系統是以視覺化著稱,但prometheus的視覺化呈現的功能較弱,所以可以藉由利用原本在grafana有的dashboard範本,做出一個把主機監控的數據呈現成一個可視化圖表

# 回到根目錄 cd ~ # 繼續下載adduser 及 libfontconfig1 sudo apt-get install -y adduser libfontconfig1 # 下載 Grafana 套件、解壓縮 wget https://dl.grafana.com/oss/release/grafana-8.0.4.linux-amd64.tar.gz tar -zxvf grafana-8.0.4.linux-amd64.tar.gz

# 更改名稱 mv grafana-8.0.4.linux-amd64 /usr/local/grafana # 更名、更改位置 ( 移動到 /usr/local/grafana ) mv grafana-8.0.4.linux-amd64 grafana #只更名,但還在原本的位置 # 啟動grafana cd /usr/local/grafana/bin #資料夾有切換 cd grafana/bin # 沒有切換資料夾,在原資料夾pi ./grafana-server &

# 測試服務是否已啟動,打開網頁 port3000的地方 192.168.209.128:3000

啟動時,在cmd顯示的畫面
(去網址port 3000地方會顯示此)

開機時會自動啟動 Grafana 服務
sudo systemctl daemon-reload sudo systemctl enable grafana-server
如要手動啟動 Grafana 服務
sudo systemctl start grafana-server

4. 建立普羅米修斯資料來源

A. 使用 admin 登入,預設密碼為 admin :

第一次登入後會要求更改密碼

進入此畫面就可以開始使用 grafana 了

B. 利用 prometheis 蒐集的資料,呈現在 Grafana Dashboard:

a. 點選左下角的「齒輪」,再點選「Add data source」,進入資料來源設定畫面

b. 選擇「Prometheus」類型

c. 設定 Prometheus 伺服主機的網址、更改存取方式
# 填入自己的ip位置 http://192.168.209.128:9090 #要注意port是否有更改過

d. 網頁下拉,選擇「Save & Test」,出現綠色框表示設定測試成功

C. 匯入Dashboard:

a. 進入網址,搜尋 node exporter

b. 記下範本編號 或是 點選 copy ID to Clipboard

c. 回到 grafana 網頁,點選左側選單「+」→ 「Import」,輸入 Dashboard 編號,再按下右方的 Load 並且也可以用

d. 選擇 Prometheus,按下 Import ,就匯入完成了

展示、應用

監控系統變化

假如你是個破電腦的用戶,需要多多關心記憶體狀態的話,可以多多利用Grafana觀察還剩多少可用空間。並且也可以用Grafana監控cpu狀態,避免虛擬機突然掛掉

配置警告

通過Grafana圖表我們可以看見各種指標隨著時間變化,這一點方便我們判斷系統某個資源是否異常。但我們不能一直盯著 Dashboard,所以這時候 Prometheus 的告警功能就很方便了

Prometheus 提供用户可以自己配置的告警規則,在處理 Metrics 數據的时候,如果發現某個規則被觸發,就執行對應的告警動作,通過 email 或者其他方式通知用户。