Docker系列——Grafana+Prometheus+Node-exporter微信推送(三)
在之前博文中,已经成功的实现了邮件推送。目前主流的办公终端,就是企业微信、钉钉、飞书。今天来分享下微信推送,我们具体来看。
企业微信
在配置企业微信推送时,需要有微信企业,具体如何注册、使用,另外百度就好,在这里就不多说了。
添加机器人
登录企业微信管理后台,获取配置项基础信息。
- 创建应用
点击应用管理>应用>创建应用,如下所示:

填写对应信息,配置应该logo、名称、以及应用的可见范围,如下所示:

- 获取AgentId和Secret
应用创建成功后,可以查看应用详情,如下所示:

我们从图中可以看到,有AgentId,AgentId先复制保存下,后续会用到;还有Secret,获取Secret,点击查看后,Secret是发送到企业微信中的,自己到微信终端中查看即可。
- 获取corp_id
在我的企业中查看,有个企业id字段,以xx开头。
- 获取部门id
在通讯录中查看,查看部门信息,如下所示:

配置文件
基础信息拿到后,可能会有疑问,拿这些基础信息有什么用。不要急,接下来的配置就需要,我们来细看。
在之前原有的邮件配置基础上,再来进一步修改,添加 wechat_configs 内容,如下所示:
global:
resolve_timeout: 5m
smtp_from: '{{ template "email.from" . }}'
smtp_smarthost: 'smtp.qq.com:465'
smtp_auth_username: '{{ template "email.from" . }}'
smtp_auth_password: ''
smtp_hello: 'qq.com'
smtp_require_tls: false
wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
wechat_api_secret: ''
wechat_api_corp_id: ''
templates:
- '/etc/alertmanager/*.tmpl'
route:
group_by: ['alertname']
group_wait: 5s
group_interval: 5s
repeat_interval: 5m
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: '{{ template "email.to" . }}'
html: '{{ template "email.html" . }}'
send_resolved: true
headers: { Subject: "{{ .CommonAnnotations.summary }}" }
wechat_configs:
- send_resolved: true
to_party: '8'
to_user: '@all'
agent_id: ''
corp_id: ''
api_secret: ''
api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
参数解析:
- to_party 部门id
- agent_id 应用id
- api_secret 应用Secret
- corp_id 企业id
- api_url 企业微信固定写法
- to_user 接收人
配置后,需要重启alter manager服务,使配置生效。
消息推送
配置好后,我们来触发个条件,而使消息推送,来验证下配置是否有效。
触发条件一样,将node服务停止,使其触发,具体可查看上一篇博文,有详细介绍。Docker系列——Grafana+Prometheus+Node-exporter服务器告警中心(二)
服务停止后,通过 Prometheus 消息中心推送消息,如下所示:

消息内容多,模板不精简,但收到消息,说明配置是没问题的,功能已实现。
引用模板
在之前修改过邮件模板,在这里,我们也修改下微信推送的模板,使其简明扼要一些。
创建模板文件,同样在 alertmanager 目录下,使用命令vim wecaht.tmpl,添加如下内容:
{{ define "wechat.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}
@警报
实例: {{ .Labels.instance }}
信息: {{ .Annotations.summary }}
详情: {{ .Annotations.description }}
时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}
@恢复
实例: {{ .Labels.instance }}
信息: {{ .Annotations.summary }}
时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
恢复: {{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
{{ end }}{{ end -}}
{{- end }}
由于之前出现过日期问题,所以这里就先加上,避免再出现日期那样的错误了,不能一直往里跳。
配置好模板后,需要在altermanager配置文件中引用该模板,wechat_configs中增加如下内容,引用模板:
message: '{{ template "wechat.html" . }}'
如果模板跟altermanager配置文件不在同一个目录下,则需要挂载,由于我配置在一个目录下,就不需要重新挂载了,只需要重启服务即可,使其生效。
再次停用node服务,查看消息推送,告警消息如下所示:

恢复消息如下所示:

引用了模板后,内容是不是要精简很多。
内存监控
一直关注我的朋友,可能会吐槽了,怎么老是拿node服务来写demo,能不能来个实际案例。我想着也是,学了就要用起来。服务器中有很多指标都可以监控,比如:内存、CPU、I/O、网络等。今天来个内存监控,具体来看。
其实监控不难,通过两篇博文,也已知道是怎么回事了,主要是配置规则而已。那规则怎么配置呢,来看如下内容:
groups:
- name: hostStatsAlert
rules:
- alert: hostMemUsageAlert
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85
for: 1m
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} MEM usgae high"
description: "{{ $labels.instance }} MEM usage above 85% (current value: {{ $value }})"
- alert: node-up
expr: up{job="linux"} == 0
for: 15s
labels:
severity: page
team: node
annotations:
summary: "{{ $labels.instance }} 已停止运行超过 15s!"
description: "{{ $labels.instance }} 检测到异常停止!请重点关注!!!"
上述示例 hostMemUsageAlert 规则,添加到/prometheus/rules目录下的规则中,并重启Prometheus服务,使配置生效。
重启后,通过Prometheus服务查看规则,如下所示:

注意:规则配置内存使用率超过85%则会出发警报,如果大家的服务器内存够大,目前使用率不高,但又想检测下规则是否能正常触发,将85降低即可。
我这里配置的85,我们来看下最终效果图,如下所示:
告警信息

恢复信息

内存监控,按上述步骤就实现了,是不是就是一个规则的事情,其他指标监控也同理。
好了,今天分享就到这了,下期再会。
Docker系列——Grafana+Prometheus+Node-exporter微信推送(三)的更多相关文章
- Docker系列——Grafana+Prometheus+Node-exporter钉钉推送(四)
近期搭建的服务器监控平台,来进行一个总结.主要分为监控平台的搭建.告警中心的配置以及消息的推送.推送的话,支持多种终端.具体详细可查看之前的博文,在这里罗列下,方便查看. Docker系列--Graf ...
- Docker系列——Grafana+Prometheus+Node-exporter服务器监控平台(一)
在最近的博文中,都是介绍监控平台的搭建,其实并不难,主要是需要自己动手操作,实践一番就会了. 有天在想,云上的服务器,是不是也可以搭建一个监控平台,所以就捣鼓了一下,不过遗憾的是,使用阿里云开源的插件 ...
- Docker系列——Grafana+Prometheus+Node-exporter服务器告警中心(二)
在前一篇博文中介绍,服务器监控已经部署成功.如果每天都需要人去盯着服务情况,那也不太现实.既然监控平台已经部署好了,是不是可以自动触发报警呢? 在上一篇Prometheus架构中有讲到,核心组件之一: ...
- C#微信公众号开发系列教程五(接收事件推送与消息排重)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- 史上最全面的SignalR系列教程-3、SignalR 实现推送功能-集线器类实现方式
1.概述 通过前两篇 史上最全面的SignalR系列教程-1.认识SignalR 史上最全面的SignalR系列教程-2.SignalR 实现推送功能-永久连接类实现方式 文章对SignalR的介绍, ...
- day93之微信推送
python之微信推送详解 用什么推送 -邮件 -微信推送 -短信推送微信推送 -公众号(不能主动给用户发消息) -认证的公众号:需要营业执照,需要交钱,可以发多篇文章 - ...
- Django day 36 支付宝支付,微信推送
一:支付宝支付, 二:微信推送
- 让微信推送Jenkins构建消息
Jenkins作为开发必备之神器,各家大小公司都在使用.Jenkins自身内置了基于邮件推送构建结果的功能.但是随着移动互联网的发展,邮件这玩意已经越来越少使用了,是否有一种办法能把jenkins构建 ...
- 免注册公众号的三种微信推送消息服务的C#代码实现
有时候我们需要监控一些网络上的变化,但是每次去刷新网页却又很麻烦,而且大部分刷新的时候网页并没有更新.那么有没有一个工具,可以监控网页变化,并将变化的结果推送到手机微信上呢? 这里有很多应用场景,比如 ...
随机推荐
- Linux配置yum源(本地源和网络源)
目录 一:配置本地yum源 二:配置网络yum源 更新源可以获取最新的软件信息,以更新您的系统 Redhat7配置源 YUM(Yellow dog Updater Modified): yum是Re ...
- poj2186强联通(牛仰慕)
题意: 有一群老牛,他们之间有m组敬仰关系,关系可以传递,a仰慕b,b仰慕c,那么a就仰慕c,现在问被所有老牛都仰慕 的有多少? 思路: 想想,是不是一个环中的老牛的关系都是一 ...
- 在进程空间使用虚拟内存(Windows 核心编程)
虚拟内存空间 如今的 Windows 操作系统不仅可以运行多个应用程序,还可以让每一个应用程序享受到约 4 GB 的虚拟内存空间(包括系统占用),假如内存为 4 GB 的话.那为什么 Window 可 ...
- Day003 位运算
位运算 & 按位与,全1才为1,否则为0 | 按位或,全0才为0,否则为1 ^ 按位异或,相同则为0,不通则为1 ~按位取反 <<左移,相当于*2 >>右移,相当于/2 ...
- Postman中如何实现接口之间的关联?
Postman中如何实现接口之间的关联? 不单单说Postman中,我为什么拿Postman举例,因为它比较简单一点. 那如果我只问你如何实现接口之间的关联,那肯定有很多的方式,Postman只是其中 ...
- 序列化-JDK自带Serializable
如下代码示例:实现了Serializable接口(强制)的类,可以通过ObjectOutputStream的writeObject()方法转为字节流. 字节流通过ObjectInputStream的r ...
- Redis数据结构—跳跃表
目录 Redis数据结构-跳跃表 跳跃表产生的背景 跳跃表的结构 利用跳跃表查询有序链表 Redis跳跃表图示 Redis跳跃表数据结构 小结 Redis数据结构-跳跃表 大家好,我是白泽,最近学校有 ...
- c++通讯录管理系统
代码拷贝 #include<iostream> #include<string> #include<stdlib.h> #define MAX 1000 using ...
- Java版的扫雷游戏源码
package com.xz.sl; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; i ...
- CRM助力企业迎接数字化浪潮
去年,国家发展改革委官网发布'数字化转型伙伴行动'倡议.倡议政府和社会各界联合起来,共同构建多元化的联合推荐机制,带动全行业数字化转型,构建数字化产业链,培育数字化生态,形成"数字引领.抗击 ...