Prometheus

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

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

參考資料