zoukankan      html  css  js  c++  java
  • Openstack-Ceilometer-Alarm运行机制

    1校验

    对alarm列表进行定时监测,如果发现与设置的limit值不满足,则发出警报

    监控服务分为三种:默认服务,单进程校验服务和分布式校验服务。根据配置来决定,默认配置:default

    Alarm状态

    名称

    数据库代码

    对应数据库操作字段

    UNKNOWN

    insufficient data

    insufficient_data_actions

    OK

    ok

    ok_actions

     

    ALARM

    alarm

    alarm_actions

    1.1服务

    1.1.0 AlarmService

    基类,其他service都集成它,实现了基本的校验功能

    1.1.1  AlarmEvaluationService(默认服务)

    1. 根据alarm列表(当前enable的alarm)启动校验定时器
    2. 启动负载均衡服务,启动心跳信息定时器

    1.1.2  SingletonAlarmService(单进程校验服务)

    单进程校验,处理能力较弱,数据量较大的时候会延时或者shutdown,不推荐使用

    1. 根据alarm列表(当前enable的alarm)逐个校验

    1.1.3  PartitionedAlarmService(分布式校验服务)

    PartitionedAlarmService

    它通过rpc实现了一套多个evaluator进程之间的协作协议(PartitionCoordinator),使得可以通过水平扩展来不断增大alarm service的处理能力,这样实现了一个简单的负载均衡,还实现了高可用

    PartitionCoordinator

    允许启动多个ceilometer-alarm-evaluator进程,这多个进程之间的关系是互相协作的关系,他们中最早启动的进程会被选为master进程,master进程主要做的事情就是给其他进程分配alarm,每个进程都在周期性的执行三个任务:

    • 发布存在消息;通过rpc,向其它进程广播自己的状态,来告知其他进程,自己是活着的,每个进程中都保存有其他进程的最后活跃时间
    • 校验是否可以成为master;每个进程都会不断的更新自己所维护的其它进程的状态列表,根据这个状态列表,来判断是否应该由自己来当master,判断一个进程是否是master的条件只有一个,那就是看谁启动的早
    • 校验数据;检查本进程负责的alarm,调用ceilometerclient的接口,来获取该alarm的监控指标对应的监控数据,然后进行判断,发送报警等

     

    1.2 Alarm

    1.2.1 combination

    Alarm的alarm,综合多个指标的结果来进行相应操作

    1.2.2 threshould

    监控某一个或者多个指标,若大于、小于或者等与监控的阈值等情况时,触发alarm指定状态的动作

    2报警

    报警功能是根据alarm对象中规定的规则定时校验meter数据,如果发现有符合条件的数据,发出报警。初始alarm状态为ok,校验后如果状态变为unkown或者alarm则alarm_history表会有alarm状态更新数据,同时触发对应状态的action。如果当前状态为alarm,校验后状态任然为alarm,则不会触发对应action。

    2.1 Log

    记录日志,级别:info

    2.2 Rest

    通过http协议调用alarm中指定状态的动作,通常是一个调用指定的地址,报告状态。

    2.3 Test

    测试使用,没有实际使用

    2.4 Trust

    调用keystone接口,使用rest中的方法发送

    3可能遇到的问题

    1. 创建alarm时对于时间段选择的错误。如果需要一直监控而不是只在某个时间段监控的话,这个字段可以直接不赋值
    2. 创建alarm时几个条件的组合需要思考好。间隔时间(period/evaluation_periods)、时间范围(time_constraints),alarm类型(type)以及根据类型对应的操作(xx_action)
    3. 创建alarm初始状态给定为ok
    4. Alarm规则设置。一般是:[meter_name]记录中的 [field]在[evaluation_periods]时间内的[avg/max/min/..]数值[大于(gt)、小于(lt)、等于(eg)…]则满足条件,需要更新alarm状态。规则示例

    "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 #阈值

        }

  • 相关阅读:
    SpringBoot(三)SpringApplication启动类准备阶段
    SpringBoot(四)SpringApplication启动类运行阶段 SpringApplicationRunListener
    201871010104陈园园 《面向对象程序设计(java)》第八周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第十周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第四周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第二周学习总结 陈园园
    《2019面向对象程序设计(java)课程学习进度条》 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第七周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计 (java)》第一周学习总结 陈园园
    201871010104陈园园 《面向对象程序设计(java)》第六——七周学习总结 陈园园
  • 原文地址:https://www.cnblogs.com/smallcoderhujin/p/4150362.html
Copyright © 2011-2022 走看看