开源aodh学习小结

news2024/11/25 4:50:54

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.coloradmin.cn/o/1672721.html

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

相关文章

01-02-3

1、线性表 a.定义: 有n(n>0)个相同类型的元素组成的有序集合。 数组是线性表的一种。通常用数组实现。 b.线性表的顺序存储 b-1:顺序表结构体的定义 顺序表是一个结构体变量。结构体内部有两个数据:一个用于存…

Nature 综述(IF=88):微生物群落和土壤性质之间的相互作用

随着社会的发展,环境污染和自然资源的消耗日益严重,土壤生态系统的健康状况备受关注。然而,当前研究领域存在一个问题,即在研究土壤微生物群落结构的同时,忽略了微生物对土壤环境的影响。本文旨在探讨微生物如何通过生…

牛客热题:旋转数组的最小数字

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:旋转数组的最小数字题目链接方法…

二叉树的前序、中序、后序遍历

二叉树的前序、中序、后序 1.二叉树的前序遍历 题目: 二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: 输入&#xff…

​​​【收录 Hello 算法】第 6 章 哈希表

目录 第 6 章 哈希表 本章内容 第 6 章 哈希表 Abstract 在计算机世界中,哈希表如同一位聪慧的图书管理员。 他知道如何计算索书号,从而可以快速找到目标图书。 本章内容 6.1 哈希表6.2 哈希冲突6.3 哈希算法6.4 小结

UML快速入门篇

目录 1. UML概述 2. 类的表示 2.1. 类的表示 2.2. 抽象类的表示 2.3. 接口的表示 3. 类的属性,方法,访问权限的表示 3.1. 类的属性 3.2. 类的方法 3.3. 类的权限 4. 类的关联 4.1. 单向关联 4.2. 双向关联 4.3. 自关联 4.4. 类的聚合 4.5.…

LeetCode题练习与总结:不同的二叉搜索树Ⅱ--95

一、题目描述 给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。 示例 1: 输入:n 3 输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,nul…

通过GRE隧道实现OSPF、BGP、IS-IS的套接使用

正文共:999 字 9 图,预估阅读时间:1 分钟 书接上文(专线入云场景能否配置动态路由协议?),我们发现通过一定的配置,具体就是组合使用IBGP和静态路由,在使用云专线接入到资…

科技查新中的工法查新点如何确立与提炼?案例讲解!

按《工程建设工法管理办法》( 建 质[2014]103 号) ,工法,是指以工程为对象,以工艺为核心,运用系 统工程原理,把先进技术和科学管理结合起来,经过一定工程实践形成的综合配套的施工方…

【go项目01_学习记录11】

操作数据库 1 文章列表2 删除文章 1 文章列表 (1)先保证文章已经有多篇,可以直接在数据库中添加,或者访问链接: localhost:3000/articles/create,增加几篇文章。 (2)之前设置好了articles.ind…

移动端自动化测试工具 Appium 之自定义报告

文章目录 一、背景二、具体实现1、保存结果实体2、工具类3、自定义报告监听类代码4、模板代码4.1、report.vm4.2、执行xml 三、总结 一、背景 自动化测试用例跑完后报告展示是体现咱们价值的一个地方咱们先看原始报告。 上面报告虽然麻雀虽小但五脏俱全,但是如果用…

JavaScript 进阶(一)

一、作用域 1. 局部作用域 (1)函数作用域 、 (2)块作用域 2. 全局作用域 3. 作用域链 g 作用域可以访问 f 作用域(子访问父),但是 f 作用域,不能访问 g 作用域(父…

[数据集][图像分类]杂草分类数据集17509张9类别

数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):17509 分类类别数:9 类别名称:["chineseapple","lantana","negatives","parkinsonia","part…

经典面试题---环形链表

1. 环形链表1. - 力扣(LeetCode) 要解决这道题,我们首先要挖掘出带环的链表与不带环的链表之间的差别。 以此,才能设计出算法来体现这种差别并判断。 二者最突出的不同,就是不带环的链表有尾结点,也就是说…

Springboot打包jar如何后台启动和查看日志?

如何后台启动Spring Boot的fat jar 使用nohup命令启动: 在Linux或Unix系统中,你可以使用nohup命令来启动jar包,以确保即使你关闭了终端或断开了SSH连接,程序仍然可以在后台运行。命令格式如下:nohup java -jar yourapp…

C语言(指针)6

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记&#x…

opencv车道偏离系统-代码+原理-人工智能-自动驾驶

车道偏离预警系统(Lane Departure Warning System, LDWS)是一种主动安全技术,旨在帮助驾驶员避免因无意中偏离车道而引发的事故。从原理到实战应用,其工作流程大致如下: 传感器采集 :系统通常配备有一个或…

智能终端RK3568主板在智慧公交条形屏项目的应用,支持鸿蒙,支持全国产化

基于AIoT-3568A的智慧公交条形屏,可支持公交线路动态展示,语音到站提醒,减少过乘、漏乘的情况,有效提高了公交服务效率和质量,为乘客提供了更舒适、更安全和更方便的出行体验,为城市的发展增添了新的活力。…

升级Microsoft 365后,SAP GUI中无法打开Excel的解决方案

最近,我们遇到了一个棘手的问题,一位客户在升级到Microsoft 365后,无法在SAP GUI中打开Excel。这个问题不仅影响了工作效率,也给用户的日常操作带来了不便。在本文中,我们将探讨问题的成因,并提供一种解决方…

纯福利|手把手教你如何白嫖免费的GPU资源(二)

大家好,我是无界生长。 前段时间写过一篇文章《纯福利|手把手教你如何白嫖免费的GPU资源(一)》,使用Google Colab提供的免费的GPU资源,今天接着写白嫖GPU资源攻略,可获得“长期免费的CPU实例资源…