騰訊雲企業帳號認證 搭建 Prometheus 服務器監控系統
前言:為何需要監控系統
在現代雲端架構中,伺服器的穩定性與效能直接影響業務運作。若缺乏即時監控,可能在故障發生時才發現問題,造成嚴重損失。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 的核心技術,將為您在運維工作中提供強大助力,讓伺服器維護從「救火」轉為「預防」,真正實現高效穩定的系統管理!


