AlertManager部署

AlertManager配置文件
下载Alertmanager的部署包,需要通过yml文件配置告警发送的通道:

yml文件中配置了邮箱和企业微信提醒:

global配置:

  • resolve_timeout:默认5m
  • smtp_smarthost: ‘smtp邮箱服务器’
  • smtp_from: ‘从哪个邮箱发送’
  • smtp_auth_username: ‘邮箱账号’
  • smtp_auth_password: ‘邮箱密码’
  • smtp_require_tls: true # 587端口走的是STARTTLS,加密协议,需要为true,否则就是false
  • wechat_api_url: ‘https://qyapi.weixin.qq.com/cgi-bin/‘ # 企业微信发送地址
  • wechat_api_corp_id: ‘企业微信id’
  • wechat_api_secret: ‘企业微信应用secret’

templates配置:

  • templates:’模板路径’

route配置:

  • group_by: [‘alertname’] # 报警分组
  • group_wait: 10s #组等待时间
  • group_interval: 10s # 发送前等待时间
  • repeat_interval: 12h #重复周期
  • receiver: ‘monitor’ # 默认警报接收者,需要和receiver中的那么保持一致

receivers配置:

  • name: ‘monitor’ #警报名称
  • email_configs: #邮件配置
    • to: ‘需要发送的邮箱’
    • html: ‘{{ template “email.to.html” . }}’
    • send_resolved: true
  • wechat_configs: #企业微信配置
    • send_resolved: true
    • to_user: ‘@all
    • message: ‘{{ template “wechat.default.message” . }}’
    • to_party: ‘部门id’
    • agent_id: ‘部门agent_id’

配置prometheus文件
下载prometheus的部署包,通过yml文件配置

配置prometheus.yml,是启动prometheus的相关配置,包括了:需要监控的机器、应用、rules文件,alertmanager配置等等。

global配置:

  • scrape_interval:间隔多久采集一次数据
  • evaluation_interval:间隔多久做一次告警检测
  • rule_files:rules配置文件的路径
  • 在scrape_config中每个监控目标是一个job
    • targets:需要被监控的节点
    • job_name:job的名称
    • metrics_path:监控的路径
  • prometheus本身只是配置告警规则,而实际的发送需要通过alertmanager,所以在prometheus文件有alertmanager的配置。Alertmanager默认端口是9093

配置rule文件
在配置prometheus.yml的时候,有个参数rule_files,这个是具体告警的规则,可以有多个

rules.yml配置了告警项和触发规则

在告警规则文件中,我们可以将一组相关的规则设置定义在一个group下。在每一个group中我们可以定义多个告警规则(rule)。一条告警规则主要由以下几部分组成:

  • alert:告警规则的名称。
  • expr:基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
  • for:评估等待时间,可选参数。用于表示只有当触发条件持续一段时间后才发送告警。在等待期间新产生告警的状态为pending。
  • labels:自定义标签,允许用户指定要附加到告警上的一组附加标签。
  • annotations:用于指定一组附加信息,比如用于描述告警详细信息的文字等,annotations的内容在告警产生时会一同作为参数发送到Alertmanager。summary描述告警的概要信息,description用于描述告警的详细信息。同时Alertmanager的UI也会根据这两个标签值,显示告警信息。

配置示例
Prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s
alerting:
 alertmanagers:
 - static_configs:
   - targets: ['localhost:9093']
rule_files:
 - 'alertmanager_rules.yml'
scrape_configs:
  - job_name: 'prometheus'
 metrics_path defaults to '/metrics'
   static_configs:
- targets: ['localhost:9090']

rules.yml

groups:
 - name: 系统告警
   rules:
   - alert: CPU使用率大于80% 
     expr: 100 * (1 - avg(irate(node_cpu_seconds_total{mode="idle"}[2m])) by(instance)) > 80
     for: 1m
     labels: 
      serverity: high
     annotations: 
      summary: "服务器实例 {{ $labels.instance }} CPU 使用率 告警通知"
      description: "{{ $labels.instance }}CPU 使用率已超过 80%, 当前值: {{ $value }}"
   - alert: 内存使用率大于80%
     expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 80
     for: 1m
     labels:
      serverity: middle
     annotations:
      summary: "服务器实例 {{ $labels.instance }} 内存不足 告警通知"
      description: "{{ $labels.instance }}内存资源已不足 20%,当前值: {{ $value }} "
   - alert: 磁盘空间小于20%
     expr: 100 * (node_filesystem_size_bytes{fstype=~"xfs|ext4"} - node_filesystem_avail_bytes) / node_filesystem_size_bytes > 80
     for: 1m
     labels:
      serverity: low
     annotations:
      summary: "服务器实例 {{ $labels.instance }} 磁盘不足 告警通知"
      description: "{{ $labels.instance }}磁盘 {{ $labels.device }} 资源 已不足 20%, 当前值: {{ $value }} "
   - alert: 实例丢失
     expr: up == 0
     for: 1m
     labels:
      serverity: high
     annotations:
      summary: "服务器实例 {{ $labels.instance }} 丢失"
      description: "{{ $labels.instance }} 上的任务 {{ $labels.job }} 已经停止了 1 分钟已上了 "
   - alert: 网卡流量告警
     expr: (irate(node_network_transmit_bytes_total{device!~"lo"}[1m]) / 1000) > 1000000
     for: 1m
     labels:
      serverity: high
     annotations:
      summary: "服务器实例 {{ $labels.instance }} 网卡流量负载 告警通知"
      description: "{{ $labels.instance }}网卡 {{ $labels.device }} 流量已经超过 10MB/s, 当前值: {{ $value }} "

alertmanager.yml

global:
  resolve_timeout: 5m 
  smtp_smarthost: '自己的邮箱服务器'
  smtp_from: '告警发送邮箱'
  smtp_auth_username: '告警发送邮箱'
  smtp_auth_password: '邮箱密码'
  smtp_require_tls: true 
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
  wechat_api_corp_id: '自己的企业id'
  wechat_api_secret: '自己的监控应用secret'
templates:
  - 'template/*.tmpl' #模板路径
route:
  group_by: ['alertname'] 
  group_wait: 10s 
  group_interval: 10s 
  repeat_interval: 12h 
  receiver: 'monitor' 
# 警报接收者
receivers:
  - name: 'monitor' 
    email_configs:
    - to: '需要发送的邮箱'
      html: '{{ template "email.to.html" . }}'
      send_resolved: true
    wechat_configs:
    - send_resolved: true
      to_user: '@all'
      message: '{{ template "wechat.default.message" . }}'
      to_party: '部门id'
      agent_id: '部门agent_id'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
equal: ['alertname', 'dev', 'instance']

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值