容器运行Prometheus监控 + alertmanager实现企微告警 + grafana可视化

内容简介

1. docker 运行 Prometheus、node-exporter、kafka-exporter、mysqld-exporter、alertmanager和grafana

2.Prometheus 实现监控服务器、mysql 和 kafka

3.alertmanager 实现邮箱和企业微信告警通知

4.grafana 实现监控可视化

启动监控服务

  1. 拉取 Prometheus 及其他组件的镜像
docker pull bitnami/prometheus
docker pull bitnami/node-exporter
docker pull bitnami/mysqld-exporter
docker pull bitnami/kafka-exporter

2.创建 prometheus.yml

global:                    #用于prometheus的全局配置,比如采集间隔,抓取超时时间等
  scrape_interval: 15s            #采集目标主机监控数据的时间间隔,默认为1m
  evaluation_interval: 15s         #触发告警生成alert的时间间隔,默认是1m

  scrape_timeout: 10s            #数据采集超时时间,默认10s

alerting:                #用于alertmanager实例的配置,支持静态配置和动态服务发现的机制
  alertmanagers:
    - static_configs:
        - targets: ["192.168.10.111:9095"]

rule_files:          #用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制 容器部署时需要修改为映射之后的容器目录
  - "/usr/local/prometheus/rules/*.yml"


scrape_configs:            #用于采集时序数据源的配置

  - job_name: "prometheus"        #每个被监控实例的集合用job_name命名,支持静态配置(static_configs)和动态服务发现的机制(*_sd_configs)
    static_configs:                #静态目标配置,固定从某个target拉取数据
      - targets: ["192.168.10.111:9090"]
  - job_name: 'node_exporter'
    static_configs:
      - targets: ["192.168.10.111:9100"]
  - job_name: "mysql"
    static_configs:
      - targets: ["192.168.10.111:9104"] #mysqld_exporter的端口
  - job_name: "kafka"
    static_configs:
      - targets: ["192.168.10.111:9308"] #kafka_exporter的端口

3.启动 Prometheus

docker run -d -p 9090:9090 -v /opt/docker_dir/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml bitnami/prometheus
docker run -d -p 9100:9100 bitnami/node-exporter
docker run -d -e MYSQLD_EXPORTER_PASSWORD=aaaaaa -p 9104:9104 bitnami/mysqld-exporter --config.my-cnf=/opt/docker_dir/prometheus/.my.cnf --mysqld.username=mysql_monitor --mysqld.address=192.168.10.111:3306

4.设置服务自启动

自启动命令:docker update --restart=always 容器名称

docker update --restart=always kafka-exporter

5.Prometheus结果展示

启动告警服务

邮箱告警

  1. 拉取镜像docker pull bitnami/alertmanager
  2. 创建文件配置文件:/opt/docker_dir/prometheus/alertmanager/config.yml
    global:
      resolve_timeout: 5m
      smtp_smarthost: 'smtp.qq.com:465'
      smtp_from: 'xxxx@qq.com'
      smtp_auth_username: 'xxxx@qq.com'
      smtp_auth_password: '******'          ##修改为自己的授权码
      smtp_require_tls: false
    route:
      group_by: ['alertname']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 1h
      receiver: 'mail'
    receivers:
      - name: 'mail'
        email_configs:
          - to: 'xxxx@qq.com'

  3. 启动 alertmanager,能打开9095端口表示启动成功

docker run -d -p 9095:9093 -v /opt/docker_dir/prometheus/alertmanager/config.yml:/opt/bitnami/alertmanager/conf/config.yml bitnami/alertmanager

 4.  修改 prometheus.yml(启动监控服务里已经加入)

alerting:                #用于alertmanager实例的配置,支持静态配置和动态服务发现的机制
  alertmanagers:
    - static_configs:
        - targets: ["192.168.10.111:9095"]

rule_files:          #用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制 容器部署时需要修改为映射之后的容器目录
  - "/usr/local/prometheus/rules/*.yml"

5.重新启动 prometheus,这里加入了规则的映射文件

docker run -d -p 9090:9090 -v /opt/docker_dir/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /opt/docker_dir/prometheus/rules/:/usr/local/prometheus/rules/  bitnami/prometheus

6.开启热重启

每次更改完rule文件都需要重启 Prometheus ,很麻烦,开启热重启功能

docker run -d -p 9090:9090 -v /opt/docker_dir/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /opt/docker_dir/prometheus/rules/:/usr/local/prometheus/rules/  bitnami/prometheus --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml

每次修改rule文件后执行以下命令

curl -X POST http://192.168.10.111:9090/-/reload

7.监控告警成功

企业微信告警

自建应用告警

过程比较复杂,电脑突然死机了,没有截图,这边说一下主要思路吧

1.企业微信创建自建应用

2.配置应用的可见范围(重要),alertmanager配置发送的目标(usr/party/tag)一定要在这个范围内

3.配置可信域名

       通过内网穿透(linux部署)获取域名(HK隧道),但是企微认为这个域名是第三方域名

       再通过阿里云购买一个域名(1rmb),通过 CNAME 做域名的转发

       将 “域名归属认证文件” 服务器 nginx 的 html 目录 

4.配置可信IP

        添加发送数据的外网 ip ,由于我用的是虚拟机,所以这个ip 就是自己电脑的 ip

5.修改alertmanager 的配置

        

群机器人告警

1.公司群配置群机器人,保存webhook的url

2.拉取 Webhook Adapter 插件镜像

使用插件的原因:alertmanager发送的数据格式不是企业微信群机器人所需要的格式,所以不能发送成功。这个插件可以将数据格式化成企业微信群机器人所需要的数据格式。

docker pull guyongquan/webhook-adapter

3.启动服务

配置修改成自己的机器人的key

docker run --name webhook-adapter -p 8080:80 -d guyongquan/webhook-adapter --adapter=/app/prometheusalert/wx.js=/wx=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*****

4.修改 alertmanager/config.yml

global:
  resolve_timeout: 5m
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 10m
  receiver: 'qyweixin_web'
receivers:
  - name: 'qyweixin_web'
    webhook_configs:
      - url: 'http://192.168.10.111:8080/adapter/wx'

5.重启 alertmanager 服务

6.机器人消息发送成功

启动可视化服务

1.拉取 grafana 镜像

docker pull bitnami/grafana

2.运行

docker run -d --name grafana -p 3000:3000 bitnami/grafana

3.进入页面,默认用户名:admin,密码:admin

4.添加数据源

5.添加面板,可从官网获取,通过json或者id导入

Grafana dashboards | Grafana Labsicon-default.png?t=N7T8https://grafana.com/grafana/dashboards/

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是一个比较复杂的问题,需要详细说明。我会尽可能地给您提供一些指导。 首先,您需要了解一些基础知识,如 Kubernetes 和 Prometheus。Kubernetes 是一个容器编排平台,可以帮助您自动管理多个容器应用程序的部署、扩展和故障恢复。Prometheus 是一个开源的监控系统,可以收集和存储应用程序的指标,并支持告警可视化。 以下是大致的步骤: 1. 部署 Kubernetes 集群,并准备好部署 PrometheusGrafana 的节点。您可以使用各种 Kubernetes 发行版,如 kops、kubeadm 等。 2. 安装和配置 Prometheus。您可以使用 Prometheus 的 Helm Chart 进行部署,并通过 Prometheus Operator 进行管理。在部署 Prometheus 时,您需要配置它来收集应用程序的指标,并将其存储在 Prometheus 存储中。 3. 部署 Grafana。您可以使用 Grafana 的 Helm Chart 进行部署,并配置它来连接到 Prometheus 存储。在 Grafana 中,您可以创建仪表板并可视化 Prometheus 存储中的指标数据。 4. 配置告警。您可以使用 PrometheusAlertmanager 进行告警,并将告警发送到 Slack、Email 等渠道。在配置告警时,您需要定义告警规则,并配置 Alertmanager 来发送告警。 以上是部署 PrometheusGrafana告警的大致步骤。由于每个环境的部署和配置都有所不同,所以具体的细节可能会有所不同。我建议您查阅官方文档,并根据您的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值