简易告警去重设计

背景

开发环境、生成环境,通常会有很多种告警,用来及时发现问题

粗暴的处理告警,通常会导致刷屏,进而麻木,最后起不到告警的作用

这里设计一个简单的去重机制

实现方案

方案一:把告警信息打到 alarm 服,让 alarm 服去重处理
方案二:每个服通过 Redis 共享 alarm 信息,自己处理去重

因为 alarm 去重逻辑很简单,方案一显得稍重,需要额外维护服务

因此采用方案二

Redis 数据结构设计

对于每类告警日志,设计以下 key-value :

内容格式说明
keyalarm_{{yyyyMMdd}}_{{文件名}} _{{行号}}过期时间:当日剩余秒数
value正数值:当日告警次数
cmdINCRBY

使用 Redis INCRBY 命令有以下作用:

  1. 多进程避免竞态
  2. 根据返回值可以知道是否是当日首次告警
    • 进而处理首次逻辑:告警;设置过期时间
  3. 可以批次维护告警次数值,避免频繁访问 Redis

告警流程

  1. 触发需要告警时,执行: n=INCRBY alarm_{{yyyyMMdd}}_{{文件名}} _{{行号}} addNum
  2. 如果 n == addNum ,则执行告警,并设置 key 的过期时间
  3. 单日累计次数告警。如 1000 次,告警下:{{文件名}}:{{行号}} 当日累计 {{次数}} 次
    1. 可以根据(n-addNum)/1000 + 1 = n/1000,判断是否需要告警单日累计次数

编码优化:

  • 执行INCRBY命令期间,若又来告警:
    • 本地计数
    • 退让算法,计算下次 INCRBY 时间

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

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

相关文章

LeetCode467. Unique Substrings in Wraparound String——动态规划

文章目录 一、题目二、题解 一、题目 We define the string base to be the infinite wraparound string of “abcdefghijklmnopqrstuvwxyz”, so base will look like this: “…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd…”. Given a string s, return …

【网站项目】031网络游戏公司官方平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

网络编程-Socket套接字

目录 1.网络编程 1.1定义与图解 1.2基本概念 (1)发送端和接收端 (2)请求和响应 (3)客户端和服务端 2.Socket套接字 2.1定义 2.2分类 (1)流套接字 (2&#xff…

攻防世界——re2-cpp-is-awesome

64位 我先用虚拟机跑了一下这个程序,结果输出一串字符串flag ——没用 IDA打开后 F5也没有什么可看的 那我们就F12查看字符串找可疑信息 这里一下就看见了 __int64 __fastcall main(int a1, char **a2, char **a3) {char *v3; // rbx__int64 v4; // rax__int64 v…

知识图谱与图神经网络融合:构建智能应用的新前沿

目录 前言1 知识图谱表示学习1.1 典型模型1.2 下游任务 2 图神经网络与知识图谱表示学习2.1 Compgcn:合成图卷积模型2.2 知识图谱嵌入在归纳设置下的推进 3 图神经网络与知识图谱构建3.1 关系抽取的进阶应用3.2 结构信息补全与知识图谱的完整性 4 图神经网络与知识图…

数据分类分级

一段时间没写文章了,最近做政府数据治理方面的项目,数据治理一个重要的内容是数据安全,会涉及数据的分类分级,是数据治理的基础。 随着“十四五”规划推行,数据要素概念与意识全面铺开,国家、政府机构、企业…

python用yaml装参数并支持命令行修改

效果: 将实验用的参数写入 yaml 文件,而不是全部用 argparse 传,否则命令会很长;同时支持在命令行临时加、改一些参数,避免事必要在 yaml 中改参数,比较灵活(如 grid-search 时遍历不同的 loss…

JavaScript综合练习4

JavaScript 综合练习 4 1. 案例演示 2. 代码实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title&…

深入探索MySQL 8:隐藏索引与降序索引的新特性

随着技术的不断进步&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;也在不断地更新和升级&#xff0c;以满足日益增长的数据处理需求。作为最受欢迎的开源关系型数据库之一&#xff0c;MySQL的每个新版本都会引入一系列新特性和改进&#xff0c;旨在提高性能、增强安全…

单片机的认识

单片机的定义 先简单理解为&#xff1a; 在一片集成电路芯片上集成了微处理器&#xff08;CPU &#xff09;存储器&#xff08;ROM和RAM&#xff09;、I/O 接口电路&#xff0c;构成单芯片微型计算机&#xff0c;即为单片机。 把组成微型计算机的控制器、运算器、存储器、输…

MATLAB实现随机森林回归算法

随机森林回归是一种基于集成学习的机器学习算法&#xff0c;它通过组合多个决策树来进行回归任务。随机森林的基本思想是通过构建多个决策树&#xff0c;并将它们的预测结果进行平均或投票来提高模型的准确性和鲁棒性。 以下是随机森林回归的主要特点和步骤&#xff1a; 决策树…

“SharpDocx” C#项目中用于创建 Word 文档的轻量级模板引擎

简介&#xff1a; SharpDocx是一个轻量级的模板引擎&#xff0c;用于创建Word文档。它允许开发者基于视图生成Word文档&#xff0c;这个视图本身就是一个Word文档&#xff0c;可以根据需要设置简单或复杂的布局。 以下是一些主要特点&#xff1a; 模板引擎类似Razor&#xf…

jmeter-问题二:JMeter进行文件上传时,常用的几种MIME类型

以下是一些常用的MIME类型及其对应的文件扩展名&#xff1a; 文本类型: text/plain: 通常用于纯文本文件&#xff0c;如 .txt 文件。 text/html: 用于HTML文档&#xff0c;即 .html 文件。 application/msword: Microsoft Word文档&#xff0c;即 .doc 和 .docx 文件。 图像…

【大厂AI课学习笔记】【1.5 AI技术领域】(8)文本分类

8,9,10&#xff0c;将分别讨论自然语言处理领域的3个重要场景。 自然语言处理&#xff0c;Natual Language Processing&#xff0c;NLP&#xff0c;包括自然语言识别和自然语言生成。 用途是从非结构化的文本数据中&#xff0c;发掘洞见&#xff0c;并访问这些信息&#xff0…

哈工大团队顶刊发布!由单偏心电机驱动的爬行机器人实现多方向运动传递

单电机也能驱动平面内前进和转弯运动&#xff1f;没错&#xff0c;图中的机器人名叫GASR&#xff0c;仅由四个零件组成&#xff0c;分别是偏心电机、电池、电路板、聚酰亚胺薄片&#xff0c;它可以灵活自如地实现前进、转弯等移动。其中的核心驱动器——纽扣式偏心转子电机产自…

[SAP] ABAP设置非系统关键字代码提示功能

在事务码SE38(ABAP编辑器)屏幕右下角&#xff0c;点击【Options选项】图标 勾选【代码完成】|【建议文本中的非关键字】&#xff0c;并点击【保存】按钮 在下面的程序代码中&#xff0c;当我需要输入在11行的位置输入非关键字lv_str的时候&#xff0c;会有非关键字代码提示的功…

django中实现数据迁移

在Django中&#xff0c;数据迁移&#xff08;data migrations&#xff09;通常指的是将模型&#xff08;models&#xff09;中的数据从一个状态迁移到另一个状态。这可以涉及很多操作&#xff0c;比如添加新字段、删除字段、更新字段的数据类型&#xff0c;或者更改表之间的关系…

【java】Hibernate访问数据库

一、Hibernate访问数据库案例 Hibernate 是一个在 Java 社区广泛使用的对象关系映射&#xff08;ORM&#xff09;工具。它简化了 Java 应用程序中数据库操作的复杂性&#xff0c;并提供了一个框架&#xff0c;用于将对象模型数据映射到传统的关系型数据库。下面是一个简单的使…

JAVA设计模式之模版方法模式详解

模板方法模式 1 模板方法模式介绍 模板方法模式(template method pattern)原始定义是&#xff1a;在操作中定义算法的框架&#xff0c;将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。 模板方法中的算法可以理解为广义上的业务逻辑…

【canvas】实现画布橡皮擦功能、并解决擦除不连贯问题;

简单介绍橡皮擦功能思路&#xff0c;代码demo自己看看就好了&#xff0c;一点都不复杂&#xff1a; 确认橡皮擦大小&#xff0c;可动态设置&#xff1b;鼠标按下记录点击的坐标&#xff0c;然后根据设置的橡皮擦大小画一个圆&#xff0c;最后清除该圆形区域坐标范围的颜色信息…