开源aodh学习小结

1 介绍

aodh是openstack监控服务(Telemetry)下的一个模块,telemetry下还有一个模块ceilometer

OpenStack Docs: 2024.1 Administrator Guides

Get Started on the Open Source Cloud Platform - OpenStack

Telemetry - OpenStack

1.1 代码仓

博客总结基于zed分支展开(版本15.X)

代码仓可以从openstasck代码仓或github下载

openstack/aodh: OpenStack Telemetry (Ceilometer) Alarming - aodh - OpenDev: Free Software Needs Free Tools

1.2 结构

主要三个部分:aodh-notifier, aodh-evaluator, aodh-listener,这三个会以进程形式一直处理告警,其他console_scripts下的东西类似于命令行,执行结束就完了

每个部分都看下

2 aodh-evaluator

作用 周期评估告警

2.1 评估告警

从入口函数进入,执行aodh.cmd.alarm.evaluator函数,该函数会创建aodh-evaluator逻辑类(即aodh-evaluator主要逻辑封装到一个类里)aodh.evaluator.AlarmEvaluationService的实例

aodh-evaluator业务主要逻辑在实例的初始化里,实例化过程中,会创定时任务,然后启动定时任务,定时任务会周期查db的告警和系统指标,去评估指标是否超过告警里的阈值,如果超过阈值则按一定规则上报给aodh-notifier

告警阈值通过查db得到,即先从db查告警,然后从查询结果获取阈值对应的字段作为阈值,用阈值去评估告警

待评估的数据(告警)也通过查询获取,查询具体动作由插件实现,调插件的evaluate方法。每个插件查询待评估数据的方法都可能不同,无法统一看。比如gnocchi就是在插件里调client去查数据然后和告警阈值评估

评估告警后发送告警业务逻辑也在相同插件里实现,插件列表如下

2.2 发送告警

如果评估需要发送告警,则根据情况先修改db的告警定义状态,然后组装告警数据,上报上去,最后上报到notifier_topic队列,默认值是alarming

3 aodh-notifier

主要逻辑为监听aodh-evaluator发送的告警,然后监听发送告警所在队列,如果监测到告警则交给处理函数处理,处理后发送出去

主要逻辑封装在一个类里,服务启动时,py脚本会创建该类的实例,实例创建完成,则业务主要逻辑也创建完成

3.1 监听告警

监听发送告警所在队列逻辑在类初始化里完成,监听队列名从conf.notifier_topic获取,默认为alarming

3.2 处理告警

处理告警通过插件实现,插件定义在setup.cfg里,插件通过stevedore.extension模块被加载,加载后被封装到AlarmEndpoint里,然后在创建实例时实现监听告警逻辑时同时提供插件,当监听到告警时直接调用插件里的接口notify方法对告警处理

插件定义

aodh-notifier接受到告警后,进行怎样的告警处理依赖于aodh-evaluator发送告警时调用的方法。处理告警执行的类方法与告警发送时调用的方法名应该一致

3.3 发送告警

处理完告警会继续将告警发给下一环,下一环可以是用户自定义的处理目标,通过url请求发送告警,url地址通常在aodh-evaluator发送评估后告警的结构体中包含,aodh-notifier发告警时直接从告警里取出目标url,然后将告警发出去

4 aodh-listener

主要逻辑也是监听告警(队列),然后处理告警,主要处理event类型告警

监听队列名为conf的event_alarn_topic的值,默认为alarm.all

4.1 监听告警

4.2 处理告警

处理告警逻辑封装在EventAlarmEndpoint里,endpoint函数处理告警时直接调用函数入参的evaluate_events方法实现

从发送的告警结构体里获取告警的tenant_id或alarm_id,然后从数据库查在这个tenant_id或alarm_id下enabled的event类型告警,查到以后,遍历查到的每个告警,然后评估告警并发送告警

注意,此处数据库里查到的告警是告警定义,目的是为了从查db获取的告警结构体里获取阈值,将该阈值和监听到的event的字段比较来具体评估是否要上报告警

4.3 发送与上报告警

当当前评估周期会发告警时,还会和上一个评估周期比较

如果上评估周期无告警本周期有告警,则先在db改告警状态为有告警,再notify上报本告警

如果上评估周期有告警本周期有告警则直接notify上报本告警,无需更新db告警状态

最后发送告警到notifier_topic队列,默认值alarming

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

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

相关文章

softmax函数与交叉熵损失详解

文章目录 一、softmax函数1.1 引入指数形式的优点1.2 引入指数形式的缺点 二、交叉熵损失函数2.1 交叉熵损失函数2.2 softmax与交叉熵损失 参考资料 一、softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区…

【C++ 内存管理】深拷贝和浅拷贝你了解吗?

文章目录 1.深拷贝2.浅拷贝3.深拷贝和浅拷贝 1.深拷贝 🍎 深拷⻉: 是对对象的完全独⽴复制,包括对象内部动态分配的资源。在深拷⻉中,不仅复制对象的值,还会复制对象所指向的堆上的数据。 特点: 🐧① 复制对…

蓝桥杯-移动距离(最简单的写法)

X星球居民小区的楼房全是一样的,并且按矩阵样式排列。 其楼房的编号为 1,2,3…当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为 6 时,开始情形如下: 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 … 我…

程序设计语言理论中的范畴论及其简单应用

程序设计语言理论中的范畴论及其简单应用 范畴论是一个深奥的数学分支,近年来在程序设计语言理论中得到了广泛的应用。本文将简要介绍范畴论的基本概念,并通过简单示例来说明其在程序设计中的应用。 范畴论的基本概念 范畴(Category&#…

Vue3:数据交互axios

回调函数 > 回调函数: 一些特殊的函数,表示未来才会执行的一些功能,后续代码不会等待该函数执行完毕就开始执行了 1. Promise 1.1 简介 > 前端中的异步编程技术,类似Java中的多线程线程结果回调! * Promise 是异步编程的一种解决方案&#xff0c…

记录一下 log4j的漏洞

目录 背景 bug的产生 bug复现 JNDI 网络安全学习路线 (2024最新整理) 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明: 背景 log4j这次的bug,我相信大家都已经知道了,仅以…

网络安全软件堡垒机推荐行云管家云堡垒机!

随着互联网技术的快速发展,以及数字化转型的快速转变,网络安全已成为企业生存和发展的关键要素。网络安全不仅是国家等保要求,也是企业发展必须面对的挑战。目前市面上网络安全软件较多,这里我给推荐行云管家堡垒机! …

【unity小技巧】减少Unity中的构建打包大小

文章目录 正常默认打包查看编辑器打包日志压缩图片压缩网格模型压缩贴图压缩音频文件只打64位包最终大小完结 正常默认打包 这里以安卓为例。先什么都不干,直接打包安卓apk,查看包大小 查看编辑器打包日志 搜索build report构建报告。构建报告我们应该…

Pytorch学习-引言

Pytorch相关链接 Pytorch官方网站 https://pytorch.org/ Pytorch的Github仓库 https://github.com/pytorch/pytorch Pytorch论坛 https://discuss.pytorch.org/ Pytorch离线下载包链接 https://download.pytorch.org/whl/torch_stable.html Pytorch学习视频推荐链接 http://【…

ubuntu 升级23.10 wifi固件缺失

昨晚家里ubuntu老机器23.04升级到23.10,出现wifi无法联网的故障,提示固件缺失。 查了不少资料,估计是要手工安装了,今天带跟网线回家,先要能上网啊。 经过几天折腾,我又从23.10升级到24.02 LTS版本&#…

手写一个SPI FLASH 读写擦除控制器

文章目录 flash读写数据的特点1. 扇擦除SE(Sector Erase)1.1 flash_se 模块设计1.1.1 信号连接示意图:1.1.2 SE状态机1.1.3 波形图设计:1.1.4 代码 2. 页写PP(Page Program)2.1 flash_pp模块设计2.1.1 信号连接示意图:…

apt结尾总是报错 ERROR: Timeout was reached

问题排查 尝试查看dpkg.log,重新安装异常的包,试了没用尝试清除apt缓存sudo apt clean sudo rm -rf /var/lib/apt/lists sudo apt update看到报错信息Failed to activate service org.freedesktop.PackageKit: timed out(service_start_timeout25000ms)…

学习前端第三十五天(原型继承,F.prototype,原生的原型)

一、原型继承 1、[ [ Prototype ] ],对象属性 所有对象都有一个[ [ Prototype ] ] 当从object中读取一个缺失的属性时,JavaScript 会自动从原型中获取该属性,“原型继承”。 其中之一设置原型的方法,使用特殊的名字 __proto__&…

JavaScript 对象入门:基础用法全解析

目录 对象 语法 属性和访问 方法和调用 this关键字 null 遍历对象 内置对象 Math 属性 方法 Date 创建日期对象 获取和设置日期 ⭐对象 对象是 JavaScript 数据类型的一种,数据类型也包括数值类型、字符串类型、布尔类型、undefined。对象数据类型可…

mcu 常用宏定义展示

简介 MCU开发中一般有很多地方需要对寄存器进行操作。 寄存器操作 #define SET_BIT(REG, BIT) ((REG) | (BIT))#define CLEAR_BIT(REG, BIT) ((REG) & ~(BIT))#define READ_BIT(REG, BIT) ((REG) & (BIT))#define CLEAR_REG(REG) ((REG) (0x0))#de…

程序员之路:裁员与内卷下的生存之道

作为一名普通的程序员,身处这个瞬息万变的IT行业,面对着今年不断加剧的裁员浪潮和日益激烈的内卷竞争,我时常感到焦虑和不安。然而,正是这些挑战,让我们更加深入地思考了在这个行业中,我们该如何找到自己的…

wireshark_http

过滤器: 捕获过滤器:表达式作用在wireshark开始捕获数据包之前,只捕获符合条件的数据包,不记录不符合条件的数据包。 显示过滤器:表达式作用在在wireshark捕获数据包之后,从已捕获的所有数据包中显示出符…

[链表专题]力扣21, 234

1. 力扣21 : 合并两个有序链表 题 : 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1:输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2:输入:l…

2024统计建模中国新质生产力统计测度与时空演变及其驱动因素研究

高质量成品论文46页word版本1.5w字书写完整数据集1000行py代码一等奖论文!这里仅展示部分内容,完整版在下面的链接。 【1.5w字全网最佳】2024统计建模大赛高质量成品论文39页配套完整代码运行全套数据集https://www.jdmm.cc/file/2710661/ 中国新质生产…

【2024HNCTF】密码组部分出题记录

2024H&NCTF 密码组部分出题记录 题目:BabyPQ、HappyDance 文章目录 2024H&NCTF 密码组部分出题记录BabyPQ | 签到HappyDance BabyPQ | 签到 本题为nc交互题,之所以采用这种形式,是因为可能有很多密码新师傅们不了解这种赛题形式&a…