**

一、各种配置文件和容器准备

**

1、数据监测端口
docker run -d -p 9100:9100 -v /proc:/bridge/proc -v /sys:/bridge/sys -v /:/rootfs --net=bridge prom/node-exporter --path.procfs /bridge/proc --path.sysfs /bridge/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|bridge|etc)($|/)"
会生成一个容器,docker ps查看容器,如果启动不了,直接执行:
docker run  -d \-p 9100:9100 \prom/node-exporter或者docker pull prom/node-exporter,先把镜像拉下来,然后根据这个镜像生成容器,这个应该不需要挂载。访问http://192.168.1.150:9090/targets,可以看到一大排数据信息2、生成prometheus数据采集端口执行 vim /opt/prometheus/prometheus.yml,在路径下生成一个prometheus.yml文件,执行vim /opt/prometheus/rulesnode_status.yml,分别写入配置如下:global:
scrape_interval:     15s
evaluation_interval: 15salerting:alertmanagers:- scheme: httpstatic_configs:- targets:- "172.17.0.5:9093" #这个是读取告警的信息端口,正常来将是当前主机IP,但是我的不知道为啥访问不到,只能用docker inspect 容器ID查看真正的地址了rule_files:- "/etc/prometheus/rules/node_status.yml" #这个是集成在9090端口的报警配置,读取的系统信息,注意这个是容器里的地址,也就是说,不挂载容器外的路径,在容器里是没有这个文件的,所以访问不到scrape_configs:- job_name: 'loaclhost'static_configs:- targets: ['localhost:9090']- job_name: '192.168.1.161'static_configs:- targets: ['192.168.1.161:9100']node_status.yml文件配置:groups:
- name: Node_Downrules:- alert: Node实例已宕机expr: up == 0for: 10slabels:user: rootseverity: Warning
annotations:summary: "Instance {{ $labels.instance }} Down"description: "{{ $labels.instance }} 任务 {{ $labels.job }} 挂了."可以访问ip+9090,看到信息显示,如果访问不了,看看是不是容器没有启动,切记,配置信息一定要格式正确无误,要不然会启动不起来容器!生成容器:docker run  -d \-p 9090:9090 \--name prometheus\--restart=always \-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \-v /opt/prometheus/rules/node_status.yml:/etc/prometheus/rules/node_status.yml \prom/prometheus此时,在/opt/prometheus 路径下面应结构该是:prometheus.yml(文件),rules(文件夹,包含:node_status.yml文件)3、生成告警的端口alertmanager
执行vim /opt/alertmansger/alertmanager.yml  vim opt/alertmanager/template/wechat.tmpl
docker run -d \-p 9093:9093 \--name alertmanager \--restart=always \-v  /opt/alertmanager/template/wechat.tmpl:/etc/alertmanager/template/wechat.tmpl \-v /opt/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml \prom/alertmanager生成alertmanager 访问ip+9093验证成功容器起不来:Restarting (1) Less than a second ago,查看容器日志,可能是配置文件写的有误。
同理/opt/alertmansger下面会有 :alertmanager.yml文件,opt/alertmanager/template/wechat.tmpl文件。
alertmanager.yml配置内容:
global:resolve_timeout: 2m # 每2分钟检查是否恢复#自定义通知模板
templates:- '/etc/alertmanager/template/wechat.tmpl'#模板的路径,也是挂载到容器里面的路径
# route用来设置报警的分发策略
route:
# 采用哪个标签来作为分组依据group_by: ['alertname']
# 组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出group_wait: 10s
# 两组告警的间隔时间group_interval: 10s
# 重复告警的间隔时间,减少相同微信告警的发送频率repeat_interval: 5m# 设置默认接收人receiver: 'wechat'routes:   # 可以指定哪些组接收哪些消息- receiver: 'wechat'continue: truegroup_wait: 10sreceivers:
- name: 'wechat'wechat_configs:- corp_id: 'ww92d183382fe731f6'#企业微信的企业idto_party: '2'#发到哪个组agent_id: '1000002'#添加的自动告警的应用的idapi_secret: '2myxjF3yUYsPh7TSajlXusu9MyQKQq7pGruEq6RixMA'#添加的自动告警的应用的密钥send_resolved: true
wechat.tmpl配置内容:
{{ define "wechat.default.message" }}
{{ range $i, $alert :=.Alerts }}
===alertmanager监控报警===
告警状态:{{ .Status }}
告警级别:{{ $alert.Labels.severity }}
告警类型:{{ $alert.Labels.alertname }}
告警应用:{{ $alert.Annotations.summary }}
故障主机: {{ $alert.Labels.instance }}
告警主题: {{ $alert.Annotations.summary }}
触发阀值:{{ $alert.Annotations.value }}
告警详情: {{ $alert.Annotations.description }}
触发时间: {{ $alert.StartsAt.Format "2020-4-16 15:55:19" }}
===========end============
{{ end }}
{{ end }}
4、建立集成面板grafana
docker run -d -p 3000:3000 --name grafana grafana/grafana(--name指定名称为grafana,依赖grafana/grafana镜像),还可以加入--restart=always,开机自动启动
访问这个端口,初次登入需要设置密码,然后在数据源里添加数据源,9090端口,我出现了添加数据源不成功的问题,原因是容器之间不能相互通信,只能用他们的实际IP地址,具体看另一篇文章看参考下面的截图。

到这时候我们启动的容器因该是:

二、其它操作

1、容器建立完毕,我们的9090端口应该是:

绿色存活,黄色未发送告警,红色已发送告警,如果企业微信不能接收到报警信息,有可能Prometheus.yml文件中的alertmanager地址不对,切记每个配置文件的关联性!!!!!

9093端口:

告警信息:

==============================================================================

使用中的一些记录


# 启动node-exporter
docker run -d -p 9100:9100 -v /proc:/bridge/proc -v /sys:/bridge/sys -v /:/rootfs --net=bridge prom/node-exporter --path.procfs /bridge/proc --path.sysfs /bridge/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|bridge|etc)($|/)"# 然后访问 http://192.168.1.150:9090/targets
# 可以看到:

'''意思是我们可以监测到这个http://192.168.1.150:9100/metrics地址的系统信息了'''启动prometheus
新建prometheus.yml,在路径opt/prometheus下,vim进行编辑
global:scrape_interval:     60sevaluation_interval: 60sscrape_configs:- job_name: prometheusstatic_configs:- targets: ['localhost:9090']labels:instance: prometheus- job_name: '192.168.1.161'static_configs:- targets: ['192.168.1.161:9100']- job_name: '192.168.1.150'static_configs:- targets: ['192.168.1.150:9100']执行:
docker run  -d \-p 9090:9090 \-v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \-v /home/prometheus/server/rules.yml:/etc/prometheus/rules.yml \不在opt路径下,挂载目录启动会出现问题,不知为啥生成容器 docker ps -a查看容器
访问:http://192.168.1.150:9090/graph
如下


访问:http://192.168.1.150:9090/targets
如下:

新建空文件夹grafana-storage,用来存储数据
mkdir /opt/grafana-storage
docker pull grafana/grafana:8.1.2 拉取镜像,最新的8.2.0不好用,出现数据源不可用
设置权限:
chmod 777 -R /home/grafana-storage
启动:docker run -d -p 3000:3000 --name=grafana grafana/grafana
访问: http://192.168.1.150:3000/
如下:
初次登录会让我们设置密码
1、添加数据源:

选择:prometheus
2、添加数据源url就是我们Prometheus的端口,负责收集数据的

将地址写入,点击下面的保存


导入数据源报错,161正常,150报错为啥


上述badgetway解决了https://blog.csdn.net/weixin_46392229/article/details/120748423,继续:

docker run -d
-p 9093:9093
–name alertmanager
–restart=always
-v /opt/alertmanager/template/wechat.tmpl:/etc/alertmanager/template/wechat.tmpl
-v /opt/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
prom/alertmanager
生成alertmanager 访问ip+9093验证成功
容器起不来:Restarting (1) Less than a second ago,查看容器日志,可能是配置文件写的有误。
参考: https://www.yangxinghui.com/682.html

注意

:1、Prometheus.yml文件里面,要配置alertmanager的IP地址,要不然会识别不到报警信息,如图
2、监测容器状况的篇日志文件要写容器里面的地址,在生成容器的时候挂载进去
docker run -d
-p 9090:9090
-v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
-v /home/prometheus/server/rules.yml:/etc/prometheus/rules.yml
prom/prometheus
要是不挂载进去的话,Prometheus就找不到报警信息,打开9090端口,查看信息
告警信息如图
配置地址如图

3、配置alertmanager 文件

global:resolve_timeout: 2m # 每2分钟检查是否恢复#自定义通知模板
templates:- '/etc/alertmanager/template/wechat.tmpl'
# route用来设置报警的分发策略
route:
# 采用哪个标签来作为分组依据group_by: ['alertname']
# 组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出group_wait: 10s
# 两组告警的间隔时间group_interval: 10s
# 重复告警的间隔时间,减少相同微信告警的发送频率repeat_interval: 1m# 设置默认接收人receiver: 'wechat'routes:   # 可以指定哪些组接收哪些消息- receiver: 'wechat'continue: truegroup_wait: 10sreceivers:
- name: 'wechat'wechat_configs:- corp_id: 'ww92d183382fe731f6'to_party: '2'agent_id: '1000002'api_secret: '2myxjF3yUYsPh7TSajlXusu9MyQKQq7pGruEq6RixMA'send_resolved: true

其中,templates:

  • ‘/etc/alertmanager/template/wechat.tmpl’,指的是容器中的模板地址,在生成容器的时候一样要挂载进去,要不然找不到
    4、告警模板
{{ define "wechat.default.message" }}
{{ range $i, $alert :=.Alerts }}
===alertmanager监控报警===
告警状态:{{ .Status }}
告警级别:{{ $alert.Labels.severity }}
告警类型:{{ $alert.Labels.alertname }}
告警应用:{{ $alert.Annotations.summary }}
故障主机: {{ $alert.Labels.instance }}
告警主题: {{ $alert.Annotations.summary }}
触发阀值:{{ $alert.Annotations.value }}
告警详情: {{ $alert.Annotations.description }}
触发时间: {{ $alert.StartsAt.Format "2020-4-16 15:55:19" }}
===========end============
{{ end }}
{{ end }}

模板合集:

groups:
- name: 磁盘使用率报警规则rules:- alert: 磁盘使用率告警expr: 100 - node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"xfs|ext4"} * 100 > 80for: 20mlabels:severity: warningannotations:summary: "硬盘分区使用率过高"description: "分区使用大于80%(当前值:{{ $value }}%)"- name: CPU报警规则rules:- alert: CPU使用率告警expr: 100 - (avg by (instance)(irate(node_cpu_seconds_total{mode="idle"}[1m]) )) * 100 > 50for: 1mlabels:severity: warningannotations:summary: "CPU使用率正在飙升。"description: "CPU使用率超过50%(当前值:{{ $value }}%)"- name: 内存报警规则rules:- alert: 内存使用率告警expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 50for: 1mlabels:severity: warningannotations:summary: "服务器可用内存不足。"description: "内存使用率已超过50%(当前值:{{ $value }}%)"- name: 内存报警规则rules:- alert: 内存使用率告警expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 50for: 1mlabels:severity: warningannotations:summary: "服务器可用内存不足。"description: "内存使用率已超过50%(当前值:{{ $value }}%)"

搭建Prometheus配置企业微信告警相关推荐

  1. Prometheus配置企业微信报警

    Prometheus配置企业微信报警 更多技术博客,请关注微信公众号:运维之美 Prometheus被号称是下一代的监控,可以解决云上K8S集群的监控问题,搭配部署alertmanager,可以实现告 ...

  2. zabbix 配置企业微信告警群机器人告警

    一.企业微信端配置 1.创建微信群机器人 在需要接收告警信息的企业微信群上右键(注意群里成员至少要3人以上),选择"添加群机器人",设置机器人名称,系统自动生成此机器人的webho ...

  3. prometheus+alertmanager 企业微信告警

    一.应用安装启动 1.软件准备 alertmanager-0.24.0.linux-amd64.tar.gz blackbox_exporter-0.22.0.linux-amd64.tar.gz n ...

  4. alertmanager 告警恢复_Prometheus配置企业微信告警

    kubernetes operator安装的,如果不会可看上一篇文章 前提:创建企业微信,创建应用 然后配置altermanager.yaml global:resolve_timeout: 5m r ...

  5. 使用 Prometheus 实现邮件/企业微信告警

    一.安装 AlterManager 如果没有安装 Prometheus 以及监控客户端的话,可以看博主前面的文章:Prometheus(普罗米修斯)监控系统 [root@k8s-master01 ~] ...

  6. Prometheus+Grafana监控安装及配置JVM实现企业微信告警

    背景 本人Java开发工程师一枚,主攻后端,需要搭建一套Prometheus+Grafana的监控系统,采用企业微信告警通知.在网上各种查阅资料的同时,发现很多资料都大致相通且不完整,踩坑无数,经过多 ...

  7. Prometheus配合 alertmanager 使用企业微信告警(坑已平!!!)

    部署Prometheus 和 Alertmanager略 安装包部署prometheus+Grafana+node_exporter_争取不加班!的博客-CSDN博客 prometheus监控报警部署 ...

  8. prometheus+grafana监控以及企业微信告警

    prometheus+grafana监控以及企业微信告警(单机二进制部署) 一.下载部署包,更改其中两个包名称,放到/data下 1.安装包以及解压步骤 grafana-enterprise-8.4. ...

  9. Prometheus监控(三)—— 钉钉和企业微信告警

    一.prometheus 实现钉钉和企业微信告警 基础流程 1.1 钉钉通知 altermanager基础设置可以参照: https://editor.csdn.net/md/?articleId=1 ...

最新文章

  1. 辽宁省2021年高考成绩位次查询,辽宁2021八省联考分数、位次表(非官方),附志愿填报样表...
  2. 二分类预测用的几个预测结果精确度计算方法
  3. linux 连接数 限制,linux设置最大连接数
  4. 关于mysql中GROUP_CONCAT函数的使用
  5. 保密 | 利用DOS命令将文本信息隐藏在图片中
  6. python基础-字典的增删改查
  7. 安装python的pip模块
  8. 运筹学状态转移方程例子_逆转的薛定谔方程,美俄科学家实现量子时间“倒流”,令人兴奋...
  9. Nginx+Tomcat+Keepalived+Memcache 负载均衡动静分离技术
  10. oracle 字段带数字,Oracle字符串中包含数字、特殊符号的排序
  11. 中国各省份中英文,Json格式
  12. 【JS】秒杀倒计时制作
  13. 安装drupal9报错
  14. 皇图中原青豫大战打到服务器维护,【九州皇图】青、豫国砸再现激情
  15. 两个超实用的 Kubernetes 集群中 Flannel 故障排除案例
  16. Android谷歌地图地理编码,谷歌地图API地理编码多个地点
  17. 玩客云刷入openwrt系统
  18. 【异常解决】vue项目localhost:8080无法访问此网站或者无法访问此页面,localhost拒绝了我们的连接请求
  19. 在SQL SERVER 2000中实行简繁体转换
  20. launcher3 修改文件夹图标九宫格显示

热门文章

  1. 文件夹的遍历(递归)
  2. Java内存模型和Java内存结构精读
  3. 职工信息管理系统(C语言)
  4. js实现睡眠方法(sleep)
  5. MySQL8.0远程连接和用户授权相关设置
  6. java 检查 mac 地址_使用Java在本地计算机上获取MAC地址
  7. java 渐变圆_巧妙实现带圆角的渐变边框
  8. PDF格式分析(六十) Text 文字——简介
  9. endnote咋手动输入文献_EndNote导入Word手动输入参考文献的方法图解教程
  10. 在OpenCV里实现视频格式转换