Elastalert告警 说明总结文档

Elastalert 报警规则

  • name:名称,每个rule需要有自己独立的name,一旦重复,进程将无法启动。

  • type:规则匹配类型,选择某一种数据验证方式,下文会详解。

  • index:ES索引,从某类索引里读取数据,目前已经支持Ymd格式,需要先设置 use_strftime_index:true,然后匹配索引,配置形如:index: logstash-es-test%Y.%m.%d,表示匹配logstash-es-test名称开头,以年月日作为索引后缀的index。

  • filter:基于ES的条件筛选,设置向ES请求的过滤条件。

  • timeframe:时间段选择,累积触发报警的时长。

  • alert:配置,设置触发报警时执行哪些报警手段。不同的type还有自己独特的配置选项,下文中会有提及。

规则type详解:

  • any:只要有匹配就报警;

  • blacklist:compare_key字段的内容匹配上 blacklist数组里任意内容;

  • whitelist:compare_key字段的内容一个都没能匹配上whitelist数组里内容;

  • change:在相同query_key条件下,compare_key字段的内容,在 timeframe范围内发送变化;

  • frequency:在相同 query_key条件下,timeframe 范围内有num_events个被过滤出来的异常;

  • spike:在相同query_key条件下,前后两个timeframe范围内数据量相差比例超过spike_height。其中可以通过spike_type设置具体涨跌方向是up,down,both 。还可以通过threshold_ref设置要求上一个周期数据量的下限,threshold_cur设置要求当前周期数据量的下限,如果数据量不到下限,也不触发;

  • flatline:timeframe 范围内,数据量小于threshold阈值;

  • new_term:fields字段新出现之前terms_window_size(默认30天)范围内最多的terms_size (默认50)个结果以外的数据;

  • cardinality:在相同 query_key条件下,timeframe范围内cardinality_field的值超过 max_cardinality 或者低于min_cardinality

  • Percentage Match: 在buffer_time 中匹配所设置的字段的百分比高于或低于阈值时,此规则将匹配。默认情况下为全局的buffer_time。

 

规则配置举例:

# Alert when the rate of events exceeds a threshold

# (Optional)
# Elasticsearch host
# 无需修改使用全局
# es_host: elasticsearch.example.com

# (Optional)
# Elasticsearch port
# es_port: 14900

# 这里要定义一个规则名称,而且要unique唯一
name: app frequency rule mail


# 定义规则类型
type: frequency


# 需要检索的日志索引
index: logstash-app-prod*

# 命中五次
num_events: 5

# 十分钟之内命中五次,就算是触发一次规则
timeframe:
#  hours: 4
  minutes: 10


# 按照某个字段进行聚合,意思是aggreation_key会和rule的名称拼接在一起作为一个组,单独发送告警,相同的mesage是一个组
#aggregation_key:
#  - message

# 聚合2分钟
aggregation:
  minutes: 2

# 不进行重复提醒的字段,和realert联合使用,30分钟内这个query_key只告警一次
query_key:
  - message

realert:
  minutes: 30

# For more info: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html
# 这里按照正则匹配来查询,可以看query-dsl里面的官方文档
filter:
- query:
    regexp:
      category: "error-*"
#- term:
#    category: "error-*"

# 邮箱设置
smtp_host: smtp.qq.com
smtp_port: 465
smtp_ssl: true
# 发件箱的地址
from_addr: "xx@qq.com"
# 这个是指向的邮箱验证的配置文件,有用户名、和密码,对于qq而言,这里面的密码是授权码,可以通过qq邮箱设置里面,开启smtp的时候查看
smtp_auth_file: /home/elastalert/smtp_auth_file.yaml

# (Required)
# The alert is use when a match is found
# 定义告警类型是邮件提醒
alert:
- "email"

# 下面这些不配置,会发送一个默认的告警模板,纯文字太丑了,所以我们进行了格式化,发送一个html格式的
email_format: html

alert_subject: "app 正式环境 告警 {}"
# 这里使用python 的format 进行格式化
alert_subject_args:
- category

# 如果这个去掉,那么发送alert_text的同时,也会发送默认模板内容
alert_text_type: alert_text_only
# 下面这个是自己配置的
alert_text: "<div style='display:block;background-color: red;padding: 10px;border-radius: 5px;color: white;font-weight: bold;' >    <p>{}</p></div><br><a href='这里填写自己的kibana地址href' target='_blank' style='padding: 8px 16px;background-color: #46bc99;text-decoration:none;color: white;border-radius: 5px;'>Click to Kibana</a><br><h3>告警详情</h3><table><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>@timestamp:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>@version:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>_id:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>_index:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>_type:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>appType:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>appVersion:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>business:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>category:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>geoip:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>guid:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>host:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>message:</td><td style='padding:10px 5px;border-radius: 5px;background-color: red;color: white;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>num_hits:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>num_matches:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>path:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>server:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>uid:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>uri:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr><tr><td style='padding:5px;text-align: right;font-weight: bold;border-radius: 5px;background-color: #eef;'>userAgent:</td><td style='padding:5px;border-radius: 5px;background-color: #eef;'>{}</td></tr></table>"
# 这里需要配置area_text中出现的各个字段,其实跟sprintf一样按照顺序格式化的
alert_text_args:
- message
- "@timestamp"
- "@version"
- _id
- _index
- _type
- appType
- appVersion
- business
- category
- geoip
- guid
- host
- message
- num_hits
- num_matches
- path
- server
- uid
- uri
- userAgent


# 这里配置收件人的邮箱
email:
- "xxx@xxx.com"

 

 

 

 

 

 

 

 

企业微信告警配置:

https://segmentfault.com/a/1190000017553282

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值