0 背景
1 流程
1.1 入口
入口在aodh.cmd.alarm:evaluator

1.2 AlarmEvaluationService
1.2.0 __init__
加载evaluator extension,初始化coordinator对象
1.2.1 start()
入口会调用该类的start方法
coordinator start,然后延迟启动,fs没用coordinator
添加定时任务,定时任务执行间隔从配置项获取,定时任务目标函数为_evaluate_assigned_alarms
1.2.2 evaluate_assigned_alarms
调用assigned_alarms查告警,然后遍历查到的告警,调用_evaluate_alarm评估告警
1.2.3 assigned_alarms
查询所有enabled为True的告警,然后哈希返回主机需要处理的告警,没coordinator直接返回所有告警
1.2.4 evaluate_alarm
调用类初始化加载的extension的evaluate方法评估告警
1.3 GroupThresholdEvaluator
1.3.1 evaluate
获取指标周期:从pipeline文件读取指标查询时间,然后生成完整指标查询时间窗
获取指标查询条件:从告警组获取指标查询条件
查指标:根据告警组,时间窗和指标查询条件查指标
查告警定义:如有新增告警组,查所有告警,缓存
过滤最新指标:从查到的指标过滤每个resourceid对应的最新时间的指标
新增/删除告警:根据查到的指标新增或删除对应告警定义
判断是否超过阈值:判断resource对应最新指标值是否超过告警阈值
1.3.2 transition
转换告警数据格式,判断告警是否上报:调用_reason和_reason_data
更新告警定义,发送告警:调用__refresh