【Elastalert】告警模式之spike配置详解实例

转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer


写在前边的话

Elastalert是由python2.6写的一个告警框架,针对ELK日志分析系统来讲具有很大的作用,在 Elastalert-基于Elasticsearch层面的监控告警框架中,我们了解了Elastalert框架和配置使用了frequence的告警规则,这篇文章我们来看下Spike告警规则,相对来讲,spike rule不是很好理解,希望读者们能够细心阅读,有什么不懂的问题,可以留言讨论

该文永久地址:http://blog.csdn.net/Gamer_gyt/article/details/53381279


环境说明

ubuntu:16.04
Elastalert :0.14
Elasticsearch 2.4.1
Logstash 2.4.0
Kibana 4.6.1

其中的发邮件配置部分参考: Elastalert-基于Elasticsearch层面的监控告警框架


配置文件解读

# 可选的,elasticsearch 所在主机的ip地址
# es_host: elasticsearch.example.com

# 可选的,elasticsearch的服务端口
# 这里的elasticsearch之所以说是可选是因为在config.ymal中已经配置过了
# es_port: 14900

# 可选,是否使用SSL加密传送数据,这是因为elasticsearch如果被search-guard或者x-pack/shield保护的话,要启用
#use_ssl: True

# 可选,对应访问elasticsearch的账号和密码
#es_username: someusername
#es_password: somepassword

# 必选的,rule的唯一名字
name: Event spike

# 必选的,rule的类型
type: spike

# 必选的,监控的索引
index: logstash-*

# 二选一,cur:当前窗口,ref:参照窗口 后边会着重讲述
threshold_cur: 5
#threshold_ref: 5

# 必选的,窗口参照时间
timeframe:
  hours: 2

# 必选的,衡论是否进行报警的一个警戒线
spike_height: 3

# 必选的,spike_type有三种类型,up,down,both
spike_type: "up"

# 必须的,进行匹配过滤的条件
# 更多过滤条件设置参考: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html
filter:
- query:
    query_string:
      query: "field: value"
- type:
    value: "some_doc_type"

# 必须的,报警方式
alert:
- "email"

# 必选的,邮件的接受地址
email:
- "elastalert@example.com"

重要参数解释

  • spike_type:

  • up:意味着只会匹配超过当事件发生的次数超过spike_height

  • down:意味着只会匹配超过当事件发生的次数低于spike_height

  • both:都会进行匹配

  • spike_height:最后一个时间帧中的事件数与上一个命中时触发警报的时间帧的比率

  • threshold_ref:要触发的警报在参考窗口中必须存在的事件的最小数量。例如,如果spike_height:3和threshold_ref:10,则“引用”窗口必须包含至少10个事件,“当前”窗口至少为触发警报的三倍。

  • threshold_cur:当前窗口中必须存在的触发警报的最小事件数。例如,如果spike_height:3和threshold_cur:60,则当前窗口具有多于60个事件并且参考窗口少于三分之一时,将发生警报。
    (当前窗口和参照窗口,而这个窗口就是一个时间段(timeframe))


spike的报警规则

1、如果设置了threshold_ref或者threshold_cur,那么比较对应的ref或cur是否大于threshold_ref或者threshold_cur,如果大于,接着看2,否则不警报;

2、是否满足公式 ref * spike_height < cur ,如果是则警报,否则不警报。

例如:
spike_type:up
12:00-14:00发生事件的次数为5,14:00-16:00发生事件的次数为20
设置threshold_cur:6,spike_height:3
由于4<6所以不进行报警

如果我们设置的threshold_cur:4
由于5>4,那么我们看是否满足公式 ref * spike_height < cur ,5*3 > 6不报警

但是如果我们设置的spike_height:1,那么5*1<6,就会进行报警
(这里不是太好理解,大家多读几遍)


实例

前提是ELK和Elastalert都配置OK

logstash的配置文件rsyslog_test.conf

input {
  tcp{
    port => 5000
    type => syslog
  }
  udp{
    port => 5000
    type => syslog
  }
}
output {
  stdout {
    codec=> rubydebug
  }
  elasticsearch {
    hosts => ["127.0.0.1:9200"]
    }
}

elastalert 的example_spike.ymal

es_host: 127.0.0.1

es_port: 9200

name: spike rule

type: spike

index: logstash-*

threshold_ref: 3
timeframe:
  minutes: 1

spike_height: 1

spike_type: "up"

filter:
- query:
    query_string:
      query: "host: 127.0.0.1"
- term:
    _type: "syslog"

use_count_query: true
doc_type: syslog

#SMTP协议的邮件服务器相关配置(我这里是163 mial)
smtp_host: smtp.163.com
smtp_port: 25

#用户认证文件,需要user和password两个属性
smtp_auth_file: smtp_auth_file.yaml
email_reply_to: thinkgamer@163.com
from_addr: thinkgamer@163.com

alert:
- "email"

email:
- "1923361654@qq.com"

邮件配置部分参考: Elastalert-基于Elasticsearch层面的监控告警框架

系统的/etc/rsyslog.conf,最后加入

*.* @@localhost:5000
*.* @localhost:5000

启动elasticsearch和logstash的rsyslog_test.conf
启动elastalert的example_spike.ymal

python -m elastalert.elastalert --verbose --rule example_rules/example_spike.yaml

适当的控制系统的登录日志,最终spike窗口显示如下:

master@ubuntu:/opt/elk/elastalert$ python -m elastalert.elastalert --verbose --rule rules/spike.yaml INFO:elastalert:Starting up
INFO:elastalert:Queried rule spike rule from 2016-11-28 01:26 PST to 2016-11-28 01:27 PST: 0 hits
INFO:elastalert:Ran spike rule from 2016-11-28 01:26 PST to 2016-11-28 01:27 PST: 0 query hits, 0 matches, 0 alerts sent
INFO:elastalert:Sleeping for 59 seconds
INFO:elastalert:Queried rule spike rule from 2016-11-28 01:27 PST to 2016-11-28 01:28 PST: 22 hits
INFO:elastalert:Ran spike rule from 2016-11-28 01:27 PST to 2016-11-28 01:28 PST: 22 query hits, 0 matches, 0 alerts sent
INFO:elastalert:Sleeping for 59 seconds
INFO:elastalert:Queried rule spike rule from 2016-11-28 01:28 PST to 2016-11-28 01:29 PST: 98 hits
INFO:elastalert:Ran spike rule from 2016-11-28 01:28 PST to 2016-11-28 01:29 PST: 98 query hits, 0 matches, 0 alerts sent
INFO:elastalert:Sleeping for 59 seconds
INFO:elastalert:Queried rule spike rule from 2016-11-28 01:29 PST to 2016-11-28 01:30 PST: 110 hits
INFO:elastalert:Sent email to ['1923361654@qq.com']
INFO:elastalert:Ran spike rule from 2016-11-28 01:29 PST to 2016-11-28 01:30 PST: 110 query hits, 1 matches, 1 alerts sent
INFO:elastalert:Sleeping for 59 seconds

这个时候邮箱收到邮件内容:

这里写图片描述


【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值