Vitrage简介
Vitrage(平台问题定位分析服务)。Vitrage是一个OpenStack RCA(Root Cause Analysis)服务,用于组织、分析和扩展OpenStack的告警和事件,在真正的问题发生前找到根本原因。
众所周知,OpenStack平台最大的优势来自于架构的可扩展性,这也是OpenStack能够在基础架构曾一枝独秀的重要原因。分布式架构最大的优势在于扩展,但是过于灵活的扩展性为运维带来的极大的困难,所以Vitrage的出现在一定程度上缓解了OpenStack运维上的痛点。
功能简介:
1.物理-虚拟实体映射 2.推导告警和状态(例如:基于系统分析后产生告警或者修改状态,而不是直接监控) 3.对告警、事件进行根因分析 4.Horizon显示
架构
Vitrage Data Source(s): 负责从不同来源导入关于系统状态的信息。这些信息包括物理资源、虚拟资源的告警和状态,这些信息将会由vitrage Graph处理。目前,vitrage已经支持的数据源有:Nova、Cinder、Aodh、Nagios 告警以及静态物理资源等。
Vitrage Graph: 保存数据源收集的信息以及其内部关系。另外,它实现了一些vitrage evaluator使用的基本图算法(例如:sub-matching, BFS, DFS等)。
Vitrage Evaluator: 协调vitrage Graph进行分析(修改)并处理分析结果。负责执行vitrage中定义的不同类型模板的动作,例如添加一个告警的根因分析,产生一个推导后的告警或者设置一个推导后的状态。
Vitrage Notifiers: 用来通知外部系统Vitrage的告警和状态。目前支持用Aodh notifier来产生vitrage告警,以及用Nova notifier来标注主机down等。
服务
Vitrage-graph服务主程序:包含了in-memory 实体图、模板分析程序以及datasource分析程序等。
Vitrage-collector服务:负责从不同数据源获取资源信息,包括主动获取数据源的告警和状态等资源,被动接收数据源发送过来的信息。负责将取得的信息解析成entity信息传给Vitrage-graph使用。
Vitrage-notifier服务:用来通知外部系统Vitrage的告警或者状态变化。在Ocata版本中只支持通知Nova force-down API以及SNMP。
Vitrage-api进程:Vitrage的API层,以进程形式表示Vitrage图形显示、vitrage CLI将调用vitrage-api。
Entity Graph Evaluator
Vitrage holds the system state (resources & alarms) as a property graph
- Entities are represented as graph vertices, and relationships are the edges between the vertices
- Each vertex and edge can also have additional properties
- Each edge has a special “label” indicating the type of relationship
- Intuitive modeling of relationship/interaction data
Vitrage Evaluator listens to change events in the entity graph and upon event:
- Retrieve templates (scenarios) relevant to event
- Evaluate condition against the state of the Entity Graph
- Execute actions for each matched condition
Use Cases for Vitrage:新增Nova实例
1) Nova datasource Driver查询所有的nova实例,或者获取消息队列通知,得知新增了一个nova实例。 2) Nova datasource Driver向Entity Queue发出对应的事件。 3) The Entity Processor从Entity Queue获得新增Nova实例事件。 4) The Entity Processor将事件传递给Nova Instance Transformer 5) 在图上显示最新的Nova实例,并和相应的Host建立连接关系。
Use Cases for Vitrage:新增Aodh告警
流程类似上面的新增Nova实例,不详细说明了,直接上图。
Use Cases for Vitrage:Nagios主机物理网卡故障推导出主机上的实例故障
通过Nagios, Zabbix监视物理网卡的状态,一旦故障给出告警。
Vitrage通过监视工具得到故障告警,并将告警加入实体图,下图中的Host NIC
找到对应的脚本(模板)并执行以下的动作: 给出推导的有关主机的告警 同样将此告警加入实体图 改变Vitrage的主机状态 可以通过调用Nova API来改变主机的状态 增加告警的因果关系 一旦推导的主机告警成立,相同的流程会应用到主机上的vm实例和相关的VNF
Use Cases for Vitrage:RCA根本原因分析
1)Evaluator被通知一个新的告警Alarm-X(如下图的Instance At Risk1) 2) Evaluator评估模板和图,推导出在Alarm-X and Alarm-Y间有一个根本原因,在图上增加一个Alarm-Y指向Alarm-X的箭头。