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的箭頭。