前言

前面一篇博客,我已经介绍了prometheus如何监控mysql。

这一篇我来介绍如何通过alertmanger进行告警邮件发送(微信或钉钉类似,因为需要企业帐户,我就不试了),以及如何通过grafana查看告警。

开始演示

测试机器

Prometheus: 192.168.56.140

Host01:192.168.56.103

安装alertmanager

获取安装包

wget https://github.com/prometheus/alertmanager/releases/download/v0.22.2/alertmanager-0.22.2.linux-amd64.tar.gz

创建目录

mkdir -p /etc/alertmanager/

mkdir -p /etc/alertmanager/data

mkdir -p /etc/alertmanager/template/

获取邮件模板

[root@prometheus-server template]# pwd

/etc/alertmanager/template

[root@prometheus-servertemplate]# wget https://raw.githubusercontent.com/prometheus/alertmanager/master/template/default.tmpl

复制文件到/etc/alertmanager目录

[root@prometheus-server ftpusr]cp ./alertmanager-0.22.2.linux-amd64/alertmanager* /etc/alertmanager/.

配置启动服务

[root@prometheus-server alertmanager]# cat /etc/systemd/system/alertmanager.service

[Unit]

Description=Alertmanager

After=network.target

[Service]

Type=simple

User=prometheus

ExecStart=/etc/alertmanager/alertmanager \

  --config.file=/etc/alertmanager/alertmanager.yml \

  --storage.path=/etc/alertmanager/data

Restart=on-failure

[Install]

WantedBy=multi-user.target

配置alertmanager邮件发送

如下我使用的是163邮箱来发送邮件。

如需使用SMTP服务,需要先开启服务。开启后,增加授权码,如下配置文件里面的smtp_auth_password填写的是授权码(而不是个人邮箱密码)

[root@prometheus-server alertmanager]# cat alertmanager.yml

global:

  smtp_smarthost: 'smtp.163.com:25'

  smtp_from: 'xxxx@163.com'

  smtp_auth_username: 'xxxx@163.com'

  smtp_auth_password: 'xxxxxxxxxxx'

  smtp_require_tls: false

templates:

  - '/etc/alertmanager/template/*.tmpl'

route:

  group_by: ['alertname','cluster','service']

  group_wait: 10s

  group_interval: 10s

  repeat_interval: 10m

  receiver: 'default-receiver'

receivers:

- name: 'default-receiver'

  email_configs:

  - to: '20889922@qq.com'

    html: '{{ template "email.default.html" . }}'

    headers: { Subject: "Prometheus 告警测试邮件" }

启动服务

service alertmanager start

prometheus配置alertmanager

prometheus.yml配置

# Alertmanager configuration

alerting:

  alertmanagers:

  - static_configs:

    - targets: ["localhost:9093"]

      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.

rule_files:

  - "rules.yml"

  # - "first_rules.yml"

  # - "second_rules.yml"

rules.yml配置

[root@prometheus-server prometheus]# cat rules.yml

# hostStatsAlert

groups:

- name: hostStatsAlert

  rules:

  - alert: NodeDown

    expr: up == 0

    for: 1m

    labels:

      severity: "Critical"

    annotations:

      summary: "Instance {{$labels.instance}} down"

      description: "{{$labels.instance}} of job {{$labels.job}} has been down for more than 5 minutes."

  - alert: NodeCPUUsage

    expr: sum(avg without (cpu)(irate(node_cpu_seconds_total{mode!='idle'}[5m]))) by (instance) > 0.85

    for: 1m

    labels:

      severity: "Warning"

    annotations:

      summary: "Instance {{ $labels.instance }} CPU usgae high"

      description: "{{ $labels.instance }} CPU usage above 85% (current value: {{ $value }})"

  - alert: NodeMemoryUsage

    expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes > 0.85

    for: 1m

    labels:

      severity: "Warning"

    annotations:

      summary: "Instance {{ $labels.instance }} MEM usgae high"

      description: "{{ $labels.instance }} MEM usage above 85% (current value: {{ $value }})"

  - alert: filesystemUsageAlert

    expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/",fstype=~"ext4|xfs"}) > 85

    for: 1m

    labels:

      severity: "Warning"

    annotations:

      summary: "Instance {{ $labels.instance }} root DISK usgae high"

      description: "{{ $labels.instance }} root DISK usage above 85% (current value: {{ $value }})"

重新启动prometheus使服务生效

service prometheus restart

查看告警邮件

等待几分钟后,可以看到邮件的告警信息

登录alertmanager端口,也可查看告警信息

http://192.168.56.140:9093/

Alertmanager grafana展示

安装

grafana-cli plugins install camptocamp-prometheus-alertmanager-datasource

安装完后,重新启动grafana-server

service grafana-server restart

添加alertmanager datasource

导入dashboard

展示效果

碰到的问题与解决方法

告警展示的时候,虽然alerts有两个告警,但downnode却显示没有。

通过下载展示的JSON文件,查看原来是altername在告警文件中,与JSON文件中不匹配。匹配完成就OK了。

serverity在邮件显示正常,但是grafana无法正常显示。这个还没调查清楚。

估计得需要谷歌了。但是,你能体会中国人无法上谷歌的痛苦吗?

参考资料:

https://www.cnblogs.com/danny-djy/p/11097726.html

https://medium.com/devops-dudes/prometheus-alerting-with-alertmanager-e1bbba8e6a8e

Prometheus alertmanager邮件发送+grafana告警展示的更多相关文章

  1. 验证Prometheus alertmanager邮件发送

    新环境上配置alertmanager时出现了“Client was not authenticated to send anonymous mail during MAIL FROM”错误,但老环境上 ...

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

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

  3. Prometheus + Alertmanager 实现企微告警

    上一篇:二进制安装Prometheus  下面准备在监控的流程中呈现到告警到企微 查看企业ID,用于后续配置文件 四.安装Alertmanager1.准备安装的包 --选择上面链接给的Linux的ta ...

  4. Prometheus + AlertManager 邮件报警

    安装 wget https://github.com/prometheus/alertmanager/releases/download/v0.13.0/alertmanager-0.13.0.lin ...

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

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

  6. Prometheus学习笔记(5)Grafana可视化展示

    目录 一.Grafana安装和启动 二.配置数据源 三.配置dashboard 四.配置grafana告警 一.Grafana安装和启动 Grafana支持查询Prometheus.从Grafana ...

  7. [k8s]prometheus+alertmanager二进制安装实现简单邮件告警

    本次任务是用alertmanaer发一个报警邮件 本次环境采用二进制普罗组件 本次准备监控一个节点的内存,当使用率大于2%时候(测试),发邮件报警. k8s集群使用普罗官方文档 环境准备 下载二进制h ...

  8. jmx_prometheus_javaagent+prometheus+alertmanager+grafana完成容器化java监控告警(二)

    一.拓扑图 二.收集数据 2.1前期准备 创建共享目录,即为了各节点都创建该目录,有两个文件,做数据共享 /home/target/prom-jvm-demo 1.下载文件 jmx_prometheu ...

  9. cadvisor+prometheus+alertmanager+grafana完成容器化监控告警(一)

    一.概况 1.拓扑图 2.名词解释 Grafana 可视化监控容器运行情况 Prometheus: 开源系统监视和警报工具包 Alertmanager 一个独立的组件,负责接收并处理来自Prometh ...

随机推荐

  1. CentOS-磁盘扩容挂载目录

    挂载 查看存储情况 $ df -kh 查看磁盘情况 $ fdisk -l fdisk创建分区(注:可操作存储上限为2TB)$ fdisk /dev/sdb根据提示,依次输入"n", ...

  2. 常见链表操作-链表中环的检测(JAVA实现)

    问题如何检测一个单链表中是否有环,例如下图的例子. 解决思路1:快慢指针法这是最常见的方法.思路就是有两个指针P1和P2,同时从头结点开始往下遍历链表中的所有节点. P1是慢指针,一次遍历一个节点.P ...

  3. log4j和log4j2的配置部分

    log4j和log4j2的功能及形式对比 http://blog.csdn.net/fangaohua200/article/details/53561718 log4j2的proptise配置 ht ...

  4. [Vue入门及介绍,基础使用、MVVM架构、插值表达式、文本指令、事件指令]

    [Vue入门及介绍,基础使用.MVVM架构.插值表达式.文本指令.事件指令] 1)定义:javascript渐进式框架 ​ 渐进式:可以控制一个页面的一个标签,也可以控制一系列标签,也可以控制整个页面 ...

  5. Linux之19——Shell编程基础详解

    第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...

  6. 家庭账本开发day07

    返回数据问题解决,需要按照规定的json数据进行返回. 利用jsonobejact或者GSON工具将对象ArrayList转化为json 格式.然后response.getWriter().write ...

  7. lombok之@Data

    在实体类的编写过程中,常常需要应用大量的get.set方法,需要写大量的重复代码,即有的工具有自动生成功能,当时也会使实体类中产生大量冗余代码,使得代码变,springboot为我们提供了相应注解可以 ...

  8. 2018年一名合格的web前端程序员应该会哪些技术

    有朋友让小编说一说web前端在未来几年的发展趋向,对于这个问题,恕小编无能为力,web前端技术日新月异,更新非常快,谁也不能预料未来会发生些什么 小编也只能说在2018年,react native和j ...

  9. FPGA经典:Verilog传奇与基于FPGA的数字图像处理原理及应用

    一 简述 最近恶补基础知识,借了<<Verilog传奇>>,<基于FPGA的嵌入式图像处理系统设计>和<<基千FPGA的数字图像处理原理及应用>& ...

  10. pip批量安装库

    将需要安装的库名和版本号都写在一个txt文档中,每个库名占一行,例如requests==2.24.0. 然后在用pip install -r命令去找到这个txt文档批量安装里面填写的库,如果嫌速度太慢 ...