一.部署alertmanager

1.1 创建目录

mkdir -p /deploy/app/alertmanager/config
chmod -R 777 /deploy/app/alertmanager/config

1.2部署alertmanager,也需要个配置文件,先部署临时容器,然后把配置文件复制下来

docker run -d -p 9093:9093 --name alertmanager prom/alertmanager
docker cp alertmanager:/etc/alertmanager/alertmanager.yml /deploy/app/alertmanager/config
docker rm -f alertmanager

1.3修改配置文件

global:
#旧的告警3分钟没有更新,则认为告警解决
resolve_timeout: 3m route:
group_by: ['alertname'] #根据告警规则组名进行分组
group_wait: 0s #在组内等待所配置的时间,如果同组内,30秒内出现相同报警,在一个组内出现
group_interval: 10s #控制告警组的发送频率,一条告警消息发送后,等待10秒,发送第二组告警
repeat_interval: 1h #发送报警间隔,如果指定时间内没有修复,则重新发送报警
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs: #可设置多个接收方
- url: 'http://192.168.80.86:8060/dingtalk/webhook1/send'
- url: 'http://192.168.80.86:8060/dingtalk/webhook2/send'
send_resolved: true # 表示服务恢复后会收到恢复告警 inhibit_rules:
- source_match: #配置了仰制告警
severity: '非常严重'
target_match:
severity: '严重'
equal: ['alertname',"target","job","instance"]

1.4正式部署

docker run -d \
-p 9093:9093 \
--name alertmanager \
--network-alias=alertmanager \
--restart=always \
-v "/deploy/app/alertmanager/config/alertmanager.yml:/etc/alertmanager/alertmanager.yml" \
prom/alertmanager:v0.25.0

http://192.168.80.86:9093/#/status 打开链接能看到自己的配置即可

二.安装钉钉插件

2.1安装钉钉插件prometheus-webhook-dingtalk,和上述一样,就不解释了

创建目录
mkdir -p /deploy/app/prometheus-webhook-dingtalk/templates
chmod 777 -R /deploy/app/prometheus-webhook-dingtalk/templates docker run -d -p 8060:8060 --name=dingding timonwong/prometheus-webhook-dingtalk
docker cp dingding:/etc/prometheus-webhook-dingtalk/config.yml /deploy/app/prometheus-webhook-dingtalk/
docker rm -f dingding

2.2修改/deploy/app/prometheus-webhook-dingtalk/config.yml

templates:
- /etc/prometheus-webhook-dingtalk/templates/templates.tmpl targets: #配置多个接收方
webhook1:
url: https://oapi.dingtalk.com/robot/send?access_token=2170a4079a1008d52320d32d6d895a98e0ee70f93c409
secret: SEC48c5d9fbe1b1634fde69b28027eebb86ecfeeccb74c0af5290e
message:
text: '{{ template "email.to.message" . }}'
webhook2:
url: https://oapi.dingtalk.com/robot/send?access_token=55e44b618ae703b3c3cde84d39404024618af0b77926dc227d6
secret: SECc7d467845f4c44803a1f4b50935415afea42e0299183bc805506
message:
text: '{{ template "email.to.message" . }}'

2.3 修改/deploy/app/prometheus-webhook-dingtalk/templates/templates.tmpl

{{ define "email.to.message" }}

{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}} <font color=#FF0000>========= **监控告警** ========= </font> **告警类型:** {{ $alert.Labels.alertname }}
**告警级别:** {{ $alert.Labels.severity }} 级
**故障主机:** {{ $alert.Labels.instance }} {{ $alert.Labels.device }}
**告警详情:** {{ $alert.Annotations.message }}{{ $alert.Annotations.description}} **故障时间:** {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
{{ end }}{{ end }} {{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}} <font color=#00800>========= **告警恢复** ========= </font> **告警主机:** {{ $alert.Labels.instance }}
**告警类型:** {{ $alert.Labels.alertname }}
**告警级别:** {{ $alert.Labels.severity }} 级
**告警详情:** {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
**故障时间:** {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} **恢复时间:** {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} {{ end }}{{ end }}{{ end }}

2.4正式部署

docker run -d \
-p 8060:8060 \
--name=dingding \
--restart=always \
--network-alias=dingding \
-v /deploy/app/prometheus-webhook-dingtalk:/etc/prometheus-webhook-dingtalk \
timonwong/prometheus-webhook-dingtalk

三,修改prometheus的配置

3.1编辑prometheus的告警规则文件,更多规则请点击下方链接

https://awesome-prometheus-alerts.grep.to/rules#host-and-hardware

vim /deploy/app/prometheus/rules/node_exporter.yml

vim /deploy/app/prometheus/rules/node_exporter.yml

groups:
- name: 服务器主机信息监控告警
rules:
- alert: 公司内部服务器监控
expr: up {job="公司内部服务器"} == 0
for: 0m
labels:
severity: 非常严重
annotations:
description: "监控的目标已丢失,请检查服务器自身或node_exporter服务" - alert: "内存报警"
expr: 100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes) > 95
for: 3m # 告警持续时间,超过这个时间才会发送给alertmanager
labels:
severity: 严重
annotations:
summary: "{{ $labels.instance }} 内存使用率过高,请尽快处理!"
description: "{{ $labels.instance }}内存使用率超过95%,当前使用率{{ $value }}%." - alert: "磁盘空间报警"
expr: (1 - node_filesystem_avail_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"}) * 100 > 95
for: 60s
labels:
severity: 严重
annotations:
summary: "{{ $labels.instance }}磁盘空间使用超过95%了"
description: "{{ $labels.instance }}磁盘使用率超过95%,当前使用率{{ $value }}%." - alert: "CPU报警"
expr: 100-(avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)* 100) > 95
for: 120s
labels:
severity: 严重
instance: "{{ $labels.instance }}"
annotations:
summary: "{{$labels.instance}}CPU使用率超过95%了"
description: "{{ $labels.instance }}CPU使用率超过95%,当前使用率{{ $value }}%." - alert: "磁盘IO性能报警"
expr: ((irate(node_disk_io_time_seconds_total[30m]))* 100) > 95
for: 3m
labels:
severity: 严重
annotations:
summary: "{{$labels.instance}} 流入磁盘IO使用率过高,请尽快处理!"
description: "{{$labels.instance}} 流入磁盘IO大于95%,当前使用率{{ $value }}%."

3.2

vim /deploy/app/prometheus/config/prometheus.yml

global:
# 数据采集间隔
scrape_interval: 45s
# 告警检测间隔
evaluation_interval: 45s alerting:
alertmanagers:
- static_configs:
- targets: ["192.168.80.86:9093"] # 告警规则
rule_files:
# 这里匹配指定目录下所有的.rules文件
- /prometheus/rules/*.yml # 采集配置
scrape_configs:
# 采集项(prometheus)
#- job_name: 'prometheus'
# static_configs:
# # prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
# - targets: ['localhost:9090'] - job_name: "公司内部服务器"
file_sd_configs: #基于文件发现服务方式,也可以基于Consul服务发现等,其它方式不讲解,又不给工资费劲
- files:
- /prometheus/ClientAll/*.json #用json格式文件方式发现服务,下面的是用yaml格式文件方式,都可以,反正两个都部署了,随便你用哪个
refresh_interval: 10m
- files:
- /prometheus/ClientAll/*.yaml
refresh_interval: 10m

热加载

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

测试一下 停止某个节点的node_exporter

即可看到告警通知

Alertmanager钉钉告警的更多相关文章

  1. Docker+Prometheus+Alertmanager+Webhook钉钉告警

    Docker+Prometheus+Alertmanager+Webhook钉钉告警 1.环境部署 1.1 二进制部署 1.2 docker部署 1.2.1 webhook 1.2.2 alertma ...

  2. Grafana+prometheus+AlertManager+钉钉机器人

    一.Grafana (1)安装Grafana的Linux环境 在官网下载windows的Grafana的压缩包到指定目录,解压缩Grafana压缩文件到包含当前Grafana版本的文件夹.将该文件夹解 ...

  3. Grafana+Prometheus实现Ceph监控和钉钉告警-转载(云栖社区)

    获取软件包 最新的软件包获取地址 https://prometheus.io/download/ Prometheus 1.下载Prometheus $ wget https://github.com ...

  4. kube-promethues监控告警详解(邮件、钉钉、微信、自研平台)

    Alertmanager已经在前面Prometheus初体验(三)已经介绍过了.现在介绍一下在kube-promethues里面怎么修改alertmanager配置文件,以及怎么通过各种媒介发送信息. ...

  5. prometheus grafana graylog 钉钉告警 短信告警 电话告警系统 PrometheusAlert

    PrometheusAlert 简介 PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的 ...

  6. prometheus-alertmanager告警推送到钉钉

    1. Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性 ...

  7. Istio on ACK集成生态(2): 扩展AlertManager集成钉钉助力可观测性监控能力

    阿里云容器服务Kubernetes(简称ACK)支持一键部署Istio,可以参考文档在ACK上部署使用Isito.Istio on ACK提供了丰富的监控能力,为网格中的服务收集遥测数据,其中Mixe ...

  8. 使用 Prometheus Alertmanager 模块发送 Doris 异常信息至钉钉报警群

    基础环境 1.Prometheus 版本:2.22.2 下载地址: https://github.com/prometheus/prometheus/releases/download/v2.22.2 ...

  9. zabbix系列之九——添加钉钉告警

    一.添加钉钉机器人 1. 2. 复制webhook后面脚本用到:https://oapi.dingtalk.com/robot/send?access_token=36e69dd50bbcc54b7b ...

  10. elk报警监控之sentinl 钉钉+邮件告警

    注:我的elk sentinl版本都是6.5.1 前期知识 es的查询语法.es watcher使用方法. https://www.cnblogs.com/pilihaotian/p/5830754. ...

随机推荐

  1. 【学到了】golang的[]byte可以append string类型的数据

    上代码: func Test_use_string(t *testing.T){ arr := make([]byte,0, 100) arr = append(arr, "abcd&quo ...

  2. 数组 vs. 切片

    在Go编程语言中处理数据时,经常会遇到数组和切片.这两者是不同的数据结构,有各自的特性和用途.本文将对Go中的数组和切片进行比较,以帮助大家更好地理解它们. 1. 长度不同 一个主要的区别是长度.在G ...

  3. Spring源码之XML文件中Bean标签的解析2

    读取XML文件,创建默认bean标签对象的核心代码 在DefaultBeanDefinitionDocumentReader类中的如下方法中: protected void processBeanDe ...

  4. 搭建mongo的replica set

    搭建mongo的replica set 前言 安装 构建副本集 加入认证 备份数据 备份数据到本地 数据恢复 搭建mongo的replica set 前言 准备三台机器,相互可以访问的.处理思路,先构 ...

  5. 深入浅出Java多线程(三):线程与线程组

    「引言」 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第三篇内容:线程与线程组.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代软件开发中,多线程编程已成 ...

  6. gitee 命令合集(从远程仓库拉取项目到推送项目到远程仓库)

    1.配置用户的信息 git config --global user.name '你的用户名' git config --global user.email '你的邮箱' 2.初始化 Git 仓库,生 ...

  7. Load-balanced-online-OJ-system 负载均衡的OJ系统项目

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 本项目Github地址 - ...

  8. TortoiseSVN 官网打不开,去哪下最新的软件和中文包?

    官网:https://tortoisesvn.net 能打开最好,但通常打不开,打不开时候去这个网站下: https://sourceforge.net/projects/tortoisesvn/ 这 ...

  9. ASP.NET Core分布式项目实战(oauth2 + oidc 实现 client部分)--学习笔记

    任务16:oauth2 + oidc 实现 client部分 实现 client 之前启动一下上一节的 server,启动之前需要清除一些代码 注释 Program 的 MigrateDbContex ...

  10. Linux-数据集 TPC-H、TPC-DS的导入和使用(MySQL)

    一. TPC-H 数据集 1.数据集下载 TPC-H数据集: https://github.com/gregrahn/tpch-kit 可采用gcc下载或者直接下载zip包,然后解压即可. 具体使用方 ...