虚拟化容器,大数据,DBA,中间件,监控。

Prometheus 配置(Docker)

29 12月
作者:admin|分类:系统运维

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 文件即可
        
浏览491 评论0
返回
目录
返回
首页
k8s的Rolling Update(滚动更新应用) ansible获取远程机器上的ip地址