对alarm列表进行定时监测,如果发现与设置的limit值不满足,则发出警报
监控服务分为三种:默认服务,单进程校验服务和分布式校验服务。根据配置来决定,默认配置:default
Alarm状态
名称 |
数据库代码 |
对应数据库操作字段 |
UNKNOWN |
insufficient data |
insufficient_data_actions |
OK |
ok |
ok_actions |
ALARM |
alarm |
alarm_actions |
基类,其他service都集成它,实现了基本的校验功能
单进程校验,处理能力较弱,数据量较大的时候会延时或者shutdown,不推荐使用
PartitionedAlarmService
它通过rpc实现了一套多个evaluator进程之间的协作协议(PartitionCoordinator),使得可以通过水平扩展来不断增大alarm service的处理能力,这样实现了一个简单的负载均衡,还实现了高可用
PartitionCoordinator
允许启动多个ceilometer-alarm-evaluator进程,这多个进程之间的关系是互相协作的关系,他们中最早启动的进程会被选为master进程,master进程主要做的事情就是给其他进程分配alarm,每个进程都在周期性的执行三个任务:
Alarm的alarm,综合多个指标的结果来进行相应操作
监控某一个或者多个指标,若大于、小于或者等与监控的阈值等情况时,触发alarm指定状态的动作
报警功能是根据alarm对象中规定的规则定时校验meter数据,如果发现有符合条件的数据,发出报警。初始alarm状态为ok,校验后如果状态变为unkown或者alarm则alarm_history表会有alarm状态更新数据,同时触发对应状态的action。如果当前状态为alarm,校验后状态任然为alarm,则不会触发对应action。
记录日志,级别:info
通过http协议调用alarm中指定状态的动作,通常是一个调用指定的地址,报告状态。
测试使用,没有实际使用
调用keystone接口,使用rest中的方法发送
"threshold_rule": {
"comparison_operator": "gt", #大于
"evaluation_periods": 2, #和period确定校验时间段
"exclude_outliers": False,
"meter_name": "disk.device.read.requests",
"period": 10,
"query": [ #查询规则
{
"field": "resource_id",
"op": "eq",
"type": "string",
"value": "fc0e5394-0276-413e-8d81-e3324df35a12-vda"
}
],
"statistic": "avg", #针对meter中volume的具体计算方法,如平均值,最大值,最小值等
"threshold": 990 #阈值
}