Prometheus 配置(Docker)


目錄

0. 配置思路
1. 開放端口
2. Docker 鏡像下載
3. 新建配置文件
4. 啟動 node-exporter
5. 啟動 prometheus
6. 啟動 alertmanager
7. 啟動 pushgateway
8. EMQ 監控數據推送到 pushgateway
9. 配置 Grafana 顯示

0. 配置思路

  1. 配置防火牆,開放用到的端口;
  2. 新建和編輯配置文件;
  3. 啟動 Prometheus 及其它組件容器(掛載配置文件);
  4. 瀏覽器打開 Prometheus UI 主頁,觀察監控對象;
  5. 使用 Grafana 顯示;

返回目錄

1. 開放端口

  • Port 9090 : prometheus (Prometheus Server)
  • Port 9100 : node-exporter (物理服務器指標,如 CPU、內存、網絡等)
  • Port 9091 : pushgateway (接收第三方應用推送的指標數據)
  • Port 9093 : alertmanager (接收來自 Prometheus Server 的告警,處理后通知管理員)
  • Port 3000 : grafana (使用 Grafana 顯示監控對象指標數據)

返回目錄

2. Docker 鏡像下載

$ docker pull prom/prometheus
$ docker pull prom/node-exporter
$ docker pull prom/pushgateway
$ docker pull prom/alertmanager
$ docker pull grafana/grafana

返回目錄

3. 新建配置文件

/home/prometheus/prometheus.yml                ## 用於掛載,覆蓋 prometheus 容器內部文件 /etc/prometheus/prometheus.yml
/home/prometheus/groups/nodegroups/node.json   ## 使用 file_sd_configs 方式實現動態配置,對應容器內 /usr/local/prometheus/groups/
/home/prometheus/rules/node-up.rules           ## AlertManager 服務地址以及告警規則文件,對應容器內 /usr/local/prometheus/rules/
/home/prometheus/alertmanager.yml              ## 用於掛載,覆蓋 alertmanager 容器內部文件 /etc/alertmanager/alertmanager.yml
prometheus.yml
## /home/prometheus/prometheus.yml
  1 # my global config
  2 global:
  3   scrape_interval: 15s                     ## 默認抓取時間
  4   evaluation_interval: 15s                 ## 每 15s 評估一次 rules
  5   # scrape_timeout is set to the global default (10s).
  6
  7 # Alertmanager configuration               ## Alertmanager 配置
  8 alerting:
  9   alertmanagers:
 10   - static_configs:
 11     - targets:
 12       - <ip>:9093                          ## Alertmanager 地址
 13
 15 rule_files:                                ## 添加 Alertmanager 告警 rules 規則文件
 16   # - "first_rules.yml"
 17   # - "second_rules.yml"
 18   - "/usr/local/prometheus/rules/*.rules"  ## 容器內部 rules 規則文件地址
 19
 21 scrape_configs:                            ## 數據拉取配置
 22   - job_name: "prometheus"                 ## 在這個配置內的時間序列,每一條都會自動添加{job_name:"prometheus"}的標簽
 23     static_configs:
 24     - targets: ["<ip>:9090"]
 25       labels:
 26         instance: prometheus
 27         service: prometheus-service
 28
 29   - job_name: "node-exporter"              ## 服務器物理機監控
        scrape_interval: 15s                   ## 停止/恢復服務 15s 后 Alert 的狀態才會發生變化
 30     file_sd_configs:                       ## file_sd_configs 方式:以 Json 或 Yaml 方式修改配置,Prometheus 會自動加載無需重啟服務
 31       - files: ["/usr/local/prometheus/groups/nodegroups/*.json"]

 40   - job_name: "pushgateway"                ## 監控 EMQ
 41     scrape_interval: 5s
 42     honor_labels: true
 43     static_configs:
 44     - targets: ["<ip>:9091"]

 46   - job_name: "grafana"                    ## 監控 Grafana
 47     static_configs:
 48     - targets: ["<ip>:3000"]
node.json
## /home/prometheus/groups/nodegroups/node.json
  1 [
  2   {
  3     "targets": [
  4       "<ip>:9100"
  5     ],
  6     "labels": {
  7       "instance": "vm-<ip>",
  8       "service": "node-service"
  9     }
 10   }
 11 ]
node-up.rules
## Prometheus 配置 AlertManager 告警規則
## /home/prometheus/rules/node-up.rules
1 groups:
2 - name: node-up
3   rules:
4   - alert: node-up
5     expr: up{job="node-exporter"} == 0
6     for: 15s                            ## 等待15s Alert 狀態改變
7     labels:
8       severity: 1
9       team: node
10     annotations:
11       summary: "{{ $labels.instance }} 已停止運行! "

## 該 rule 規則監測 job="node-exporter" Node 是否為活動,人為停止 node-exporter 服務來驗證該規則;
## 可以觀察 Prometheus -> Targets -> Rules 狀態;
## 15s 后查看是否收到告警郵件;
## AlertManager 主頁可以查看 alert 信息和靜默設置;
alertmanager.yml
  ## /home/prometheus/alertmanager.yml
  1 global:                                       ## 全局配置,包括報警解決后的超時時間、SMTP 相關配置、各渠道通知的 API 地址等
  2   resolve_timeout: 5m                         ## 報警觸發后,每隔 5分鍾會自動發送一次告警郵件
  3   smtp_from: 'youraddr@163.com'               ## 配置 SMTP 方式發送郵件
  4   smtp_smarthost: 'smtp.163.com:465'
  5   smtp_auth_username: 'youraddr@163.com'
  6   smtp_auth_password: 'yourcode'              ## 郵箱授權碼
  7   smtp_require_tls: false
  8   smtp_hello: '163.com'
  9 route:                                        ## 設置報警分發策略
 10   group_by: ['alertname']
 11   group_wait: 5s
 12   group_interval: 5s
 13   repeat_interval: 5m                         ## 生產環境 20m ~ 30m
 14   receiver: 'email'
 15 receivers:                                    ## 配置告警信息接收者信息
 16 - name: 'email'
 17   email_configs:
 18   - to: 'youraddr@qq.com'
 19     send_resolved: true
 20 inhibit_rules:                                ## 抑制規則配置
 21   - source_match:
 22       severity: 'critical'
 23     target_match:
 24       severity: 'warning'
 25     equal: ['alertname', 'dev', 'instance']

返回目錄

4. 啟動 node-exporter

## 映射目標服務器響應的狀態文件,用於收集服務器 CPU、內存、網絡等指標
$ docker run --name node-exporter -d -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --net="host" prom/node-exporter
## 啟動完成后,瀏覽器訪問:http://<IP>:9100/metrics 打開 Graph 搜索欄輸入 node 會出現提示選項,選中任意一項便可查看該項的數據(列表或圖形)

返回目錄

5. 啟動 prometheus

$ docker run --name prometheus -d -p 9090:9090 \
-v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \  ## 掛載 prometheus.yml 靜態配置文件
-v /home/prometheus/groups/:/usr/local/prometheus/groups/ \          ## 掛載動態配置文件
-v /home/prometheus/rules/:/usr/local/prometheus/rules/ \            ## 掛載 Alertmanager 告警規則文件
prom/prometheus:latest

## 啟動完成后,瀏覽器訪問:http://<ip>:9090 即可打開默認的 UI 頁面;
## 在 Status 下的 Targets 可以看到添加在 prometheus.yml 和 node.json 中的項目;
## 在 Status 下的 Rules 可以看到添加在 node-up.rules 中的規則;

返回目錄

6. 啟動 alertmanager

## 將本地配置文件 /home/prometheus/alertmanager.yml 掛載到容器內指定位置(/etc/alertmanager/alertmanager.yml)
$ docker run -d --name alertmanager -p 9093:9093 -v /home/prometheus/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager

返回目錄

7. 啟動 pushgateway

$ docker run --name pushgateway -d -p 9091:9091 prom/pushgateway

返回目錄

8. EMQ 監控數據推送到 pushgateway

## /home/prometheus/prometheus.yml 文件中添加“EMQ X Pushgateway 監控”
## EMQ X Dashboard 中啟動 emqx_statsd 插件
## 在 Prometheus 主頁中查看 EMQ 相關監控數據

返回目錄

9. 配置 Grafana 顯示

$ docker run -d --name grafana -p 3000:3000 grafana/grafana
## 啟動成功后,瀏覽器訪問 http://<ip>:3000 打開 Dashboard 控制台。

(1)添加源:
     ## Configuration -> DATA SOURCES -> Prometheus   
     ## HTTP -> URL -> http://<ip>:9090

(2)導入自帶模板:
     ## Data Sources/Prometheus -> Dashboards -> 導入: Prometheus Stats
                                                       Prometheus 2.0 Stats
                                                       Grafana metrics (需要在 prometheus.yml 中添加相應 job)
(3)導入 Grafana 監控系統指標模板:
     ## Grafana 官網下載:https://grafana.com/grafana/dashboards (搜索 1 Node Exporter)
     ## “+” -> import -> Upload JSON file 導入下載到的 JSON 文件即可

返回目錄

參考鏈接-Prometheus 監控報警系統 AlertManager 之郵件告警
參考鏈接-基於 Prometheus、Grafana 的物聯網 MQTT 服務器可視化監控
參考鏈接-Prometheus+Grafana 介紹及使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM