實訓背景
你是一家企業的運維工程師,需將服務器的systemd服務監控集成到Prometheus,并通過Grafana展示實時數據。需求如下:
- 數據采集:監控所有systemd服務的狀態(運行/停止)、資源占用(CPU、內存)。
- 可視化展示:在Grafana中創建儀表盤,實時查看服務健康狀態。
- 告警集成:當關鍵服務(如Nginx)停止時觸發郵件告警。
環境準備
- 操作系統:Ubuntu 22.04 LTS。
- 安裝依賴:
sudo apt install prometheus prometheus-node-exporter grafana
- 目錄結構:
- Prometheus配置目錄:
/etc/prometheus/
- Grafana數據目錄:
/var/lib/grafana
- Prometheus配置目錄:
實訓步驟
任務1:配置Node Exporter收集systemd指標
目標:啟用Node Exporter的systemd
模塊,暴露服務狀態數據。
操作步驟:
-
修改Node Exporter配置:
sudo nano /etc/default/prometheus-node-exporter
添加以下參數:
ARGS="--collector.systemd"
-
重啟Node Exporter:
sudo systemctl restart prometheus-node-exporter
-
驗證指標采集:
訪問http://localhost:9100/metrics
,搜索systemd
開頭的指標(如systemd_units
)。
任務2:配置Prometheus抓取數據
目標:讓Prometheus從Node Exporter拉取數據。
操作步驟:
-
編輯Prometheus配置文件:
sudo nano /etc/prometheus/prometheus.yml
在
scrape_configs
部分添加:- job_name: 'node'static_configs:- targets: ['localhost:9100']
-
重啟Prometheus:
sudo systemctl restart prometheus
-
驗證數據抓取:
訪問http://localhost:9090
,進入 Status > Targets,確認node
任務狀態為 UP。
任務3:創建Grafana儀表盤
目標:導入預設儀表盤,可視化監控數據。
操作步驟:
-
啟動Grafana并設置開機自啟:
sudo systemctl enable grafana-server sudo systemctl start grafana-server
-
登錄Grafana:
瀏覽器訪問http://localhost:3000
,默認賬號/密碼:admin/admin
。 -
添加Prometheus數據源:
- 左側菜單 Configuration > Data Sources > Add data source。
- 選擇 Prometheus,URL填寫
http://localhost:9090
,點擊 Save & Test。
-
導入官方儀表盤:
- 左側菜單 Dashboards > Import。
- 輸入儀表盤ID
8919
(Node Exporter Full),點擊 Load。 - 選擇數據源為Prometheus,點擊 Import。
-
查看監控數據:
在儀表盤中找到 Systemd Units 面板,查看各服務狀態。
任務4:監控關鍵服務(如Nginx)
目標:當Nginx服務停止時觸發告警。
操作步驟:
-
創建告警規則文件:
sudo nano /etc/prometheus/alert_rules.yml
內容:
groups: - name: service_alertsrules:- alert: NginxDownexpr: systemd_unit_state{name="nginx.service", state="active"} != 1for: 1mlabels:severity: criticalannotations:summary: "Nginx服務異常停止!"
-
更新Prometheus配置:
sudo nano /etc/prometheus/prometheus.yml
添加:
rule_files:- "alert_rules.yml"
-
重啟Prometheus:
sudo systemctl restart prometheus
-
模擬故障測試:
sudo systemctl stop nginx # 手動停止Nginx # 訪問 http://localhost:9090/alerts 查看告警狀態
實訓總結
通過本次實訓,你實現了以下功能:
- 集中監控:通過Prometheus實時采集systemd服務狀態。
- 可視化展示:利用Grafana儀表盤直觀查看服務健康度。
- 智能告警:關鍵服務異常時自動觸發告警。
知識要點
-
核心工具鏈:
- Node Exporter:暴露系統和服務指標。
- Prometheus:存儲和查詢監控數據。
- Grafana:數據可視化與告警配置。
-
關鍵配置:
--collector.systemd
:啟用systemd指標收集。- PromQL查詢示例:
systemd_unit_state{name="nginx.service"}
。
-
調試命令:
curl http://localhost:9100/metrics | grep systemd # 驗證指標暴露 journalctl -u prometheus -f # 查看Prometheus日志
擴展挑戰:
- 自定義指標:編寫腳本監控服務日志錯誤次數,通過
textfile
收集器暴露給Prometheus。# 示例腳本 /opt/scripts/error_counter.sh echo "service_errors_total $(grep 'ERROR' /var/log/myapp.log | wc -l)" > /var/lib/node_exporter/errors.prom
- 多節點監控:修改Prometheus配置,監控多臺服務器的systemd服務。
- 告警通知:集成Alertmanager,將告警發送至Slack或釘釘。