Openstack-Ceilometer-Alarm运行机制
1校驗(yàn)
對(duì)alarm列表進(jìn)行定時(shí)監(jiān)測(cè),如果發(fā)現(xiàn)與設(shè)置的limit值不滿足,則發(fā)出警報(bào)
監(jiān)控服務(wù)分為三種:默認(rèn)服務(wù),單進(jìn)程校驗(yàn)服務(wù)和分布式校驗(yàn)服務(wù)。根據(jù)配置來(lái)決定,默認(rèn)配置:default
Alarm狀態(tài)
名稱 |
數(shù)據(jù)庫(kù)代碼 |
對(duì)應(yīng)數(shù)據(jù)庫(kù)操作字段 |
UNKNOWN |
insufficient data |
insufficient_data_actions |
OK |
ok |
ok_actions |
ALARM |
alarm |
alarm_actions |
1.1服務(wù)
1.1.0 AlarmService
基類,其他service都集成它,實(shí)現(xiàn)了基本的校驗(yàn)功能
1.1.1 AlarmEvaluationService(默認(rèn)服務(wù))
- 根據(jù)alarm列表(當(dāng)前enable的alarm)啟動(dòng)校驗(yàn)定時(shí)器
- 啟動(dòng)負(fù)載均衡服務(wù),啟動(dòng)心跳信息定時(shí)器
1.1.2 SingletonAlarmService(單進(jìn)程校驗(yàn)服務(wù))
單進(jìn)程校驗(yàn),處理能力較弱,數(shù)據(jù)量較大的時(shí)候會(huì)延時(shí)或者shutdown,不推薦使用
- 根據(jù)alarm列表(當(dāng)前enable的alarm)逐個(gè)校驗(yàn)
1.1.3 PartitionedAlarmService(分布式校驗(yàn)服務(wù))
PartitionedAlarmService
它通過rpc實(shí)現(xiàn)了一套多個(gè)evaluator進(jìn)程之間的協(xié)作協(xié)議(PartitionCoordinator),使得可以通過水平擴(kuò)展來(lái)不斷增大alarm service的處理能力,這樣實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的負(fù)載均衡,還實(shí)現(xiàn)了高可用
PartitionCoordinator
允許啟動(dòng)多個(gè)ceilometer-alarm-evaluator進(jìn)程,這多個(gè)進(jìn)程之間的關(guān)系是互相協(xié)作的關(guān)系,他們中最早啟動(dòng)的進(jìn)程會(huì)被選為master進(jìn)程,master進(jìn)程主要做的事情就是給其他進(jìn)程分配alarm,每個(gè)進(jìn)程都在周期性的執(zhí)行三個(gè)任務(wù):
- 發(fā)布存在消息;通過rpc,向其它進(jìn)程廣播自己的狀態(tài),來(lái)告知其他進(jìn)程,自己是活著的,每個(gè)進(jìn)程中都保存有其他進(jìn)程的最后活躍時(shí)間
- 校驗(yàn)是否可以成為master;每個(gè)進(jìn)程都會(huì)不斷的更新自己所維護(hù)的其它進(jìn)程的狀態(tài)列表,根據(jù)這個(gè)狀態(tài)列表,來(lái)判斷是否應(yīng)該由自己來(lái)當(dāng)master,判斷一個(gè)進(jìn)程是否是master的條件只有一個(gè),那就是看誰(shuí)啟動(dòng)的早
- 校驗(yàn)數(shù)據(jù);檢查本進(jìn)程負(fù)責(zé)的alarm,調(diào)用ceilometerclient的接口,來(lái)獲取該alarm的監(jiān)控指標(biāo)對(duì)應(yīng)的監(jiān)控?cái)?shù)據(jù),然后進(jìn)行判斷,發(fā)送報(bào)警等
1.2 Alarm
1.2.1 combination
Alarm的alarm,綜合多個(gè)指標(biāo)的結(jié)果來(lái)進(jìn)行相應(yīng)操作
1.2.2 threshould
監(jiān)控某一個(gè)或者多個(gè)指標(biāo),若大于、小于或者等與監(jiān)控的閾值等情況時(shí),觸發(fā)alarm指定狀態(tài)的動(dòng)作
2報(bào)警
報(bào)警功能是根據(jù)alarm對(duì)象中規(guī)定的規(guī)則定時(shí)校驗(yàn)meter數(shù)據(jù),如果發(fā)現(xiàn)有符合條件的數(shù)據(jù),發(fā)出報(bào)警。初始alarm狀態(tài)為ok,校驗(yàn)后如果狀態(tài)變?yōu)閡nkown或者alarm則alarm_history表會(huì)有alarm狀態(tài)更新數(shù)據(jù),同時(shí)觸發(fā)對(duì)應(yīng)狀態(tài)的action。如果當(dāng)前狀態(tài)為alarm,校驗(yàn)后狀態(tài)任然為alarm,則不會(huì)觸發(fā)對(duì)應(yīng)action。
2.1 Log
記錄日志,級(jí)別:info
2.2 Rest
通過http協(xié)議調(diào)用alarm中指定狀態(tài)的動(dòng)作,通常是一個(gè)調(diào)用指定的地址,報(bào)告狀態(tài)。
2.3 Test
測(cè)試使用,沒有實(shí)際使用
2.4 Trust
調(diào)用keystone接口,使用rest中的方法發(fā)送
3可能遇到的問題
- 創(chuàng)建alarm時(shí)對(duì)于時(shí)間段選擇的錯(cuò)誤。如果需要一直監(jiān)控而不是只在某個(gè)時(shí)間段監(jiān)控的話,這個(gè)字段可以直接不賦值
- 創(chuàng)建alarm時(shí)幾個(gè)條件的組合需要思考好。間隔時(shí)間(period/evaluation_periods)、時(shí)間范圍(time_constraints),alarm類型(type)以及根據(jù)類型對(duì)應(yīng)的操作(xx_action)
- 創(chuàng)建alarm初始狀態(tài)給定為ok
- Alarm規(guī)則設(shè)置。一般是:[meter_name]記錄中的 [field]在[evaluation_periods]時(shí)間內(nèi)的[avg/max/min/..]數(shù)值[大于(gt)、小于(lt)、等于(eg)…]則滿足條件,需要更新alarm狀態(tài)。規(guī)則示例
"threshold_rule": {
"comparison_operator": "gt", #大于
"evaluation_periods": 2, #和period確定校驗(yàn)時(shí)間段
"exclude_outliers": False,
"meter_name": "disk.device.read.requests",
"period": 10,
"query": [ #查詢規(guī)則
{
"field": "resource_id",
"op": "eq",
"type": "string",
"value": "fc0e5394-0276-413e-8d81-e3324df35a12-vda"
}
],
"statistic": "avg", #針對(duì)meter中volume的具體計(jì)算方法,如平均值,最大值,最小值等
"threshold": 990 #閾值
}
總結(jié)
以上是生活随笔為你收集整理的Openstack-Ceilometer-Alarm运行机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: javaweb自学书籍推荐
- 下一篇: C++Builder 也有StringB