开源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

  • 38
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值