elastalert系列~1.elastalert基础概念


前言

​ 在企业中一般日志都采用ELK(elasticsearch、logstash、kibana)进行采集,通过kibana提供的可视化界面进行查看,但是日志告警的的方案很少。因此日志告警将采用elastAlert进行扩展。

从 Elastalert 0.2.0 开始,你必须使用 Python 3.6。将不再支持 Python 2

elastalert 开源地址:https://github.com/Yelp/elastalert

1. elastalert简介

​ 日志告警 即 对日志进行监控,如果发现日志中出现特定的信息,就触发报警功能。这是一种独立的,没有侵入性的技术。

​ 日志告警的优点在于,告警规则可以独立于应用程序,应用程序只需要使用log4j这样的日志框架打印日志,日志告警引擎负责收集分析这些日志,当匹配规则时,发送报警,架构的耦合性是非常低的。

以下阐述一个简单的elastalert产生告警的流程:

1)本地产生日志的程序

2)本地日志收集的文件

3)filebeat采集日志文件,并推送到elasticsearch中

4)elasticsearch提供存储和查询的接口API服务

5)elastalert通过API查询日志,并匹配告警规则,进行告警

2. 工作原理

elastalert的工作方式,如下三点:

1)周期性访问elasticsearch,即 配置 run_every参数

2)数据传入elastalert的规则引擎

3)数据与规则引擎中的规则(加载的rule规则文件)进行匹配

3. 规则类型

ElastAlert包含几种具有常见监视范例的规则类型:

  • “匹配Y时间至少有X个事件发生”(frequency type
  • “当事件发生率增加或减少时进行匹配”(spike type
  • “在Y时间内少于X个事件时进行匹配”(flatline type
  • “当某个字段与黑名单/白名单匹配时匹配”(blacklistwhitelist type
  • “匹配与给定过滤器匹配的任何事件”(any type
  • “当某个字段在一段时间内具有两个不同的值时进行匹配”(change type

4. 案例规则

告警规则: 如果在4小时内有50多个带有some_field == some_value的文档,请发送电子邮件至elastalert@example.com

【案例】使用frequency规则,匹配一定时间内至少有一定数量的事件发生时,以下规则匹配。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# ES的ip和端口号
es_host: elasticsearch.example.com
es_port: 9200

# 规则名称
name: Example rule
type: frequency

# ES索引
index: logstash-*
num_events: 50
timeframe:
hours: 4
filter:
- term:
some_field: "some_value"
alert:
- "email"
email:
- "elastalert@example.com"

字段说明:

  • es_hostes_port应指向我们要查询的Elasticsearch集群。
  • name:定义规则的唯一名称,否则ElastAlert将不会启动。
  • type:每个规则具有不同的类型,可能采用不同的参数。频率类型表示“在时间范围内发生超过num_event个事件时发出警报。”
  • index:要查询的索引的名称。如果您使用的是Logstash,则默认情况下索引将匹配“ logstash- * ”。
  • num_events:此参数特定于频率类型,并且是触发警报时的阈值。
  • timeframe 是必须发生num_events的时间段。
  • filter是用于过滤结果的Elasticsearch过滤器列表。在这里,我们为带有some_field匹配some_value的文档提供了一个单项过滤器。如果不需要过滤器,则应将其指定为空列表:filter:[]
  • alert是在每次比赛中运行的警报的列表。电子邮件警报要求使用SMTP服务器发送邮件。默认情况下,它将尝试使用localhost。可以使用smtp_host选项进行更改。
  • email 是警报将发送到的地址列表。
  • Type: change -此规则将监视特定字段,并在该字段更改时匹配。

文章作者: 王海飞
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 王海飞 !
  目录