Ceilometer告警是Ceilometer利用保存的众多关于计量和监控的测量值通过比较而产生的,并执行某些动作。简单来说,Ceilometer告警的功能就是监控某一个或多个测量值,若高于或者低于预先设定的阈值就执行相应的动作,比如,发送邮件、短信报警,或者直接调用某个接口进行弹性伸缩操作等。
Ceilometer中,根据报警器状态的评估判定方式不同实现了两种报警器。
·边界触发型(Threshold):根据监控指标的阈值去判断告警的状态,它只针对某一个监控指标创建告警。
·组合型(Combination):可以理解为告警的告警,它是根据多个告警的状态来判断自己的状态,多个告警之间是或/与的关系,相当于对多个监控指标创建一个告警。
一般情况下,只需要边界触发型的告警就足够了。但对于一些特殊情况,比如Heat要执行自动缩放操作,可能就要对多个监控指标进行衡量,然后再采取操作。此时就需要组合告警。
Ceilometer中和报警功能相关的服务有如下3种。
·Alarm Evaluator:Ceilometer通过Alarm Evaluator服务来周期性地检查用户所创建的报警器的状态。
·Alarm Notifier:当Alarm Evaluator服务检查到某个报警器符合触发条件时,用来执行该报警器所定义的报警动作。
·API Server:用户通过API Server来对报警器进行操作(新建、读取、更新、删除),同时,Alarm Evaluator服务也会通过API Server来获得要检查的报警器列表。
Ceilometer报警器的3种状态如表5-3所示。
表5-3 Ceilometer报警器状态
对于每一种报警器的状态,用户在新建或者修改报警器的时候,都可以为其设置不同的报警动作,用于告警触发时被Alarm Notifier服务调用。Ceilometer要求用户所设置的报警动作是符合URL格式的字符串,Alarm Notifier服务会根据这个URL字符串解析的结果来执行不同的报警动作。目前,Ceilometer支持的报警动作如表5-4所示。
Ceilometer对这些报警动作的支持也是通过插件的方式实现的。Alarm Notifier服务初始化过程中会加载命名空间ceilometer.alarm.notifier所定义的所有插件,确定所支持的报警动作的实现方式。
表5-4 Ceilometer支持的报警动作
ceilometer.alarm.notifier = log = ceilometer.alarm.notifier.log:LogAlarmNotifiertest = ceilometer.alarm.notifier.test:TestAlarmNotifierhttp = ceilometer.alarm.notifier.rest:RestAlarmNotifierhttps = ceilometer.alarm.notifier.rest:RestAlarmNotifiertrust+http = ceilometer.alarm.notifier.trust:TrustRestAlarmNotifiertrust+https = ceilometer.alarm.notifier.trust:TrustRestAlarmNotifier