Prometheus告警[极简-入门]

安装alertmanager

安装包下载:
地址1:https://prometheus.io/download/
地址2:https://github.com/prometheus/alertmanager/releases

步骤:
1.部署alertmanager
2.在alertmanager.yml配置文件中配置邮箱服务器,路由数,接收人。
3.配置Prometheus与Alertmanager通信
4.在Prometheus中创建告警规则

1.部署
下载二进制包后解压

tar zxvf alertmanager-xxxx.tar.gz
mv alertmanager-xxxx    alertmanager

注册系统服务(启动后端口默认·为9093)

[Unit]
Description=alertmanager
[Service]
ExecStart=/usr/local/monitor/alertmanager/alertmanager --config.file=/usr/local/monitor/alertmanager/alertmanager.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
  1. alertmanager.yml配置
#全局设置
global:
  resolve_timeout: 5m
  # 邮箱服务器
  smtp_smarthost: 'smtp.qq.com:25'
  smtp_from: '发送人邮箱'
  smtp_auth_username: '发送人邮箱'
  smtp_auth_password: '授权码'
  smtp_require_tls: false

# 配置路由树
route:
  group_by: ['jiankong'] # 根据告警规则组名进行分组
  group_wait: 30s # 分组内第一个告警等待时间,30s内如有第二个告警会合并一个告警
  group_interval: 10s # 发送新告警间隔时间,控制告警组的发送频率,一条告警消息发送后,等待3分钟,发送第二组告警
  repeat_interval: 30m # 重复告警间隔发送时间,如果一条告警已经发送成功,后续相同的告警间隔6分钟发送
  receiver: 'java_linux'  #接收人

# 接收人
receivers:
 - name: 'java_linux'
   email_configs:
   - to: '[email protected]'

3.配置Prometheus与Alertmanager通信


image.png

vim prometheus.yml

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - 127.0.0.1:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
   - "rules/*.yml"
  # - "second_rules.yml"

配置了所有告警规则都匹配 普罗米修斯目录下rules目录下的所有yml文件,所以要新建一个目录rules

vim rules/node.yml

groups:
- name: jiankong   #告警规则组名称
  rules:
#文件系统使用率超过70%就告警
  - alert: DiskFilesUsage    #告警规则名称
    expr: 100 - (node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 70 #ProQL表达式作为触发条件阀值
    for: 2m    #等待评估时间
    labels:    #自定义标签,定义一个level标签,标记这个告警规则是警告级别
      level: warning
    annotations:   #指定附加信息(邮件标题文本)
      summary: "{{ $labels.instance }}: {{ $labels.mountpoint }}分区使用过高"
      description: "{{$labels.instance}}: {{$labels.mountpoint }} 分区使用大于 80% (当前值: {{ $value }})"
  
  - alert: MemUsage
    expr: 100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 >80
    for: 2m
    labels:
      level: warning
    annotations:
      summary: "{{ $labels.instance }}: 内存使用过高"
      description: "{{$labels.instance}}:  内存使用大于 80% (当前值: {{ $value }})"

  - alert: CpuUsage
    expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) > 80
    for: 2m
    labels:
      level: warning
    annotations:
      summary: "{{ $labels.instance }}: CPU使用过高"
      description: "{{$labels.instance}}:  CPU使用大于 80% (当前值: {{ $value }})"

重新加载服务


image.png

这里告警规则已经应用上了

测试:
当分区1.111机器的跟分区使用率大于70%


image.png

开始检测到指标触发阀值,回到评估状态,过了评估时间就会发邮件

image.png

Prometheus 告警状态了解

一旦这些警报存储在Alertmanager,它们可能处于以下任何状态:

  • · Inactive:这里什么都没有发生。
  • · Pending:已触发阈值,但未满足告警持续时间(即rule中的for字段)
  • · Firing:已触发阈值且满足告警持续时间。警报发送到Notification Pipeline,经过处理,发送给接受者这样目的是多次判断失败才发告警,减少邮件。

image

你可能感兴趣的:(Prometheus告警[极简-入门])