[转帖]Alertmanager 部署配置

alertmanager,部署,配置 · 浏览次数 : 0

小编点评

## 601566386的归纳总结 **内容:** * 601566386的介绍 * 601566386的定义 * 601566386的用途 * 601566386的优点 * 601566386的缺点 * 601566386的应用 * 601566386的总结 **排版:** * 601566386的介绍 * 601566386的定义 * 601566386的用途 * 601566386的优点 * 601566386的缺点 * 601566386的应用 * 601566386的总结 **示例:** **601566386的介绍** 601566386是CPU核心数的统计。 **601566386的定义** 601566386是指CPU核心数的统计值。 **601566386的用途** 601566386是CPU核心数的统计值,可以用于分析CPU性能。 **601566386的优点** 601566386是CPU核心数的统计值,可以用于分析CPU性能。 **601566386的缺点** 601566386是CPU核心数的统计值,可以用于分析CPU性能。 **601566386的应用** 601566386可以用于分析CPU性能,优化CPU性能。 **601566386的总结** 601566386是CPU核心数的统计值,可以用于分析CPU性能。

正文

https://www.cnblogs.com/winstom/p/11940570.html

 

 

 

前言

Alertmanager 用于发送告警, 是真正发送信息给用户的模块。
Alertmanager 会接受Prometheus发送过来的警告信息,再由Alertmanager来发送。

  • Grouping—分组
    防止告警风暴,达到告警收敛目的
    设置时间段,对接收到的同类告警只发送一条
    系统出问题同类告警只发送一条
    配置文件配置
  • Inhibition—抑制
防止告警风暴,达到告警收敛目的
同一时间内,对准备发送的告警事件的相关性,决定只发送一条
若A发送C不可达已经准备发送时,可配置其他关于C不可达事件不发送
配置文件配置
  • Silences—沉默
临时屏蔽,设置某个时间段内某类告警不发送
web界面配置
  • Client behavior—客户端
POST方法,两个接口v1、v2
 [{
    "labels": {
      "alertname": "<requiredAlertName>",
      "<labelname>": "<labelvalue>",
      ...
    },
    "annotations": {
      "<labelname>": "<labelvalue>",
    },
    "startsAt": "<rfc3339>",
    "endsAt": "<rfc3339>",
    "generatorURL": "<generator_url>"
  },
  ...
]

关键key说明

labels:代表一个告警事件,用去去重
annotations:不代表一条告警,用于完善告警详情
startAt:默认是接收告警事件的当前时间
endsAt:默认设置为可配置的超时时间,告警事件解决的时间
generatorURL:代表发送告警事件的客户端

源码安装

下载地址: https://github.com/prometheus/alertmanager/releases/download/v0.19.0/alertmanager-0.19.0.linux-amd64.tar.gz

[root@es2 ~]# tar xf alertmanager-0.19.0.linux-amd64.tar.gz 
[root@es2 ~]# mv alertmanager-0.19.0.linux-amd64 /opt/alertmanager-0.19
[root@es2 ~]# cd /opt/alertmanager-0.19/
[root@es2 alertmanager-0.19]# mkdir bin  config  data logs
[root@es2 alertmanager-0.19]# mv alertmanager  amtool bin/
[root@es2 alertmanager-0.19]# mv alertmanager.yml config/
[root@es2 alertmanager-0.19]# cp config/alertmanager.yml config/alertmanager.yml.default

配置

修改 /opt/alertmanager-0.19/config/alertmanager.yml

[root@es2 config]# cat alertmanager.yml
global:
  smtp_smarthost: 'smtp.exmail.qq.com:25'       # smtp地址
  smtp_from: 'sijy@jubaozhu.com'                # 谁发邮件
  smtp_auth_username: 'sijy@jubaozhu.com'       # 邮箱用户
  smtp_auth_password: 'xxxxx'                   # 邮箱密码
  smtp_require_tls: false

route:
  group_by: ["instance"]            # 分组名
  group_wait: 30s                   # 当收到告警的时候,等待三十秒看是否还有告警,如果有就一起发出去
  group_interval: 5m                # 发送警告间隔时间
  repeat_interval: 3h               # 重复报警的间隔时间
  receiver: mail                    # 全局报警组,这个参数是必选的,和下面报警组名要相同

receivers:
- name: 'mail'                      # 报警组名
  email_configs:
  - to: 'sijiayong000@163.com'      # 发送给谁

启动

nohup /opt/alertmanager-0.19/bin/alertmanager --log.level=info --log.format=json --web.listen-address="10.0.20.12:9093" --config.file="/opt/alertmanager-0.19/config/alertmanager.yml" --storage.path="/opt/alertmanager-0.19/data/" --data.retention=120h &>>/opt/alertmanager-0.19/logs/alertmanager.log &
  • --log.level 日志级别
  • --log.format 日志输出格式
  • --web.listen-addres 监听地址端口
  • --config.file 配置配置文件
  • --storage.path 配置数据保存目录
  • --data.retention 配置数据保留时间

启动后即可访问页面

配置prometheus监控Alertmanager

因为后面会部署alertmanager集群,所以这里使用SRV解析的自动发现

修改prometheus配置

[root@es01 config]# cat prometheus.yml
global:
  scrape_interval:     15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
    - dns_sd_configs:               # 同样配置DNS自动发现
      - names: ["_alertmanager._tcp_k8s.com."]  # 加入SRV解析的自动发现

rule_files:

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'node_srv'
    metrics_path: "/metrics"
    dns_sd_configs:
    - names: ['_prometheus._tcp.k8s.com']

  - job_name: 'alertmanager'
    metrics_path: "/metrics"
    dns_sd_configs:
    - names: ['_alertmanager._tcp.k8s.com']

上面配置好后,在DNS上做好对应的SRV解析接口。

重新加载配置文件

检查配置文件,并重新加载

# 检查配置文件
[root@es01 config]# /opt/prometheus-2.14/bin/promtool check config /opt/prometheus-2.14/config/prometheus.yml
Checking /opt/prometheus-2.14/config/prometheus.yml
  SUCCESS: 0 rule files found

# 重新加载配置文件
[root@es01 config]# curl -X POST httP://10.0.20.11:9090/-/reload
[root@es01 config]# 

配置测试告警

修改prometheus配置

定义报警规则,把这些规则写入到 rule_files: 配置下面

[root@es01 config]# cat prometheus.yml
global:
  scrape_interval:     15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
    - dns_sd_configs:
      - names: ["_alertmanager._tcp.k8s.com"]

rule_files:
   - "rules/node_alerts.yml"    # 这里支持通配符,如 *.yml
   - "rules/node_rules.yml"     # 这个同样也是,表示自定义永久固定查询值

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'node_srv'
    metrics_path: "/metrics"
    dns_sd_configs:
    - names: ['_prometheus._tcp.k8s.com']

  - job_name: 'alertmanager'
    metrics_path: "/metrics"
    dns_sd_configs:
    - names: ['_alertmanager._tcp.k8s.com']

然后创建对应的目录和具体规则文件

[root@es01 config]# mkdir rules
[root@es01 config]# cat rules/node_alerts.yml 
groups:
- name: node_alerts                 # 规则名称
  rules:
  - alert: HighNodeCPU              # 告警名称
    expr: instance:node_cpu:avg_rate5m > 4  # 告警条件
    for: 1m                         # 查询时间间隔
    labels:
      severity: warning             # 告警级别
    annotations:                    # 注释
      summary: High Node CPU for 1 hour # 发送告警的内容
      console: Thank you Test   

# 下面的和上面的都类似
- name: disk_alerts
  rules:
  - alert: DiskWillFillin4Hours
    expr: predict_linear(node_filesystem_free_bytes[1h], 4*3600) < 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summmary: Disk on {{ $labels.instance }} will fill in approximately 4 hours.

- name: node_instance
  rules:
  - alert: InstanceDown
    expr: up{job=~"node.*"} == 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: Host {{ $labels.instance }} of {{ $labels.job }} is Down!
[root@es01 config]# cat rules/node_rules.yml 
groups:
- name: node_rules          # 规则名称
  interval: 10s             # 查询间隔
  rules:
  - record: instance:node_cpu:avg_rate5m        # 查询名称,此名称在prometheus中可直接查询
    expr: 100 - avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100 # 查询语句
    labels:
      metric_type: aggragation          # 增加的标签,通过此规则查出来的metric值,会增加这个标签
      
  - record: instance:node_memory_usage:percentage
    expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes)) / node_memory_MemTotal_bytes  * 100

重新加载配置文件

检查配置文件,并重新加载

# 检查配置文件
[root@es01 config]# /opt/prometheus-2.14/bin/promtool check config /opt/prometheus-2.14/config/prometheus.yml
Checking /opt/prometheus-2.14/config/prometheus.yml
  SUCCESS: 1 rule files found

Checking /opt/prometheus-2.14/config/rules/node_alerts.yml
  SUCCESS: 3 rules found

# 重新加载配置文件
[root@es01 config]# curl -X POST httP://10.0.20.11:9090/-/reload
[root@es01 config]# 


测试触发告警

下载CPU压测软件下载地址:https://patrickmn.com/projects/cpuburn/

这个软件能把CPU跑满,之后prometheus会想Alertmanager发出告警,Alertmanager收到后会发送邮件。

root@es2 ~]# wget https://cdn.pmylund.com/files/tools/cpuburn/linux/cpuburn-1.0-amd64.tar.gz
--2019-11-27 10:44:33--  https://cdn.pmylund.com/files/tools/cpuburn/linux/cpuburn-1.0-amd64.tar.gz
Resolving cdn.pmylund.com (cdn.pmylund.com)... 13.35.50.33, 13.35.50.98, 13.35.50.4, ...
Connecting to cdn.pmylund.com (cdn.pmylund.com)|13.35.50.33|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 414161 (404K) [application/x-gzip]
Saving to: ‘cpuburn-1.0-amd64.tar.gz’

100%[================================================================================================================>] 414,161      372KB/s   in 1.1s   

2019-11-27 10:44:37 (372 KB/s) - ‘cpuburn-1.0-amd64.tar.gz’ saved [414161/414161]

[root@es2 ~]# tar xf cpuburn-1.0-amd64.tar.gz 
[root@es2 ~]# ls
cpuburn  cpuburn-1.0-amd64.tar.gz
[root@es2 ~]# cd cpuburn
[root@es2 cpuburn]# ls
cpuburn  LICENSE  README
[root@es2 cpuburn]# ./cpuburn 
Burning 4 CPUs/cores
10 seconds
20 seconds
30 seconds

查看prometheus中alert

然后去alertmanager页面查看:

当Alertmanager收到此警告后,等待三十秒,当没有其他警告接入的时候,会把此警告信息通过邮件的形式发出。

技术男一枚,喜欢做技术分享,把学习的过程,以及遇到问题的解决过程都愿意分享给大家,博客中如有不足,请留言或者联系博主,感谢。 邮箱: sijiayong000@163.com Q Q: 601566386

与[转帖]Alertmanager 部署配置相似的内容:

[转帖]Alertmanager 部署配置

https://www.cnblogs.com/winstom/p/11940570.html 目录 前言 源码安装 配置 启动 配置prometheus监控Alertmanager 修改prometheus配置 重新加载配置文件 配置测试告警 修改prometheus配置 重新加载配置文件 测试触

[转帖]部署Alertmanager

https://flashcat.cloud/docs/content/flashcat-monitor/prometheus/alert/manager-install/ Alertmanager和Prometheus Server一样均采用Golang实现,并且没有第三方依赖。一般来说我们可以通

[转帖]AlertManager 配置邮箱告警

http://www.mydlq.club/article/126/ 2022-12-02 13:17:00KUBERNETESPROMETHEUSALERTMANAGER 文章目录 一、邮箱告警说明 二、创建邮箱模板文件 三、AlertManager 添加邮箱告警配置 3.1 AlertManag

[转帖]alertmanager的使用

https://www.jianshu.com/p/654d59325550 一、Alertanager的安装 1、下载 下载altermanager 2、安装 # 不同的平台下载不同的安装包 wget https://github.com/prometheus/alertmanager/relea

[转帖]验证Prometheus alertmanager邮件发送

https://www.cnblogs.com/charlieroro/p/11009493.html 新环境上配置alertmanager时出现了“Client was not authenticated to send anonymous mail during MAIL FROM”错误,但老环

[转帖]Promethues + Grafana + AlertManager使用总结

Prometheus是一个开源监控报警系统和时序列数据库,通常会使用Grafana来美化数据展示。 1|01. 监控系统基础架 1|11.1核心组件 Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。 exporters ,数据采

[转帖]简单聊聊运维监控的其他用途

https://www.cnblogs.com/charlieroro/p/16434344.html 说到监控,一般都会聊到这三个基本维度:metrics、log和tracing,以及这几种常用的工具:Prometheus+grafana+alertmanager、ELK、jaeger。 监控通常

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、