日志监控思路分享,只监控日志内容,不存储

有一个这样的需求,就是实时监控日志文件的内容,不需要存储,仅当某行日志内容触发某个规则时调用一段业务逻辑就行了。比如用户触发限流规则,就将其封禁并发送钉钉通知到运维群。

看到这个需求首先想到的就是日志采集工具,如:FileBeat、Flume、Logstash、Vector。随即对这些采集工具进行了对比了解,对于当下需求都显得太过重量级,也就是说杀鸡焉用牛刀。

那么就尝试自己设计一个监控程序吧。

首先需要一个功能来实时读取日志文件,类似于 Linux 的 tail -n 1 xxx.log,可以将其称为 watcher 模块。watcher 模块读取的数据需要进行规则匹配。最简单的做法就是对字符串进行 contains 判断,类似于 |grep rule,将这个功能称为 rules 模块。

接着就是创建项目和做技术选型了。

从前面知道之所以要设计一个自己的监控程序,就是要做到轻量级,那么肯定要支持 native 部署,不能有运行时依赖。再考虑到要支持可扩展性(多规则、规则自定义和动态业务代码执行)。基于这两点考虑 Java 肯定不适合干这事了,Java 虽然有规则引擎如 drools 或者直接用 Groovy 也可以做的可扩展性,但 Java 对运行时依赖太重,即使用 GraalVM 打成 native 包,也不一定就好用。

因此,笔者选择使用 Rust 来开发做 watcher 模块开发,并集成 Lua 引擎到项目中,使用 Lua 脚本来提供可扩展性。Rust 高性能和可靠性非常适合来做这种非业务型系统开发,而 Lua 引擎极小的体积与 Rust 结合后,又为其带来了动态性。

那么就衍生出了以下结构。

watcher 实时采集日志,通过回调 scripts 中的 Lua rules 触发业务逻辑。scripts 依赖的公共类 Lua 函数和第三方库放在 lib 中。遵循需求,最终结构如下图。

未来要增加更多的业务规则,只要编写新的 Lua 脚本放到 scripts 目录中就可以了

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

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

相关文章

在 CentOS 7 上安装 Redis

在 CentOS 7 上安装 Redis 可以通过几个简单的步骤完成。以下是一种常用的方法: 更新系统: 在安装任何新软件之前,最好先更新系统的软件包列表,以确保安装的软件版本是最新的。可以使用以下命令来更新: sudo yum up…

零售EDI:Princess Auto EDI对接

Princess Auto 是一家加拿大零售连锁店,专门从事农场、工业、车库、液压和剩余物品的销售。 Princess Auto 总部位于马尼托巴省温尼伯,截至 2024 年 1 月在 10 个省份拥有并经营 55 家商店以及三个配送中心。各种商品均以其“Powerfist”和“Pro.Point”…

HTML5 有哪些新特性

HTML5 是 HTML 标准的一个重大更新&#xff0c;它引入了许多新特性和改进&#xff0c;旨在提高 Web 应用的性能、互交性和多媒体支持。以下是 HTML5 的一些关键新特性&#xff1a; 1. 语义化标签 新增了一系列语义化标签&#xff0c;如 <article>、<section>、&l…

Node.js 入门

一、什么是 Node.js&#xff1f; 定义&#xff1a; 作用&#xff1a;使用 Node.js 编写服务器端程序 编写数据接口&#xff0c;提供网页资源浏览功能等等 前端工程化&#xff1a;为后续学习 Vue 和 React 等框架做铺垫 二、什么是前端工程化&#xff1f; 前端工程化&#xf…

红米手机怎么安装charles证书(Redmi K70)

我们到知道通过charles抓Https的包需要给手机安装charles证书才行&#xff0c;正常来说设置代理后&#xff0c;在手机系统浏览器中输入chls.pro/ssl就会下载安装证书。但是&#xff0c;在红米手机上就是下载不下来。 通过如下方法配置&#xff1a; 手机wifi网络配置代理手机浏…

学浪视频怎么下载到手机相册

学浪视频如何下载到手机相册&#xff0c;很简单&#xff0c;首先将学浪课程下载到电脑&#xff0c;然后再由电脑传输到手机中&#xff0c;这样你就可以在手机相册里面观看。 但是将学浪课程下载到本地是不可以使用录屏的方式&#xff0c;所以这里要借助一款工具&#xff0c;小…

【Java】线程邮局的三种用工方式对比

1. 继承Thread类 想象邮局有一支专门的邮差团队&#xff0c;每个邮差&#xff08;继承Thread类的子类&#xff09;都有自己的送信路线&#xff08;run方法&#xff09;。他们直接参与邮件的分发工作。 优点&#xff1a; 专业性&#xff1a;每个邮差都经过专业培训&#xff0…

自动化测试-web(弹窗/滚动条/鼠标/等待等操作)

一、弹窗 为什么要处理弹窗&#xff1f; 如果页面操作过程中&#xff0c;有弹窗出现&#xff0c;不处理&#xff0c;无法继续对页面操作。 弹窗类型&#xff1a; js原生弹窗&#xff1a; 警告框、输入框、提示框&#xff0c;这些必须处理 如何处理&#xff1a; 1&#xff0…

Node.js cnpm的安装

百度搜索 cnpm,进入npmmirror 镜像站https://npmmirror.com/ cmd窗口输入 npm install -g cnpm --registryhttps://registry.npmmirror.com

dyld: Library not loaded: @rpath/SDK.framework/SDK错误问题

关于导入三方SDK.framework之后&#xff0c;启动崩溃之后如下报错的解决方式: 截屏2020-10-14 上午9.55.09.png 在正常导入framework之后&#xff0c;做如图示操作&#xff0c; image.png 以上步骤之后&#xff0c;重新启动运行xcode&#xff0c;即可成功运行。

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果 一、简单介绍 二、简单指定视频某片段快放效果实现原理 三、简单指定视频某…

[leetcode]remove-duplicates-from-sorted-list

. - 力扣&#xff08;LeetCode&#xff09; 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入&…

安全风险攻击面管理如何提升企业网络弹性?

从研究人员近些年的调查结果来看&#xff0c;威胁攻击者目前非常善于识别和利用最具有成本效益的网络入侵方法&#xff0c;这就凸显出了企业实施资产识别并了解其资产与整个资产相关的安全态势的迫切需要。 目前来看&#xff0c;为了在如此复杂的网络环境中受到最小程度上的网络…

Unity Pro 2019 for Mac:专业级游戏引擎,助力创意无限延伸!

Unity Pro 2019是一款功能强大的游戏开发引擎&#xff0c;其特点主要体现在以下几个方面&#xff1a; 强大的渲染技术&#xff1a;Unity Pro 2019采用了新的渲染技术&#xff0c;包括脚本化渲染流水线&#xff0c;能够轻松自定义渲染管线&#xff0c;通过C#代码和材料材质&…

Asp.net 使用了 bootstrap,发布时样式丢失了

究其原因其实是css文件压缩了以后&#xff0c;页面不能识别了 其实一般只需要用到 bootstrap.css 和 site.css 修改 Global.asax void Application_Start(object sender, EventArgs e){// 默认情况下&#xff0c;启用优化&#xff0c;将捆绑和最小化脚本和样式文件// 为了在…

【iOS ARKit】Web 网页中嵌入 AR Quick Look

在支持 ARKit 的设备上&#xff0c;iOS 12 及以上版本系统中的 Safari浏览器支持 AR Quick Look&#xff0c; 因此可以通过浏览器直接使用3D/AR 的方式展示 Web 页面中的模型文件&#xff0c;目前 Web 版本的AR Quick Look 支持USDZ 格式文件。苹果公司有一个自建的3D模型示例库…

uniapp 上传视频到阿里云之后回显视频获取视频封面

uniapp 上传视频到阿里云之后回显视频获取视频封面 官网的解决方案 1.initial-time Number 指定视频初始播放位置&#xff0c;单位为秒&#xff08;s&#xff09;。 没什么卵用 2.使用 uni.createVideoContext(“myVideo”, this).seek(number)。 没什么卵用 <video :id&quo…

云计算重要概念之:虚拟机、网卡、交换机、路由器、防火墙

一、虚拟机 (Virtual Machine, VM) 1.主流的虚拟化软件&#xff1a; 虚拟化软件通过在单个物理硬件上创建和管理多个虚拟环境&#xff08;虚拟机&#xff09;&#xff0c;实现资源的高效利用、灵活部署、隔离安全以及便捷管理&#xff0c;是构建云计算和现代化数据中心的核心…

C语言面试题之返回倒数第 k 个节点

返回倒数第 k 个节点 实例要求 1、实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点&#xff1b;2、返回该节点的值&#xff1b; 示例&#xff1a;输入&#xff1a; 1->2->3->4->5 和 k 2 输出&#xff1a; 4 说明&#xff1a;给定的 k 保证是有效的。实…

【机器学习300问】65、为什么Sigmoid和Tanh激活函数会导致梯度消失?

一、梯度消失现象 当神经网络的输入值较大或较小时&#xff0c;其导数&#xff08;梯度&#xff09;都会接近于0。在反向传播过程中&#xff0c;这些微小的梯度经过多层网络逐层传递时&#xff0c;会不断被乘以权重矩阵&#xff08;权重通常小于1&#xff09;&#xff0c;进一步…