# 普羅米修斯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. 先將樹梅派更新: ```bash= sudo apt-get update && sudo apt-get upgrade # p.s. 如果執行上述指令,會出現Error訊息,請執行以下指令: sudo apt full-upgrade ``` #### B. 下載壓縮檔: ```bash= wget https://github.com/prometheus/prometheus/releases/download/v2.35.0/prometheus-2.35.0.linux-armv7.tar.gz ``` :::success 執行完指令後,點選資料夾會看見出現了一個壓縮檔 :::  #### C. 解壓縮檔案: ```bash= tar xfz prometheus-2.35.0.linux-armv7.tar.gz ``` :::success 執行完指令後,會出現解壓縮完畢的資料夾 :::  #### D. 將路徑轉移到 prometheus-2.35.0.linux-armv7 的資料夾: ```bash= cd prometheus-2.35.0.linux-armv7 ``` #### E. 找自己的 ip 位置: ```bash= hostname -i 192.168.209.128 ``` #### F. 執行 prometheus服務: ```bash= ./prometheus #如果上面指令無法進入該網址,是因為port9090有被占用,所以需要換一個port ./prometheus --web.listen-address=:9010 & ``` :::success 執行完指令後,會在prometheus-2.35.0.linux-armv7 的資料夾中出現data資料夾 :::  #### G. 打開一個網頁,然後在網頁輸入網址的地方打上: ```bash= # 紅色部分為剛剛使用 hostname -i 找到的ip位置 http://192.168.209.128:9090 # 如果剛剛port有問題,有做port轉換的話,請輸入下面的網址 http://192.168.209.128:9010 ``` :::success 成功之後就會有以上畫面 :::  #### H. 將資料夾更名: ```bash= # 回到根目錄,將資料夾名字改成縮短版 cd ~ # 把資料夾prometheus-2.35.0.linux-armv7改名為prometheus mv prometheus-2.35.0.linux-armv7 prometheus ``` :::success 輸入指令過後資料夾名稱會改變 :::  #### I. 開啟 nano 編輯: ```bash= sudo nano /etc/systemd/system/prometheus.service ``` :::spoiler 在 nano 的文字檔內輸入 ( 因為每次開機會執行位於 /home/pi/prometheus/prometheus 內的執行檔,配合的設定檔是 /home/pi/prometheus/prometheus.yml。yml 檔內可設定透過瀏覽器連線的 Port,預設是 9090,要改成9010 ) ```bash= [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 服務、 設定開機時啟動服務 :::spoiler 如果想在開機時自動執行普羅米修斯服務: ```bash= sudo systemctl enable prometheus ``` ::: :::spoiler 如果要手動啟動普羅米修斯服務: ```bash= sudo service prometheus start ``` ::: :::spoiler 如果要手動停止服務: ```bash= sudo service prometheus stop ``` ::: :::spoiler 檢視服務是否正常啟動: ```bash= sudo service prometheus status ``` ::: :::success 成功畫面為出現綠色active (running) :::  :::danger 如果遇到了錯誤訊息,可以試著使用 ```bash= systemctl daemon-reload #再填入自己的密碼,重新開啟一次 prometheus ``` ::: #### K. 去到網頁部分,先 F5 更新頁面 :::success 可以看到下拉式選單,可以選擇不同的資料類型 :::  :::success 點按Execute可以得到,以下有兩個例子 :::  :::success 記憶體配置的狀況圖 :::   ## 2. 安裝 / 設定Node Exporter #### A. 下載、解壓縮 node_exporter: ```bash= # 先到 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 # 解壓縮 ``` :::success 下載完壓縮檔會出現tar.gz檔 :::  :::success 解壓縮過後會出現一個同名資料夾 :::  #### B. 更改資料夾名稱: ```bash= mv node_exporter-1.1.2.linux-armv7 node_exporter ```  #### C. 開啟 nano 編輯: ```bash= sudo nano /etc/systemd/system/nodeexporter.service ``` :::spoiler 在 nano 的文字檔內輸入 ```bash= [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 服務: :::spoiler 如果想在開機時自動執行 node_exporter: ```bash= sudo systemctl enable nodeexporter ``` ::: :::spoiler 如果要手動啟動 node_exporter服務: ```bash= sudo service nodeexporter start ``` ::: :::spoiler 如果要手動停止服務: ```bash= sudo service nodeexporter stop ``` ::: :::spoiler 檢視服務是否正常啟動: ```bash= sudo service nodeexporter status ``` :::  ```bash= # 去該網頁查看 nodeexporter 是否可以啟動正常 http://192.168.209.128:9100 ``` :::success 一開始進入的頁面 :::  :::success 點選Metrics後的結果頁面 :::  #### E. 使用 nano 修改prometheus.yml ( 設定檔 ) : 讓他定時向監控主機的exporter取資料。 ```bash= # 先變更prometheus檔案所在的路徑 cd prometheus nano prometheus.yml ``` :::spoiler 在nano檔內,要修改 ( 由於安裝的 Prometheus 和 node_exporter 在同一台樹莓派,yml設定檔內用 localhost:9100 取得受監控主機數據,如果分別安裝在兩部主機,需將 localhost 改成安裝 Exporter 的主機 IP ) ```bash= - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100'] ``` ::: :::success 在檔案最後加上以下幾行 node_exporter 設定 :::  ## 3. 安裝 Grafana 因為grafana系統是以視覺化著稱,但prometheus的視覺化呈現的功能較弱,所以可以藉由利用原本在grafana有的dashboard範本,做出一個把主機監控的數據呈現成一個可視化圖表  ```bash= # 回到根目錄 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 ```   ```bash= # 更改名稱 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 & ```   ```bash= # 測試服務是否已啟動,打開網頁 port3000的地方 192.168.209.128:3000 ``` :::success 啟動時,在cmd顯示的畫面 (去網址port 3000地方會顯示此) :::  :::spoiler 開機時會自動啟動 Grafana 服務 ```bash= sudo systemctl daemon-reload sudo systemctl enable grafana-server ``` ::: :::spoiler 如要手動啟動 Grafana 服務 ```bash= sudo systemctl start grafana-server ``` ::: ## 4. 建立普羅米修斯資料來源 #### A. 使用 admin 登入,預設密碼為 admin : :::success 第一次登入後會要求更改密碼 :::  :::success 進入此畫面就可以開始使用 grafana 了 :::  #### B. 利用 prometheis 蒐集的資料,呈現在 Grafana Dashboard: ##### a. 點選左下角的「齒輪」,再點選「Add data source」,進入資料來源設定畫面  ##### b. 選擇「Prometheus」類型  ##### c. 設定 Prometheus 伺服主機的網址、更改存取方式 ```bash= # 填入自己的ip位置 http://192.168.209.128:9090 #要注意port是否有更改過 ```  ##### d. 網頁下拉,選擇「Save & Test」,出現綠色框表示設定測試成功  #### C. 匯入Dashboard: ##### a. 進入[網址](https://grafana.com/grafana/dashboards/),搜尋 node exporter  ##### b. 記下範本編號 或是 點選 copy ID to Clipboard  ##### c. 回到 grafana 網頁,點選左側選單「+」→ 「Import」,輸入 Dashboard 編號,再按下右方的 Load 並且也可以用  ##### d. 選擇 Prometheus,按下 Import ,就匯入完成了  # 展示、應用 ### 監控系統變化 假如你是個破電腦的用戶,需要多多關心記憶體狀態的話,可以多多利用Grafana觀察還剩多少可用空間。並且也可以用Grafana監控cpu狀態,避免虛擬機突然掛掉   ### 配置警告 通過Grafana圖表我們可以看見各種指標隨著時間變化,這一點方便我們判斷系統某個資源是否異常。但我們不能一直盯著 Dashboard,所以這時候 Prometheus 的告警功能就很方便了 Prometheus 提供用户可以自己配置的告警規則,在處理 Metrics 數據的时候,如果發現某個規則被觸發,就執行對應的告警動作,通過 email 或者其他方式通知用户。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.