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 介绍及使用

posted @ 2021-09-24 20:03  xiaobo0602  阅读(1086)  评论(0编辑  收藏  举报