elastalert SpikeRule异常告警问题
公司里面用了ELK,所以也就顺其自然的玩起了elastalert,
发现SpikeRule比较符合自己的需求。
但配置后,死活不停的虚假告警,看实际曲线明明没有相差太多,1.4的倍率却总是被打破。
憋了好久,实在没辙,只好自己想办法理解源码,
class SpikeRule(RuleType):
""" A rule that uses two sliding windows to compare relative event frequency. """
required_options = frozenset(['timeframe', 'spike_height', 'spike_type']) def __init__(self, *args):
super(SpikeRule, self).__init__(*args)
self.timeframe = self.rules['timeframe'] self.ref_windows = {}
self.cur_windows = {}
SpikeRule中用到了ref_windows cur_windows,当启动Rule的时候,会首先等到ref_windows里面的数据都填充满,
才开始考虑和cur_windows做比对,并开始产生告警。
诡异的是,当timeframe和run_every的时间区间非常接近的时候,比如,都是1分钟,
偶尔在时间非常紧凑的时候,cur和ref两个窗口的实际数据长度会不一致,导致统计函数def find_matches(self, ref, cur):计算出的值不准。
并最终产生虚假告警。
简单处理办法,时间区间拉长些,比如当前我的timeframe设置1分钟,但是run_every: seconds: 10 。
实际更详细的原因和代码有待以后继续追踪。。
elastalert SpikeRule异常告警问题的更多相关文章
- ElastAlert监控日志告警Web攻击行为
由于公司需要监控web攻击行为,而因某些原因搭不了waf,才不得不用ElastAlert进行告警,此为前提. 一.ELK安装 Elasticsearch 是一个分布式.可扩展.实时的搜索与数据分析引擎 ...
- SLS机器学习最佳实战:日志聚类+异常告警
1.手中的锤子都有啥? 围绕日志,挖掘其中更大价值,一直是我们团队所关注.在原有日志实时查询基础上,今年SLS在DevOps领域完善了如下功能: 上下文查询 实时Tail和智能聚类,以提高问题调查效率 ...
- elastalert 配置post告警方式(备忘)
最近在做把elk告警日志发送到kinesis 流,供后续数据分析处理使用........ 基于尽量不修改elastalert ,把修改工作放到接收端服务的原则.计划把elk的告警数据通过远程api ...
- 基于Elastalert的安全告警剖析
https://www.freebuf.com/sectool/164591.html *本文作者:bigface,本文属 FreeBuf 原创奖励计划,未经许可禁止转载. elastalert 是一 ...
- ElastAlert配置和告警规则各种用法
config.yaml配置说明 #用来加载rule的目录,默认是example_rules rules_folder: example_rules #用来设置定时向elasticsearch发送请求 ...
- ElastAlert监控日志告警Web攻击行为---tomcat和nginx日志json格式
一.ELK安装 1.2 elk配置 logstash自定义配置文件,取名为filebeat_log.conf : input { beats { port => 5044 client_inac ...
- 基于SkyWalking的分布式跟踪系统 - 异常告警
通过前面2篇文章我们搭建了SW的基础环境,监控了微服务,能了解所有服务的运行情况.但是当出现服务响应慢,接口耗时严重时我们需要立即定位到问题,这就需要我们今天的主角--监控告警,同时此篇也是SW系列的 ...
- zabbix脚本获取web status code,异常告警
python代码,需要安装requests库 1 #!/usr/bin/env python 2 #-*-coding:utf-8-*- 3 import requests,os,sys 4 url ...
- 【ELK】elastalert 日志告警
一.环境 系统:centos7 elk 版本:7.6.2 1.1 ElastAlert 工作原理 周期性的查询Elastsearch并且将数据传递给规则类型,规则类型定义了需要查询哪些数据. 当一个规 ...
随机推荐
- PAT (Advanced Level) Practise:1001. A+B Format
[题目链接] Calculate a + b and output the sum in standard format -- that is, the digits must be separate ...
- 项目里总结出来的log4j模板
项目日志模板:http://www.cnblogs.com/baibaluo/archive/2011/06/03/2072091.html#commentform #全局设置 log4j.rootL ...
- iOS测试常见崩溃
什么是崩溃日志,从哪里能得它? iOS设备上的应用闪退时,操作系统会生成一个崩溃报告,也叫崩溃日志,保存在设备上.崩溃日志上有很多有用的信息,包括应用是什么情况下闪退的.通常,上面有每个正在执行线程的 ...
- Angularjs 服务注册
$injector: (When you request a service, the $injector is responsible for finding the correct service ...
- node.js Stream Buffer FsPromise
Stream: 类似这样:a.pipe(b).pipe(c); 我想写一个b.所以: var rs=new (require('stream').Readable)(); var ws=new (re ...
- 《C与指针》第十二章练习
本章例程 //12.3 #include <stdio.h> #include <stdlib.h> typedef struct NODE{ struct NODE *lin ...
- OS实验报告——作业调度模拟程序
一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行, ...
- Python3 之 import 和 当前目录
环境: Python-3.4.3 Web.py-0.37 安装 web.py 的时候,提示 ImportError: No module named 'utils' 看看源码,setup.py,有这么 ...
- DEX 方法超过64K限制和gradle编译OOM问题解决
如果你是一个android开发者,你至少听说过的Dalvik的蛋疼的64K方法限制.概括地说,在一个DEX文件,你可以调用很多的方法,但你只能调用它们最前面的65,536个 ,因为这是在方法调用集合中 ...
- nginx入门篇----安装、部署、升级
1.安装前准备工作下载nginx安装包依赖包:gcc pcre pcre-level zlib zlib-devel openssl openss-level在线依赖包安装命令:yum -y ins ...