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(默認服務)
- 根據alarm列表(當前enable的alarm)啟動校驗定時器
- 啟動負載均衡服務,啟動心跳信息定時器
1.1.2 SingletonAlarmService(單進程校驗服務)
單進程校驗,處理能力較弱,數據量較大的時候會延時或者shutdown,不推薦使用
- 根據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可能遇到的問題
- 創建alarm時對于時間段選擇的錯誤。如果需要一直監控而不是只在某個時間段監控的話,這個字段可以直接不賦值
- 創建alarm時幾個條件的組合需要思考好。間隔時間(period/evaluation_periods)、時間范圍(time_constraints),alarm類型(type)以及根據類型對應的操作(xx_action)
- 創建alarm初始狀態給定為ok
- 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 #閾值
}
總結
以上是生活随笔為你收集整理的Openstack-Ceilometer-Alarm运行机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javaweb自学书籍推荐
- 下一篇: C++Builder 也有StringB