AhFei

AhFei

简洁的写作需要勇气

探針 Grafana + Prometheus 之比 Docker 更簡單的部署流程

若無單獨說明,按照文章代碼塊中命令的順序,一條一條執行,即可實現目標。
適用系統:Debian 系發行版,包括 Ubuntu ,其他發行版按流程稍改命令一般也可。

完成部署預計時間:15 分鐘 (但是看一遍也要 15 分鐘,所以是 30 分鐘 ?)

文章裡的一鍵腳本僅適用於 amd64 系統


image.png

GrafanaPrometheusNode Exporter 是一套流行的開源監控工具,用於收集,存儲,查詢系統和應用程序的各種使用率,並可視化顯示。每個工具都有特定的功能:

  1. Grafana:是一款可視化程序,提供開源版和企業版。 Grafana 不從客戶端收集任何數據,也不存儲,它的功能是以直觀且優美的格式顯示 Prometheus 或其他數據源(SQL 等)收集的數據。 它允許用戶自定義面板,支持警報、註釋、儀表板變量、插件和身份驗證。
  2. Prometheus:是一個開源的系統監控和警告程序,它使用 HTTP 協議輪詢客戶端以獲取所需數據。維護結果的時間序列數據庫,以預定義的時間間隔輪詢每個客戶端,進而能夠構建客戶端長期性能的概覽。
  3. Node Exporter:在客戶端節點上能使用各種收集器,但 Prometheus 推薦使用自己的 Node Exporter 工具。 它收集大量硬體和內核指標,如 CPU,磁碟 I/O,記憶體,網絡等,收集的可用指標的完整列表可以在 https://github.com/prometheus/node_exporter 頁面上找到。

由於篇幅過長,更好的閱讀體驗,請移步博客: https://blog.vfly2.com/2023/07/a-simpler-deployment-process-of-the-probe-grafana-prometheus-compared-to-docker/

資源使用率#

Grafana 和 Prometheus 部署好後,內存使用量增加了 200MB 多;監控的客戶端為 3 個的情況下,在運行一天之後,內存佔用達到 300MB 。總的來說,資源消耗量較大,適合 2g 內存、20GB 磁碟空間的機子作為監控伺服器。

通過 top 命令,node_exporter 占用了大約 20 MB 內存。

top -p $(pgrep node_exporter)

部署流程#

默認,Grafana Web 界面使用端口 3000 訪問,而 Prometheus 使用端口 9090 ,Node Exporter 使用端口 9100 。開放防火牆:

sudo ufw allow 9090 comment 'prometheus'
sudo ufw allow 3000 comment 'grafana'
# Node Exporter 有所不同,在後面

為了獲得最佳結果,請在同一伺服器上運行 Prometheus 和 Grafana。下面將托管 Prometheus 和 Grafana 的伺服器的系統稱為 “監控伺服器”。被監控的系統是 “客戶端”。


本文中的步驟是為非 root 用戶編寫的。需要提升權限的命令以 sudo 為前綴。

在監控伺服器上開放防火牆,已完成✔#

如果不想使用腳本,或者希望了解安裝過程,請查看原文: https://blog.vfly2.com/2023/07/a-simpler-deployment-process-of-the-probe-grafana-prometheus-compared-to-docker/ ,考慮篇幅過長,因此這麼安排。

在監控伺服器上安裝 Prometheus 並作為服務運行#

複製一鍵安裝 Prometheus:(https://github.com/AhFeil/bash-script/blob/main/install-prometheus.sh)

wget -qO- 'https://raw.githubusercontent.com/AhFeil/bash-script/main/install-prometheus.sh' | sudo bash

若運行結束後,出現 active (running) ,則安裝成功。

通過 http://ip_addr:9090 訪問 Prometheus Web 界面和儀表板。將 ip_addr 替換為監控伺服器的地址。

在所有客戶端上安裝 Node Exporter,並開放防火牆。#

客戶端可以是 Linux 發行版,也可以是 Windows 等,不過 Node Exporter 僅適用於 Linux。

在客戶端只給 監控伺服器 IP 開放 9100 端口,記得修改監控伺服器 IP:

sudo ufw allow from 監控伺服器IP to any port 9100 comment 'node_exporter'

複製一鍵安裝 Node Exporter:(https://github.com/AhFeil/bash-script/blob/main/install-node_exporter.sh)

wget -qO- 'https://raw.githubusercontent.com/AhFeil/bash-script/main/install-node_exporter.sh' | sudo bash

若運行結束後,出現 active (running) ,則安裝成功。

更新的話重新運行一遍就可以。

配置 Prometheus 來監控客戶端#

客戶端節點現在已準備好進行監控。要將客戶端添加到 prometheus.yml ,請按照以下步驟操作:

在運行 Prometheus 的監控伺服器上,打開 prometheus.yml 進行編輯。

sudo vim /etc/prometheus/prometheus.yml

找到 scrape_configs ,裡面是作業列表。當前有一個名為 prometheus 的作業。此作業監視端口 9090 上的本地 Prometheus 任務。

prometheus 作業下方,添加第二個作業,其 job_nameremote_collector 。包括以下信息。

  • 設置抓取時間間隔: scrape_interval: 10s
  • 添加要監控的 IP 和 端口號 :9100 ,使用逗號分隔每個條目。
  • 要啟用對本地伺服器的監視,請將 localhost:9100 條目添加到列表中,並在本地安裝 Node Exporter。

該條目應類似於以下示例。將 remote_addr 替換為客戶端的實際 IP 地址。

...

  - job_name: "remote_collector"
    scrape_interval: 10s
    static_configs:
      - targets: ["remote_addr:9100", "localhost:9100"]

立即刷新 Prometheus,

sudo systemctl restart prometheus

使用 Web 瀏覽器重新訪問監控伺服器上端口 9090 的 Prometheus Web 門戶。選擇【Status】-【Targets】。將顯示 remote_collector 作業的第二個鏈接,指向客戶端上的端口 9100 。單擊鏈接查看統計數據。

image.png

安裝並部署 Grafana 伺服器#

Prometheus 收集的統計信息只能被視為原始數據轉儲。很難閱讀,而且沒有太大用處。

Grafana 提供了查看 Prometheus 收集的統計信息的界面。在運行 Prometheus 的同一伺服器上安裝 Grafana 並將 Prometheus 添加為數據源。

前置準備,

# 安裝一些必需的實用程序
sudo apt-get install -y apt-transport-https software-properties-common
# 導入 Grafana GPG 密鑰
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
# 添加 Grafana“穩定版本”存儲庫
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

安裝 Grafana 的開源版本。

sudo apt-get update && sudo apt-get install grafana

重新加載 systemctl 守護進程。

sudo systemctl daemon-reload

加入開機自啟,並立即啟動

sudo systemctl enable --now grafana-server.service

查看狀態

sudo systemctl status grafana-server

關聯 Grafana 和 Prometheus#

所有系統組件現已安裝,但 Grafana 和 Prometheus 尚未關聯。剩下的可以使用 Grafana Web 界面完成。

要集成 Grafana 和 Prometheus,請按照以下步驟操作:

  1. 瀏覽器訪問監控伺服器的 3000 端口。例如,輸入 http://ip_addr:3000 ,將 ip_addr 替換為實際 IP 地址。
  2. Grafana 顯示登錄頁面。使用用戶名和默認密碼都是 admin 。當出現提示時,將密碼更改為更安全的值。
  3. 成功更改密碼後,Grafana 將顯示 Grafana 儀表板。
  4. 要將 Prometheus 添加為數據源,請單擊齒輪符號(代表配置),然後選擇數據源。

image.png

  1. 在下一個顯示中,單擊 “添加數據源” 按鈕。
  2. 選擇 Prometheus 作為數據源。
  3. 對於本地 Prometheus 源,將 URL 設置為 http://localhost:9090 。大多數其他設置可以保留默認值。

image.png

  1. 對設置滿意後,選擇螢幕底部的【Save & test】按鈕。
  2. 如果所有設置均正確,Grafana 會確認 Data source is working

image

使用 Grafana ,導入儀表板模板#

可以創建自定義儀表板。然而,Prometheus 已經創建了一個儀表板來支持 Node Exporter,名為 Node Exporter Full ,下面是導入的流程。

要創建自定義儀表板,請單擊儀表板按鈕,該按鈕類似於四個正方形。然後選擇 + 新建儀表板。有關更多信息,請參閱 Grafana 構建儀表板指南。

  1. 在 Grafana 儀表板。選擇由四個正方形組成的儀表板圖標,

image.png

  1. 右邊【New】-【Import】。

image.png

  1. 然後在 【Import via grafana.com】, 輸入上一步中的 ID 1860 。然後選擇【Load】。

image.png

  1. 在下一個螢幕確認導入詳細信息。選擇 Prometheus 作為數據源,然後單擊【Import】按鈕。

image.png

  1. Node Exporter Full 儀表板立即生效。它顯示客戶端節點的性能指標和狀態,包括內存、RAM 和 CPU 詳細信息。

image.png


原文鏈接: https://blog.vfly2.com/2023/07/a-simpler-deployment-process-of-the-probe-grafana-prometheus-compared-to-docker/
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請注明來源 https://blog.vfly2.com/

如果你認為我的文章有幫助,歡迎使用 RSS 訂閱,也歡迎留言指正。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。