騰訊雲企業帳號認證 搭建 Prometheus 服務器監控系統

騰訊雲國際 / 2026-05-14 22:30:44

前言:為何需要監控系統

在現代雲端架構中,伺服器的穩定性與效能直接影響業務運作。若缺乏即時監控,可能在故障發生時才發現問題,造成嚴重損失。Prometheus 作為開源監控系統,以其高靈活性、強大的查詢語言(PromQL)及豐富的生態系統,成為企業級監控的首選。本文將手把手教您搭建完整的 Prometheus 監控系統,從零開始,包含環境配置、服務部署、視覺化與告警設定,助您輕鬆掌握伺服器監控核心技術!

準備環境

系統需求

Prometheus 對硬體需求較低,但建議至少 2 核 CPU、4GB RAM。系統建議使用 Ubuntu 20.04 LTS 或 CentOS 7+。此外,確保安裝 wget、curl、systemd 等工具,並開通必要端口(9090、9100、3000)。

防火牆設定

以 Ubuntu 為例,使用 ufw 開放端口:

sudo ufw allow 9090
sudo ufw allow 9100
sudo ufw allow 3000
sudo ufw enable

若使用 firewalld(如 CentOS):

sudo firewall-cmd --permanent --add-port=9090/tcp
sudo firewall-cmd --permanent --add-port=9100/tcp
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload

請確認防火牆設定正確,避免因端口阻擋導致監控失效。

安裝 Prometheus 伺服器

下載與解壓

首先下載最新版 Prometheus 二進制文件:

wget https://github.com/prometheus/prometheus/releases/download/v2.40.5/prometheus-2.40.5.linux-amd64.tar.gz
tar xvfz prometheus-2.40.5.linux-amd64.tar.gz
cd prometheus-2.40.5.linux-amd64

若您使用其他系統架構(如 ARM),請從官方下載頁面選擇對應版本。解壓後目錄包含 prometheus 可執行檔、配置文件模板及文檔。

配置 Prometheus

編輯 prometheus.yml 檔案,這是 Prometheus 的核心配置文件。預設配置已包含監控自身(prometheus job),但需添加 Node Exporter 的目標。以下是基本配置範例:

global:
  scrape_interval: 15s      # 每15秒採集一次數據
  evaluation_interval: 15s  # 評估告警規則的頻率

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: "prometheus"  # 監控 Prometheus 自身
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node_exporter"  # 監控Node Exporter
    static_configs:
      - targets: ["localhost:9100"]  # Node Exporter 預設端口

YAML 格式非常嚴格,縮進必須使用空格(不能用 Tab),否則 Prometheus 會啟動失敗。若配置文件有誤,啟動時會報錯,需仔細檢查。建議使用 VS Code 等編輯器開啟 YAML 檔案,以查看語法高亮與錯誤提示。

部署 Node Exporter

安裝與啟動

Node Exporter 是 Prometheus 官方提供的基礎設施監控導出器,用於採集伺服器硬體及系統指標。下載並解壓:

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.6.1.linux-amd64.tar.gz
cd node_exporter-1.6.1.linux-amd64

若需讓 Node Exporter 後台運行,建議使用 systemd 管理服務:

sudo useradd -rs /bin/false node_exporter
sudo cp node_exporter /usr/local/bin/
sudo nano /etc/systemd/system/node_exporter.service

填入以下內容:

[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

保存後啟動服務:

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

驗證服務狀態:systemctl status node_exporter。若顯示「active (running)」,表示安裝成功。

啟動服務與驗證

回到 Prometheus 目錄,啟動服務:

./prometheus --config.file=prometheus.yml

若無報錯,打開瀏覽器訪問 http://localhost:9090。點擊左側「Status」->「Targets」,確認 node_exporter 的狀態為「UP」。若顯示 DOWN,請檢查防火牆、服務狀態及配置文件。

此外,可在 Prometheus 的 Graph 頁面輸入查詢語句,例如 node_cpu_seconds_total,查看是否返回數據。若成功,代表監控系統已正常運作!

整合 Grafana 視覺化

安裝 Grafana

Grafana 是強大的視覺化工具,能將 Prometheus 數據轉換為直觀圖表。以 Ubuntu 為例安裝:

sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

安裝完成後,訪問 http://localhost:3000,預設帳號為 admin/admin,登入後需修改密碼。

設定資料來源

點擊左側「Configuration」->「Data Sources」,選擇「Add data source」,選擇 Prometheus。在 URL 欄位輸入 http://localhost:9090,點擊「Save & Test」。若顯示「Data source is working」,表示連接成功。

匯入監控面板

進入 Grafana 首頁,點擊「+」->「Import」,輸入 Dashboard ID 1860(Node Exporter 全面監控),選擇剛創建的 Prometheus 資料來源,點擊「Import」。此時將顯示 CPU、記憶體、磁碟、網絡等指標的視覺化圖表。

若您需要更定制化的面板,可在 Grafana 社區尋找其他模板,或自行設計圖表。例如,可以添加「磁碟空間使用率」圖表,使用查詢語句 node_filesystem_avail_bytes / node_filesystem_size_bytes * 100

進階配置與告警設定

騰訊雲企業帳號認證 設定 Alertmanager

Alertmanager 負責處理 Prometheus 觸發的告警,並發送通知至郵件、Slack 等渠道。下載並解壓 Alertmanager:

wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz
tar xvfz alertmanager-0.25.0.linux-amd64.tar.gz
cd alertmanager-0.25.0.linux-amd64

編輯 alertmanager.yml,配置 SMTP 郵件通知:

global:
  smtp_smarthost: 'smtp.gmail.com:587'
  smtp_from: '[email protected]'
  smtp_auth_username: '[email protected]'
  smtp_auth_password: 'your_app_password'  #  Gmail 需使用應用專用密碼

route:
  receiver: 'email'
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 5m
  repeat_interval: 1h

receivers:
  - name: 'email'
    email_configs:
      - to: '[email protected]'
        from: '[email protected]'
        smarthost: 'smtp.gmail.com:587'
        auth_username: '[email protected]'
        auth_password: 'your_app_password'
        html: '{{ template "email.default.html" . }}'
        headers:
          Subject: "[Prometheus Alert] {{ .CommonLabels.alertname }}"

注意:Gmail 用戶需在帳號設定中開啟「允許不安全的應用程式」,或使用應用專用密碼。若使用企業郵件服務,請參考其 SMTP 設定。

配置告警規則

在 Prometheus 的 prometheus.yml 中添加 rule_files 指向告警規則文件:

rule_files:
  - "rules.yml"

騰訊雲企業帳號認證 創建 rules.yml 檔案,定義告警規則:

groups:
  - name: example
    rules:
      - alert: HighCPUUsage
        expr: avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100 < 10
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "高CPU使用率"
          description: "CPU 使用率超過90%持續5分鐘"
      - alert: LowDiskSpace
        expr: node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100 < 10
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "磁碟空間不足"
          description: "根目錄可用空間低於10%"

重啟 Prometheus 服務後,當觸發條件時,Alertmanager 會發送通知。測試告警可手動模擬條件,例如使用 stress-ng 工具加載 CPU,觀察告警是否觸發。

結語:監控系統的持續優化

搭建 Prometheus 監控系統僅是第一步,後續需根據業務需求持續優化。例如,可擴展監控範圍至應用層(如 Java 應用使用 JMX Exporter)、數據庫(MySQL Exporter)、Kubernetes 集群(kube-state-metrics)等。此外,定期審查告警規則,避免過多無效告警,確保系統穩定性。

監控系統如同系統的「神經系統」,及時發現問題才能快速解決。掌握 Prometheus 的核心技術,將為您在運維工作中提供強大助力,讓伺服器維護從「救火」轉為「預防」,真正實現高效穩定的系統管理!

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系