elastalert基本配置说明
elastalert 配置语法:
简单rule规则:
- es_host,es_port:查询elasticsearch集群
- name: 规则的唯一名称。如果相同,则elastalert不会启动。
- type: 数据验证方式(规则类型)
- index: 要查询的索引名称。默认
logstash-* - filter: 相当于
query查询语法,将需要匹配的信息给匹配 - alter: 每个匹配项上运行的警报列表。
query部分
- run_every: 定时向ES发请求
- buffer_time: 用来设置请求里时间字段的范围,默认45分钟
- rules_folder: 用来加载下一阶段的rule设置,默认是example_rules
- timestamp_field: 设置buffer_time时针对哪个字段,默认是@timestamp
type(规则类型):
任何
- any: 匹配一切,查询返回的每个结果都会生成一个警报。
黑名单
- blacklist: 黑名单规则将针对黑名单检查某个字段,如果它在黑名单中则匹配
- compare_key: 用于与黑名单进行比较的字段名称。如果该字段为null,则将忽略这些事件
- blacklist: 列入黑名单的列表,and or
适用于,已知所有报警的错误时。并将其列举出来。
compare_key: "request"
blacklist:
- /index.html #request字段匹配有请求/index.html就报警
- "!file /tmp/blacklist1.txt"
- "!file /tmp/blacklist2.txt"
白名单
- whitelist: 类似于
blacklist,此规则会将某个字段与白名单进行比较,如果列表中不包含该字词则匹配。(过滤器)- compare_key: 用于与白名单进行比较的字段名称
- ignore_null: 如果为true,则没有
compare_key字段的事件不匹配 - whitelist: 列入白名单值列表
compare_key: "request"
ignore_null: "true"
whitelist:
- /index.html #request字段匹配过滤请求/index.html的请求
- "!file /tmp/blacklist1.txt"
- "!file /tmp/blacklist2.txt"
未成功测试,暂时放弃
change(值改变)
- change: 此规则将监视某个字段并匹配该字段是否更改。该
- compare_key: 要监视更改的字段名称。由于这是一个字符串列表,如果任何一个字段发生更改,将触发报警
- ignore_null: 没有
compare_key字段的事件将不计为已更改 - query_key
- timeframe: 更改之间的最长时间,如果超过该时间将忘记旧值。再次发生改变时将不认为change
频率
- frequency: 给定时间范围内匹配一定数量的事件时。可以基于
query_key计数- num_events: 触发警报事件数
- timeframe: 必须在此时间范围内触发的
num_events数量
type: frequency
index: n-nanjing-console
num_events: 5
timeframe:
minutes: 1
filter:
- term:
status: "404"
最近一分钟内触发五次404的请求才触发报警
spike(尖峰)
用处比较流量突起,温度计
- spike: 前两个
timeframe时间段内的比较- spike_height: 前两个时间段内相差值
- spike_type: up(后一个时间段比前一个时间段高,则触发报警)/down/both
- timeframe:
可选参数: - threshold_ref: 前一个时间段内的下限,如果不达标,则不触发报警
- threshold_cur: 当前时间段内的下限,如果不达标,则不触发报警
flatline(水平线)
水平线以下触发报警
- flatline: 当
threshold一段时间内事件总数低于给定时间时,此规则匹配- threshold: 不触发报警的最小事件数
- timeframe:
可选参数: - use_count_query: 如果为true,elastalert将使用count api轮询elasticsearch,而不是下载所有匹配的文档。如果只关心数据而不关心实际数据。
新值(new_term)
字段的值与30天前的数据是否是新出现,如比较后是新值,则触发报警
- new_term: 此规则匹配新值出现在以前从未见过的字段中。当ElastAlert启动时,它将使用聚合查询来收集字段列表的所有已知术语。
- fields: 要监视的字段
其它选项请参考官方文档
- fields: 要监视的字段
cardinality(基线)
基线上下的值,触发报警
- cardinality: 当一个时间范围内某个字段的唯一值总数高于或低于阈值时,引规则匹配。
- timeframe:
- cardinality_field: 计数基数的字段
- max_cardinality: 如查数据的基数大于此数字,则会触发警报。每个提升基数的新事件都会触发警报
- min_cardinality: 如果数据的基数低于此数据,将触发警报
metric_aggregation(度量数据聚合)
- metric_aggregation: 计算窗口中的度量值高于或低于阈值时,此规则匹配。
- metric_agg_key: 计算度量值的字段。
- metric_agg_type: 在
metric_agg_key字段上执行聚合操作。聚合类型:min,max,avg,sum,cardinality,value_count - max_threshold: 如果计算度量标准值大于此数字,则会触发报警
- min_threshold: 如查计算试题标准值小于此数字,则会触发报警
可选的: - use_run_every_query_size: 默认情况下,度量值是通过buffer_time大小的窗口计算的。如果此参数为true,则规则将run_every用作计算窗口。
percentage_match(百分比)
- percentage_match: 当计算窗口中匹配桶中的文档百分比高于或低于阈值时,此规则匹配。默认情况下,计算窗口为
buffer_time- match_bucket_filter: 定义桶的过滤器,该过滤器就匹配主查询过滤器返回的文档子集
- min_percentage: 如果匹配文档的百分比小于此数字,则会触发警报
- max_percentage: 如果匹配文档的百分比大于此数字,则会触发警报
注: 多个type可以写在一个规则配置文件中,按顺序进行匹配
过滤器
我们在使用的时候要预防报警风暴(在实际使用中我们遇到过可能一分钟成百上千的错误,要是都是发出来,就有问题了)。我们利用下面的一些措施来控制报警风暴:
1 aggregation: 设置一个时长,则该时长内,所有的报警(同一个配置文件内的报警)最终合并在一起发送一次:
2 realert: 设置一个时长,在该时间内,相同 query_key 的报警只发一个
3 exponential_realert: 设置一个时长,必须大于realert 设置,则在realert到exponential_realert之间,每次报警之后,realert 自动翻倍
alter警报
每条规则都可以附加任意数量的警报
email:
- alert_subject: 邮件主题
- alert_subject_args: 主题中可以提供变量,变量值在此定义
- alert_text: 正文
- alert_text_args: 正方变量,可从匹配中获取
- alert_text_type:
- alert_text_only :输出自定义主体
- exclude_fields: 简单输出查询时间段内匹配到几条数据
alert_subject: "Alter {0} occurred at {1} {2}"
alert_subject_args:
- _index
- "@timestamp"
- request
alert_text: "最近三分钟有三次以上404请求"
注意:
格式化程序的参数将从与警报相关的匹配对象中提供。如果规则匹配索引中多个对象,则仅使用第一个匹配来填充格式化程序的参数。如果缺少参数列表中提到的字段,则电子邮件使用
alert_missing_value代替。
smtp配置:
smtp_host: smtp.qq.com
smtp_port: 25
smtp_auth_file: /opt/elastalert/rule_templates/smtp_auth_file.yaml #帐号密码配置在此
from_addr: "xxxx@qq.com"
alert:
- "email"
email:
- "xxxx@qq.com"
$ cat /opt/elastalert/rule_templates/smtp_auth_file.yaml
user: xxxx@qq.com
password: xxxxxxxxxx
command
命令输出,允许执行任意命令并从匹配中传递参数或stdin
alert:
- command
command: ["/bin/send_alert", "--username", "{match[username]}"]
其它更新配置信息,请参考官方文档
示例一:
五分钟内流量总和超过200M就发邮件
es_host: 192.168.20.6
es_port: 9200
run_every:
minutes: 5
name: nanjing_flow
type: metric_aggregation
index: n-xxx-*
buffer_time:
minutes: 5
metric_agg_key: body_bytes_sent
metric_agg_type: sum
max_threshold: 209715200
use_run_every_query_size: true
alert_text_type: alert_text_only
alert_subject: "Alter nanjing 最近五分钟流量超200M,请注意!!!"
alert_text: |
最近五分钟总流量: {0} B
kibana url: http://xxxxx
alert_text_args:
- metric_body_bytes_sent_sum
smtp_host: smtp.qq.com
smtp_port: 25
smtp_auth_file: /opt/elastalert/rule_templates/smtp_auth_file.yaml
from_addr: "xxxx@qq.com"
alert:
- "email"
email:
- "xxxx@qq.com"
示例二
nginx例子,对后端请求超过3秒的发送邮件。需要对特定的接口,比如认证接口过滤(不计算在内)
es_host: 192.168.20.6
es_port: 9200
run_every:
seconds: 30
name: xxx_reponse_time
index: n-xxx-*
type: whitelist
compare_key: "request"
ignore_null: true
whitelist:
- /index.html
- /siteapp/ecsAuthentication/hasAuthentication
type: frequency
num_events: 1
timeframe:
seconds: 30
filter:
- query_string:
query: "upstream_response_time: >3 "
alert_text_type: alert_text_only
alert_subject: "Alter {0} 接口后端处理超过3秒!!!"
alert_subject_args:
- _index
html_table_title: "<h2>This is a heading</h2>"
alert_text: |
timestamp: {0}
request_method: {1}
request: {2}
request_body: {3}
request_time: {4} s
upstream_response_time: {5} s
body_bytes_sent: {6} B
status: {7}
remote_addr: {8}
http_x_forwarded_for: {9}
upstream_addr: {10}
agent: {11}
alert_text_args:
- timestamp
- request_method
- request
- request_body
- request_time
- upstream_response_time
- body_bytes_sent
- status
- remote_addr
- http_x_forwarded_for
- upstream_addr
- agent
smtp_host: smtp.qq.com
smtp_port: 25
smtp_auth_file: /opt/elastalert/rule_templates/smtp_auth_file.yaml
from_addr: "xxx@qq.com"
alert:
- "email"
email:
- "xxxxx@qq.com"
elastalert基本配置说明的更多相关文章
- ElastAlert配置和告警规则各种用法
config.yaml配置说明 #用来加载rule的目录,默认是example_rules rules_folder: example_rules #用来设置定时向elasticsearch发送请求 ...
- NHibernate之映射文件配置说明
NHibernate之映射文件配置说明 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表 ...
- WCF服务器证书配置说明-没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限
WCF服务器证书配置说明 1.创建证书: makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=XXX -sky exchange -pe 说明: -s ...
- log4net一些配置说明
<configuration> <configSections> <section name="log4net" type="System. ...
- elastalert SpikeRule异常告警问题
公司里面用了ELK,所以也就顺其自然的玩起了elastalert, 发现SpikeRule比较符合自己的需求. 但配置后,死活不停的虚假告警,看实际曲线明明没有相差太多,1.4的倍率却总是被打破. 憋 ...
- maven -- 学习笔记(二)之setting.xml配置说明(备忘)
setting.xml配置说明,learn from:http://pengqb.javaeye.com,http://blog.csdn.net/mypop/article/details/6146 ...
- Atitit.mybatis的测试 以及spring与mybatis在本项目中的集成配置说明
Atitit.mybatis的测试 以及spring与mybatis在本项目中的集成配置说明 1.1. Mybatis invoke1 1.2. Spring的数据源配置2 1.3. Mybatis ...
- syslog-ng 学习心得与配置说明
配置说明syslog-ng的主配置文件存放在:/etc/syslog-ng/syslog-ng.conf 一.基础 系统自带版本: 引用 # rpm -qa|grep syslog-ng syslog ...
- keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群
keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群 内网路由都用mac地址 一个mac地址绑定多个ip一个网卡只能一个mac地址,而且mac地址无法改,但 ...
随机推荐
- SQL Server 迁移数据库 (一)导入和导出
今天正好换服务器,记录一下迁移数据库的过程. 以前经常用备份还原法,今天试试‘SQL Server 2016 导入和导出数据’这个看怎么玩. 1. 建数据库结构 1.1 在需要迁移的数据库名字上右击, ...
- 洛谷p3384【模板】树链剖分题解
洛谷p3384 [模板]树链剖分错误记录 首先感谢\(lfd\)在课上调了出来\(Orz\) \(1\).以后少写全局变量 \(2\).线段树递归的时候最好把左右区间一起传 \(3\).写\(dfs\ ...
- AtCoder Grand Contest 035
Preface Atcoder的题都好劲啊,都是我做不动的计数与构造 就当锻炼自己的思维能力了(基本都是bzt教的) A - XOR Circle bzt说这题数据太水了只要判一下所有数异或值是否为\ ...
- [LeetCode] 642. Design Search Autocomplete System 设计搜索自动补全系统
Design a search autocomplete system for a search engine. Users may input a sentence (at least one wo ...
- 原生/CM系列网络叹号问题
网络叹号问题: 原因:某墙屏蔽了谷歌,而原生安卓是利用谷歌的服务器来测试网络是否通畅的 解决方案:修改网络测试的服务器地址 方案来源:https://www.noisyfox.io/android-c ...
- DVWA XSS (DOM) 通关教程
DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容.结构以及样式. DOM型XSS其实是一种特殊类型的反射型XSS,它是 ...
- mysql增加字段,修改字段,增加索引等语句
mysql语句: 1.修改表名: rename table 旧表名 to 新表名; 2.修改字段类型: alter table 表名 modify column 字段名 字段类型(长度) 3.修改字段 ...
- FontForge:免费字库设计软件 附使用教程
引用:http://www.sucaijishi.com/2018/articles_0817/259.html 如何设计一套自己的字库?今天分享一个开源的字库设计软件FontForge, 官方下载: ...
- ASP.NET Core基于微软微服务eShopOnContainer事件总线EventBus的实现
这个EventBus的实现是基于微软微服务https://github.com/dotnet-architecture/eShopOnContainers项目的,我把它从项目中抽离出来,打包成nuge ...
- redis对象存储(适用于订单系统自动更新)
启动:redis-server.exe redis.windows.conf连接:redis-cli.exe -h 127.0.0.1 -p 6379 #插入取消的订单列表与时间: redis 127 ...