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 。

实际更详细的原因和代码有待以后继续追踪。。

时间: 2024-08-29 01:06:59

elastalert SpikeRule异常告警问题的相关文章

基于SkyWalking的分布式跟踪系统 - 异常告警

通过前面2篇文章我们搭建了SW的基础环境,监控了微服务,能了解所有服务的运行情况.但是当出现服务响应慢,接口耗时严重时我们需要立即定位到问题,这就需要我们今天的主角--监控告警,同时此篇也是SW系列的最后一篇. UI参数 首先我们认识一下SW DashBoard上的几个关键参数,如下图所示 告警配置 告警流程 skywalking发送告警的基本原理是每隔一段时间轮询skywalking-collector收集到的链路追踪的数据,再根据所配置的告警规则(如服务响应时间.服务响应时间百分比)等,如果

(转载)应该对什么告警

告警的本质 没有多少系统的告警是设计得当的.良好的告警设计是一项非常困难的工作.如何知道你收到的告警是糟糕的?多少次你收到了告警之后,立即就关掉了的?是不是成天被这些然而并没有什么卵用的东西给淹没?最常见的告警设置:cpu使用率超过90%,然后告警.这种设置在大部分场合下是没有办法提供高质量的告警的. 高质量的告警应该是这样的:每次收到之后你可以立即评估影响的范围,并且每一个告警需要你做出分级响应.所谓每个告警都应该是,actionable的. 告警的实质可以用下图表明: 服务器的设计应该是以这

VCS引起的oracle数据库异常重启一例

1. 环境描述 操作系统版本:SUSE Linux Enterprise Server 10 sp2 (x86_64) 数据库版本:Oracle 11.1.0.7.16 VCS版本:5.1 blog地址:http://blog.csdn.net/hw_libo/article/details/41171561 2. 问题现象及分析 凌晨3:46左右,手机短信收到数据库异常告警. (1)查看数据库alert日志 Sun Nov 16 03:46:51 2014 Stopping backgroun

0023-HOSTS配置问题导致集群异常故障分析

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.问题现象 Hadoop集群HDFS.YARN.Hive等服务出现异常告警 重启集群异常告警任然存在大量告警 Cluster 1 HDFS 可用空间抑制... NameNode 运行状况抑制... HDFS 金丝雀抑制... DataNode (ip-172-31-10-118) 日志文件 NameNode 连接抑制... DataNode (ip-172-31-5-190) 日志文件 NameNode 连接抑制... DataN

线上服务CPU100%问题快速定位实战--转

来自微信公众号 架构师之路 功能问题,通过日志,单步调试相对比较好定位. 性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底. 58到家架构部,运维部,58速运技术部联合进行了一次线上服务CPU问题排查实战演练,同学们反馈有收获,特将实战演练的试题和答案公布出来,希望对大家也有帮助. 题目 某服务器上部署了若干tomcat实例,即若干垂直切分的Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警. 问:如何定位是哪个服务进程导致CPU

魅族容器云平台自动化运维实践

魅族容器云平台主要是基于 k8s 的技术.将从以下六个方面介绍魅族容器云的实践过程,分别是基本介绍.k8s 集群.容器网络.外部访问4/7层负载均衡.监控/告警/日志.业务发布/镜像/多机房. 1.基本介绍 魅族云平台的定位是私有云平台,主要是用于支撑在线业务,用以替换传统的虚拟化方式.目前现状是2017年完成全国三个数据中心的建设,年内完成90%业务的迁移. 我们是以小团队紧跟 k8s 社区步伐,快速迭代.低成本试错的方式来构建我们的平台的.同时,针对一些我们遇到的问题,做一些局部创新,在保证

如何用 redis 造一把分布式锁

基本概念 锁 wiki:In computer science, a lock or mutex (from mutual exclusion) is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. A lock is designed to enforce a mutual e

华为FusionCompute虚拟化平台升级操作文档

华为FusionCompute虚拟化平台升级操作文档 一.问题分析与解决思路   问题描述:在一段时间内,FC平台中的多台CNA主机偶发性自动重启,随即导致主机中部署的虚拟机自动重启,严重影响线上业务. 解决方案:经研究,基本上排除了是服务器硬件问题导致的可能性,怀疑是FC虚拟化平台的问题.于是,收集了自动重启主机中的日志,提供给华为工程师分析,得出以下结论. [日志收集方法] (1)使用putty工具登录虚拟机所在的主机(以"gandalf"用户,通过管理IP地址登录,默认密码为[e

全网备份

1.1全网备份项目介绍说明: 将全网架构中所有服务器上重要的数据进行汇总备份保存 自动化:数据信息的自动备份 规范化:避免备份数据出错 1.2  全网备份项目实施过程 ①. 规划定义好备份服务器 a 部署rsync备份服务(采用rsync守护进程方式) b 编写脚本文件管理备份数据信息 c 编写定时任务执行脚本管理数据(难点) ②. 确认验证好架构服务器 a 验证rsync备份服务 b 编写脚本文件统一备份数据信息(难点) c 编写定时任务执行脚本备份数据 1.3 全网备份项目rsync守护进程