记一次在工作中发现的Esper引擎底层逻辑问题

news2024/11/26 17:39:17

一、问题描述

在最近工作过程中本人遇到客户反馈一个问题:在某SOC平台关联分析规则新建的规则语句能查询到相关日志,但无法触发规则告警。
规则语句大致为:
数据源 = "IPS" and not 目的地址 belong 白名单

客户需求是对于IPS告警日志里目的地址不为白名单(即便目的地址为空)的日志产生规则告警,大致一看没有问题,但是深入分析发现这涉及到了一个Esper引擎底层的逻辑问题。

下面先来介绍一下所使用的Esper引擎:

Esper简介

Esper是一个高性能的复杂事件处理(CEP)和事件流处理(ESP)引擎,它允许用户从广泛的数据源实时处理和分析高频率的事件流。Esper使用一种声明式的查询语言,非常类似于SQL,但针对实时数据流进行了优化。这使得Esper成为在金融服务、网络监控、智能传感器分析、电信以及其他需要快速、实时数据分析的领域的一个理想选择。

Esper的优点

实时性:Esper能够在事件发生的同时进行处理和分析,支持低延迟的实时数据处理需求。

高性能:针对处理大量并发事件流进行了优化,能够支持高吞吐量的事件处理。

灵活性:提供了类SQL的Esper查询语言(EQL),让用户能以声明式的方式定义复杂的事件模式和规则。

可扩展性:能够处理从数十到数百万事件/秒的数据流,适用于不同规模的应用场景。

易于集成:提供了对多种编程语言(如Java、.NET)的支持,可以轻松地集成到现有的应用程序中。

Esper的缺点

学习曲线:尽管EQL类似于SQL,但要充分利用Esper的高级特性,用户仍需花时间学习其语法和概念。

资源消耗:对于非常大的数据集或极其复杂的事件处理逻辑,Esper可能会消耗大量内存和CPU资源。

调试和维护:复杂事件处理逻辑可能使得调试和维护变得困难,尤其是在没有足够日志和监控工具的情况下。


二、问题分析

经过深入分析发现,规则未告警问题在于Esper对于空值的处理上。观察日志发现,日志中的目的地址均为空值,而规则语句里并未考虑到空值的影响,导致无法实现对预期日志产生告警。

逻辑分析

首先看下Esper底层逻辑图
在这里插入图片描述

规则语句:
数据源 = "IPS" and not 目的地址 belong 白名单
客户预期只要目的地址不为白名单就产生告警,空值显然不包含在白名单里,所以也要产生告警

1.当目的地址存在时:
前面为ture,后面为ture 或者false,可以正常产生告警
2.当目的地址不存在时:
前面为ture是没有问题的,但后面由于目的地址为空,在Esper里是unknown,此时语句变成了
ture and not unknown
也就是
ture and unknown
此时结果是unknown,也就不会产生告警。

结论

通过对此事件进行引申发现,凡是在Esper引擎中使用否定逻辑如not belong 、!= 等都要考虑空值所带来的影响,需要根据实际需求来增加字段值不存在的判定来满足对空值也产生告警的需求。


三、解决方案

后续通过优化规则为:
数据源 = "IPS" and ( not 目的地址 belong 白名单 or 目的地址 not_exist)
满足客户对于目的地址为空产生告警的需求。


参考链接

https://blog.csdn.net/rlnLo2pNEfx9c/article/details/137190513
http://www.espertech.com/


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arduino复制的方法快速搭建ESP32低版本2.0.10开发环境

Arduino复制的方法快速搭建ESP32低版本2.0.10开发环境 1.概述 这篇文章介绍如何使用复制安装包的方式快速搭建好ESP32开发环境,而且是指定的2.0.10低版本。 2.搭建开发环境 1.下载安装包 首先在百度网盘下载ESP32安装包 通过百度网盘分享的文件:esp…

Biomamba教程01-绪论

目录 1、课程目录 2、单细胞技术背景 3、单细胞数据挖掘平台(不用代码) 1、课程目录 重点是寻找差异基因,进一步用KEGG、GO等进行疾病相关分析 2、单细胞技术背景 3、单细胞数据挖掘平台(不用代码) loupe.10xgenom…

会话跟踪方案:Cookie Session Token

什么是会话技术? Cookie 以登录为例,用户在浏览器中将账号密码输入并勾选自动登录,浏览器发送请求,请求头中设置Cookie:userName:张三 ,password:1234aa ,若登录成功,服务器将这个cookie保存…

「Python程序设计」基础语法:程序的注释、行与缩进

在我们编写程序代码的过程中,加入程序的注释,是一个很重要的过程。特别是对于软件工程来说,加入程序的注释,可以提高程序代码的可读性,让程序的维护难度降低。 程序注释的种类 首先要知道的是,程序的注释…

为什么要用云手机进行海外社交营销

随着科技的飞速发展,云手机这一新兴技术正逐渐在海外社交营销中占据一席之地。云手机的灵活性、成本效益和全球化特点使其成为海外社交营销中不可或缺的工具。本文将深入剖析云手机的优势,并探讨其在海外社交营销中的重要作用。 首先,云手机的…

Admin.NET源码学习(3:LazyCaptcha使用浅析)

Admin.NET项目前端登录页面的验证码图片默认使用动态图,且图形内容为阿拉伯数字运算(如下图所示),用户输入正确的计算结果才能正常登录。项目采用LazyCaptcha模块生成验证码及动态图。   在Admin.NET.Core项目中添加了Lazy.Cap…

TOP刊录用接不接?初审仅1天,国人还友好,质量在线,3个月录用,光环直接拉满

【SciencePub学术】本期,给大家介绍的是1本工程机械类的SCI,位于JCR1区中科院1区TOP,影响因子4.5分。 本刊在机械设计和制造领域认可度极高,近年来影响因子逐步上升,这和稿件质量的大幅度提升有很大的关系。 MMT期刊发…

考驾照需要多长时间?你考驾照用了多长时间?

正常考驾照时长 有人问橙子:一个月可以拿到驾照吗? 答:理论上,一个月能拿到驾驶证。按照《机动车驾驶证申领和使用规定》显示,通过科目一10天后即可预约科目二,而通过科目二后同样需要10天后才能预约科目…

GitHub新手使用指南

第一节 GitHub新手使用指南 一、打包下载源码及资源 下载源码及资源不需要登录。 二、查看作者主页 第1步:点击作者头像 第2步:查看作者的项目 第3步:查看作者项目的基本信息 第4步:搜索项目 第5步:把代码复制到自…

Leetcode-高频面试题-143.重排链表

解法都在代码里,不懂就留言或者私信 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val …

Ajax基础案例

接口文档 欢迎使用 - AJAX阶段 地区查询 图解 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

《黑神话:悟空》发售后快手游戏笔记本电脑GMV日环比增长40%

一、美联储9月降息预期升温 昨夜美股三大股指在震荡中收涨&#xff0c;市场情绪受到美联储7月会议纪要提振。纪要显示&#xff0c;美联储官员普遍倾向于9月降息&#xff0c;多位官员认为当前利率水平已对经济构成限制。此消息推动美股上涨&#xff0c;并带动金价创新高&#xf…

线程互斥锁

互斥锁 类型 pthread_mutex_t 互斥锁基本操作 函数描述[[pthread_mutex_initpthread_mutex_init]]初始化互斥锁[[pthread_mutex_lockpthread_mutex_lock]]阻塞申请互斥锁[[pthread_mutex_unlockpthread_mutex_unlock]]释放互斥锁[[pthread_mutex_trylockpthread_mutex_tryl…

全网最全PMP备考攻略(附答题技巧)

01为什么要考PMP 大家都是成年人&#xff0c;提出问题的目的是为了解决问题。所以问为什么&#xff0c;这个出发点就是错的。 你要知道&#xff0c;正确的知识必然是有用处的。 还是有人会觉得从小学到大学甚至研究生毕业&#xff0c;你学的东西都没有用武之地&#xff1f; …

写论文找不到灵感?ChatGPT能提供的一些帮助

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在学术写作过程中&#xff0c;许多读者常常会面临一个问题——找不到灵感。面对庞大的文献和复杂的研究方向&#xff0c;往往感到无从下手。随着人工智能技术的发展&#xff0c;像ChatG…

滚雪球学Java(88):连接无限,资源有度:JavaSE数据库连接池深度解析,有两下子!

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE啦&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好习惯&#…

“探索消费增值模式:绿色消费与积分回馈的双重盛宴“

大家好&#xff0c;我是吴军&#xff0c;来自一家知名的软件开发企业&#xff0c;担任产品经理的角色。今天&#xff0c;我想和大家探讨一个新兴的商业模式——消费增值模式&#xff0c;它在市场上正逐渐崭露头角。 近年来&#xff0c;随着环保和可持续发展日益受到消费者的关注…

HT3S-ECS-MTP网关支持与倍福C6015控制器PLC环网通讯

倍福控制器C6015通过HT3S-ECS-MTP网关进行ETHERCAT环网通讯 北京中科易联科技有限公司 1、概述 本文描述倍福C6015控制器与网关HT3S-ECS-MTP测试EtherCAT环网&#xff0c;并进行数据交换的组态过程及运行结果。使用到的软硬件列表如下&#xff1a; 1台倍福C6015控制器, 使用…

【Qt笔记】Qt界面显示时间

目录 一、前言 二、基本概念 三、代码实现 1. 获取本地时间&#xff0c;并将其转换成自己想要的格式 2.创建一个QLabel控件用于显示时间字符串 3.创建QTimer定时器更新时间 四、优化 1. 格式优化 1.1 初始化 1.2 获取星期 1.3 更改格式 1.4 定时器超时函数 1.5 …

泛微基于华为仓颉编程语言开发公文交换系统 推动办公软件全面国产化

2024年6月21日下午&#xff0c;华为终端BG软件部总裁龚体先生在华为开发者大会主题演讲《鸿蒙原生应用&#xff0c;全新出发&#xff01;》中向全球开发者介绍了华为自研仓颉编程语言&#xff0c;并发布了HarmonyOS NEXT仓颉语言开发者预览版。这是华为首次公开发布仓颉编程语言…