Prometheus

Prometheus 是一個由 Grafana Lab 開發並維護的開源監控系統,用於記錄和查詢系統的監控資料。Prometheus 透過 HTTP 協定來收集監控資料,並且提供一個簡單的查詢語言 PromQL 來查詢監控資料。

[!IMPORTANT] Prometheus 是一個時間序列資料庫

Use Prometheus to Get Node Exporter Metrics and Send to Grafana Cloud

安裝 Prometheus,以便收集 Node Exporter 的監控資料,並將監控的資料送往 Grafana Cloud 的 Prometheus。

Install Prometheus

新增一個 prometheus 使用者,並且不要建立家目錄,也不要讓他可以登入。

sudo useradd --no-create-home --shell /bin/false prometheus

下載 Prometheus 的檔案並解壓縮。

wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-arm64.tar.gz

tar xvfz prometheus-2.45.0.linux-arm64.tar.gz

將 Prometheus 的執行檔案複製到 /usr/local/bin/ 目錄下。

sudo cp prometheus-2.45.0.linux-arm64/prometheus /usr/local/bin/

sudo cp prometheus-2.45.0.linux-arm64/promtool /usr/local/bin/

將 Prometheus 的設定檔案複製到 /etc/prometheus/ 目錄下。

sudo cp -r prometheus-2.45.0.linux-arm64/consoles /etc/prometheus

sudo cp -r prometheus-2.45.0.linux-arm64/console_libraries /etc/prometheus

sudo chown -R prometheus:prometheus /etc/prometheus/consoles

sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

刪除 Prometheus 的壓縮檔案和解壓縮後的目錄。

rm -rf prometheus-2.45.0.linux-arm64.tar.gz prometheus-2.45.0.linux-arm64

Create Prometheus Service

建立一個 service 檔案,讓 Prometheus 可以在背景執行。

sudo touch /etc/systemd/system/prometheus.service

sudo vim /etc/systemd/system/prometheus.service

Service 檔案內容如下:

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/usr/local/bin/prometheus \
    --config.file=/etc/prometheus/prometheus.yml \
    --storage.tsdb.path=/var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload

sudo systemctl start prometheus

Prometheus Configuration

/etc/prometheus/ 目錄下建立一個 prometheus.yml 檔案,並且將內容貼上。

global:
  scrape_interval: 60s

scrape_configs:
  - job_name: k3s
    static_configs:
      - targets: ["10.0.1.10:9100", "10.0.1.11:9100", "10.0.1.12:9100"]

remote_write:
  - url: "<grafana cloud prometheus>"
    basic_auth:
      username: <username>
      password: <password>

這樣 prometheus 就可以收集到 node exporter 的資料,並將 node exporter 的資料送往 Grafana Cloud 的 Prometheus。

如果你想移除從 exporter 取得的部分 metrics 資料,可以使用 metric_relabel_configs

scrape_configs:
  - job_name: k3s
    static_configs:
      - targets: ["10.0.1.10:9100", "10.0.1.11:9100", "10.0.1.12:9100"]

    metric_relabel_configs:
      - source_labels: [__name__]
        regex: "^(go_).*"
        action: drop

參考資料


This site uses Just the Docs, a documentation theme for Jekyll.