背景

前两篇博文我们介绍了Prometheus及其相关的监控组件,本次我们记录一下告警组件:alertmanager

安装配置

获取安装包

官方下载地址:https://prometheus.io/download/
老规矩,按照自己的系统选择合适的包,博主是CentOS7,选择如图所示

配置

1.将包解压并规范目录

按照规范,我们将下载好的包解压、改名并移动到指定目录下

tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz
mv alertmanager-0.21.0.linux-amd64 /opt/prome/aLertmanager

2.控制脚本

跟以前一样,我们用脚本控制服务的启停并监控服务的运行,脚本如下

[root@localhost aLertmanager]$ cat watchdog
#!/bin/bash
#Author:wangjb
#Date:2021-01-20APP=alertmanager
CURR_DIR=$(cd `dirname $0`; pwd)
PROGRAM=$CURR_DIR/watchdog
CRONTAB_CMD="* * * * * $PROGRAM start"
flag=$1
cd $CURR_DIR#创建定时任务
count=`crontab -l | grep $PROGRAM | grep -v "grep" | wc -l`
if [ $count -lt 1 ]; then(crontab -l 2>/dev/null | grep -Fv $PROGRAM; echo "$CRONTAB_CMD") | crontab -count=`crontab -l | grep $PROGRAM | grep -v "grep" | wc -l`if [ $count -lt 1 ]; thenecho "create cron faild."exit 1fi
fifunction pid()
{ser=`ps -ef |grep -w $APP |grep -v grep|grep -v $flag |awk '{print $2}'`echo $ser >"$CURR_DIR/$APP.pid"
}function start()
{pidif [ "$ser" != "" ];thenecho "$APP running. pid=$ser"elseecho "Starting $APP ..."    echo `date +"%Y-%m-%d %H:%M:%S"`,"start $APP" >> $DOG_LOG/${DATE}.lognohup $CURR_DIR/$APP >/dev/null 2>&1 &fisleep 1chkn=`ps -ef |grep -w $APP |grep -v grep|grep -v $flag |wc -l`if [ $chkn -eq 1 ];thenecho "$APP is started"elseecho "$APP start failed"exit 1fi
}function stop()
{echo "Stopping $APP ..."appid=`pgrep -f $APP`if [ "$appid" != "" ];thenkill -TERM $appidfisleep 1chkn=`ps -ef |grep -w $APP |grep -v grep|grep -v $flag |wc -l`if [ $chkn -eq 0 ];thenecho "$APP is stoped"elseecho "$APP stop failed"exit 1fi
}function restart() {stopstart
}function k()
{kill -9 `pgrep -f $APP`
}function status() {pidif [ "$ser" != "" ];thenecho $APP started pid=$serelseecho $APP stopedfi
}function usage()
{echo "$0 start      启动服务"echo "$0 stop       停止服务"echo "$0 restart    重启服务"echo "$0 status     查询服务状态"echo "$0 k          强制杀死服务进程"
}case "$1" instart)start;;stop)stop;;restart)restart;;status)status;;k)k;;*)usage
esac

3.定义告警规则

首先我们可以先定义一下告警规则的存放目录,此处我将目录和alertmanager放在一起,需要注意的是,告警规则是Prometheus读取判断的,不是alertmanager,所以告警规则文件有变更,需要重启Prometheus。

cd /opt/prome/aLertmanager
mkdir rules && cd rules

在定义告警规则之前,我们要先了解一下Prometheus的告警规则是如何定义的(此处语句啰嗦^)^)
prometheus的告警需要按照特定文件格式,编辑定义,此处借网络上整理的比较详细易懂的内容解释一下:

# 警报的名称。 必须是有效的度量标准名称。
alert: <string># 要评估的PromQL表达式。 每个评估周期都会在当前时间进行评估,并且所有结果时间序列都会成为待处理/触发警报。
expr: <string># 警报一旦被退回这段时间就会被视为开启。
# 尚未解雇的警报被认为是未决的。
[ for: <duration> | default = 0s ]# 为每个警报添加或覆盖的标签。
labels:[ <labelname>: <tmpl_string> ]# 要添加到每个警报的注释。
annotations:[ <labelname>: <tmpl_string> ]

举一个网上常用的列子,节点监控:

[root@localhost rules]$ vim node-up.rules
groups:
- name: node-uprules:- alert: node-upexpr: up == 0for: 15slabels:severity: 1team: nodeannotations:summary: "{{ $labels.instance }} 已停止运行超过 15s!"description: "{{ $labels.instance }} 检测到服务异常停止!请重点关注!!!"titled: "节点异常"

这里最主要的就是要懂一点PromQL,然后根据Prometheus的metrics定义规则

4.修改Prometheus配置文件

规则定义好了之后,我们需要修改一下Prometheus的配置文件,打开prometheus.yml我们可以看到,其实它早已给alertmanager预留的位置,我们只需要在此稍作修改即可

5.启动服务并验证

此时,我们只需要执行aLertmanager下的./watchdog start,然后重启pRometheus即可
根据你的IP:9093,在web端打开

然后我们停掉一个node-exporter,来测试一下,这里将crontab里注释掉,以防自动启动

然后我们刷新一下页面。就能看到告警信息(如果没有,就等一会儿再刷新)

点击info我们可以看到告警内容

6.配置邮件告警

告警信息有了,我们需要让其通知到我们,毕竟不能总是在这刷新页面吧@-_-@
此处我们可以选择最方便的邮件告警,邮件告警不需要你再去配置其他组件或服务,只需配置一下alertmanager的配置文件,最多再加一个邮件模板

1.配置文件

global:resolve_timeout: 2m
# 邮箱  smtp_smarthost: 'smtp.xxx.net:465'smtp_from: 'aa@xxx.com'smtp_auth_username: 'aa@xxx.com'
# 此处不是邮箱密码,而是邮箱授权码smtp_auth_password: '7450RTYSKJDLKS'smtp_hello: 'xxx.com'smtp_require_tls: false# 邮件模版
templates:- './tmpl/email.tmpl'
route:group_by: ['alertname']group_wait: 30sgroup_interval: 1mrepeat_interval: 1mreceiver: email# email
- name: 'email'email_configs:
# 这里是收件人邮箱,可以写多个- to: 'xxx@xxx.com,yyy@xxx.com'html: '{{ template "email.to.html" . }}'headers: { Subject: " {{ .CommonAnnotations.titled }}" } #标题send_resolved: true
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']

smtp_smarthost: 这里为邮箱 SMTP 服务地址
smtp_auth_password: 这里为第三方登录邮箱的授权码,非账户登录密码

2.邮件模板

为了规范和方便查看,我们可以自定义告警邮件的模板和告警恢复模板

[root@localhost aLertmanager]$ mkdir tmpl && cd tmpl
[root@localhost aLertmanager]$ vim email.tmpl
{{ define "email.to.html" }}
{{ if gt (len .Alerts.Firing) 0 -}}
{{ range .Alerts }}
<pre>
=========start==========
告警程序: prometheus_alert
告警级别: {{ .Labels.severity }} 级
告警类型: {{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
=========end==========
</pre>
{{ end }}
{{ end }}
{{ if gt (len .Alerts.Resolved) 0 -}}
{{ range .Alerts }}
<pre>
【告警恢复】
=========start==========
告警级别:{{ .Labels.severity }} 级
告警类型:{{ .Labels.alertname }}
故障主机: {{ .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==========
</pre>
{{ end }}
{{ end }}
{{ end }}

此处有两点强调:
一、Format 后面的这个时间千万不要随便改,这个是定死的"2006-01-02 15:04:05"。这里定义的时间为go 语言的诞生时间!!!切记不能乱填,alertmanager 是由go 语言开发的,所以他要遵循这个时间。如果随意填写时间,……你可以自己试试看。
好了,我们重启alertmanager,看一下效果

服务器基础告警规则

写了一些服务器基础告警的规则,包含cpu使用率、内存使用率,磁盘分区使用率等,都放在server-status.rules里了,有兴趣或者有需要的可以去看一下:
https://download.csdn.net/download/Mrheiiow/14953829

CentOS7安装可移植Prometheus+grafana--alertmanager配置邮件告警相关推荐

  1. (四) prometheus + grafana + alertmanager 配置Kafka监控

    安装请看https://blog.51cto.com/liuqs/2027365 ,最好是对应的版本组件,否则可能会有差别. (一)prometheus + grafana + alertmanage ...

  2. CentOS7安装可移植Prometheus+grafana--基础搭建

    背景 说明 某些情况下,因项目环境较多,且因网络安全要求,各环境间互不相通,导致无法一个server同时监控所有node,这时候就需要部署多个server,为了简单方便,将已有的server直接打包到 ...

  3. CentOS7安装可移植Prometheus+grafana--pushgateway及自定义监控

    背景 基础搭建篇我们讲了如何配置可移植的Prometheus+grafana,客户端使用的是node_exporter,采用server端pull的方式采集数据,本次我们来试一下client端push ...

  4. Prometheus 监控报警系统 AlertManager 之邮件告警

    文章目录 1.Prometheus & AlertManager 介绍 2.环境.软件准备 3.启动并配置 Prometheus 3.1.Docker 启动 Prometheus 3.2.Do ...

  5. 配置文件详解+AlertManager微信邮件告警配置

    文章目录 前言 AlertManager告警简单部署 一.AlertManager告警简介 1.简介 2.告警规则组成 1)告警名称 2)告警规则 3.Alertmanager特性 1)分组 2)抑制 ...

  6. 3.Prometheus + Grafana实现可视化、告警

    3.Prometheus + Grafana实现可视化.告警 3.1.什么是Grafana 3.2.快速入门 3.3.Grafana的下载 3.4.启动grafana 3.5.配置数据源 3.6.配置 ...

  7. Prometheus+Grafana+企业微信机器人告警

    Prometheus+Grafana+企业微信机器人告警 开源监控和报警系统 Prometheus+Grafana+企业微信机器人告警 Prometheus+Grafana+企业微信机器人告警 1.P ...

  8. 7月10日任务 添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理...

    2019独角兽企业重金招聘Python工程师标准>>> 19.12 添加自定义监控项目 该配置的用途是监控模板中没有的监控项目. 需求:监控某台web的80端口连接数,并出图. 步骤 ...

  9. 添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理

    添加自定义监控项目 需求:监控某台web的80端口连接数,并出图. 步骤: 1) zabbix监控中心创建监控项目 2) 针对该监控项目以图形展现 被监控端: 1. [root@centos7-2 l ...

最新文章

  1. ReadResolve方法与序列化
  2. wpf 依赖属性和附加属性
  3. (转)NGUI研究院之三种方式监听NGUI的事件方法
  4. oracle递归查询子节点
  5. LInux CentOS6 无人值守安装实例(原作)
  6. 高清 网络摄像机 华为海思3510芯片
  7. SpringCloud系列七:使用Ribbon实现客户端侧负载均衡
  8. R,让你的数据分析更简便!
  9. Kogito,ergo规则—第2部分:规则的全面执行模型
  10. windows下环境变量配置后没生效,不重启电脑的解决办法
  11. 如何解决设置虚拟服务器不生效,nginx虚拟主机的配置不生效
  12. 用for打印菱形java_Java 动态打印菱形代码之for循环的使用
  13. Spark核心类:SQLContext和DataFrame
  14. Rust : future库
  15. 如何评价 IEEE Access 成为了 Top 期刊?
  16. eclipse32位安装教程_Maya2015 (64位) 软件安装教程
  17. 极速office(Word)怎么删除页眉
  18. CST816S触摸驱动
  19. Windows下PostgreSQL 8.1版安装图解
  20. C#检测网络连接状态

热门文章

  1. 基于Matlab的多线激光中心坐标值提取
  2. Python安装及环境配置一文式解决
  3. 苹果iOS越狱元老:想尽快实现iOS9.3.3越狱就自己开发
  4. 哈理工计算机学院学生会技术部,信息技术学院、软件学院学生会各部门工作职责...
  5. 【论文阅读笔记|ACL2022】Continual Sequence Generation with Adaptive Compositional Modules
  6. 火狐浏览器历史版本下载
  7. Codeforces 1428E Carrots for Rabbits
  8. mysql 创建触发器(for each row解释)
  9. Java学习12.6
  10. 安装java1.6_JAVA1.6怎么安装