警报规则允许您根据 Prometheus 表达式语言表达式定义警报条件,并将有关触发警报的通知发送到外部服务。每当警报表达式在给定的时间点产生一个或多个向量元素时,警报对于这些元素的标签集算作活动。
prometheus对指标的收集、存储与告警能力分属于Prometheus serve和alertmanager两个独立的组件,pro-server只负责通过"告警规则"生成告警通知,具体告警操作是由alertmmanager完成
告警规则:
是由PromQL编写的布尔值表达式使用>< =与一个常用量值,比如80%进行比较,其返回值为true或false
prometheus-server对抓取到的指标序列与告警规则中做为比较的Prometheus匹配,则会把此样本值抓取过来作比较,若返回值为true则认为指标异常,不能满足false,则为正常值以上表达式为告警规则表达式
比如:筛选一个指标数据cpu使用率<0%系统异常
一旦条件表达式为true了就会触发通知信息,送给altermanager,由alter借助特定服务的API或者访问入口,将此信息发出去一般称为告警媒介,也可以借助邮件进行告警SMTP
route:告警路由,分组、分类分发告警消息给不同渠道
prometheus通过alter-rule规则,生成告警通知给altermanager
altermanager会生成本地的告警路由表(第一路由默认称为根路由,所有的告警信息都需要一个根路由,没有一个匹配项,则需要设置一个默认路由)为实现将特定的信息发送给特定的用户
例如:
按消息级别来看,严重、中等、普通级别,红色报警、蓝色报警,应用发送方
按分组:业务运维、系统运维、基础设施运维、k8s运维
告警功能:
除了基本的告警通知能力外,Altermanager还支持对告警进行去重、分组、抑制、静默、抑制、分组等功能;
分组 (Grouping):将相似告警合并为单个告警通知的机制,在系统因大面积故障而触发告警潮时,分组机制能避免用户被大量的告警噪声淹没,进而导致关键信息的隐没;
抑制(Inhibition):系统中某个组件或服务故障而触发告警通知后,那些依赖于该组件或服务的其它组件或服务可能也会因此而触发告警,抑制便是避免类似的级联告警的一种特性,从而让用户能将精力集中于真正的故障所在;
静默(silent):是指在一个特定的时间窗口内,即便接收到告警通知,Alertmanager也不会真正向用户发送告警信息的行为;通常,在系统例行维护期间,需要激活告警系统的静默特性;
路由(route):用于配置Alertmanager如何处理传入的特定类型的告警通知,其基本逻辑是根据路由匹配规则的匹配结果来确定处理当前告警通知的路径和行为
cd /opt
tar zxvf alertmanager-0.22.2.linux-amd64.tar.gz -C /usr/local/
ln -s /opt/alertmanager-0.22.2.linux-amd64/ /usr/local/alertmanager
cat /usr/local/alertmanager/alertmanager.yml
cat /usr/local/alertmanager/alertmanager.yml
route: #路由信息
group_by: ['alertname'] #分组
group_wait: 30s #分组缓冲/等待时间
group_interval: 5m #重新分组时间
repeat_interval: 1h #重新告警间隔
receiver: 'web.hook' #接收方/媒介
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://127.0.0.1:5001/' #标注5001端口
inhibit_rules: #抑制规则的策略
- source_match: #匹配项
severity: 'critical' #严重的级别
target_match:
severity: 'warning' #target匹配warning级别
equal: ['alertname', 'dev', 'instance'] #符合alertname、dev、instance
mv /usr/local/alertmanager/alertmanager.yml /usr/local/alertmanager/alertmanager.yml.bak
cd /usr/local/alertmanager
vim alertmanager.yml
global: 全局参数
resolve_timeout: 5m
smtp_from: 邮箱
smtp_auth_username: 邮箱
smtp_auth_password: 去获取密码
smtp_require_tls: false
smtp_smarthost: 'smtp.qq.com:465'
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'email-test'
receivers:
- name: 'email-test'
email_configs:
- to: 邮箱
send_resolved: true
登入邮箱——>设置——>账户——>pop3/IMAO/SMTP/Exchange/CardDVA/——>开启
cd /usr/local/alertmanager
./alertmanager
mv /opt/prometheus-2.27.1.linux-amd64/ prometheus 修改文件名
mv /opt/prometheus/ /usr/local/alertmanager-0.22.2.linux-amd64/ 更改文件位置
cd /usr/local/alertmanager-0.22.2.linux-amd64/prometheus/
mkdir alert-config
cd alert-config
mkdir alert_rules targets
cd alert_rules
cd ../targets
alertmanagers.yaml
vim /usr/local/alertmanager-0.22.2.linux-amd64/prometheus/alert-config/prometheus.yml
cd /usr/local/alertmanager-0.22.2.linux-amd64/prometheus
./prometheus --config.file=./alert-config/prometheus.yml