天天看點

OpenStack實踐分享:OpenStack Gnocchi項目

簡介

Gnocchi是一個能夠高效存儲海量監控名額(metric)測量值的系統,其設計目标是能夠在雲環境中提供時序資料庫服務(TDBaaS,Time-series Database as a Service),通過對外暴露HTTPREST API來建立和操作各種監控資源的屬性和各項監控名額的測量資料,最終實作了監控名額測量值的查詢與存儲的資料規模無關。Gnocchi最初由Julien Danjou于2014年發起,旨在為Ceilometer項目解決其最初利用傳統關系型資料庫作為監控資料存儲後端時,遇到的擴充性問題,提供存儲海量監控資料的服務。

架構

Gnocchi的架構實際上并不複雜,主要由三個服務組成:一個HTTP REST API服務(gnocchi-api),一個異步處理監控資料的守護程式(gnocchi-metricd)和一個可選的statsd相容的守護程式(gnocchi-statsd)負責監聽通過TCP或者UDP發送的計量資料。監控資料由HTTP REST API服務和statsd守護程式負責擷取,而metricd守護程式則在背景負責對擷取的資料進行各種操作,包括測量值的計算和聚合,過期監控名額的清除等。其中,API服務和metricd守護程式都是無狀态的,可以輕松的根據負載情況進行擴充。

OpenStack實踐分享:OpenStack Gnocchi項目

資料存儲

Gnocchi中的一個核心問題是解決各種監控資料的存儲,上述的API和metricd服務都需要與Gnocchi的後端存儲打交道。根據存儲内容的不同,Gnocchi的存儲後端可以大緻分為三個部分:原始事件測量值存儲(Measure Storage),聚合資料存儲(Aggregate Storage)和索引資料存儲(Index)。

原始測量值存儲用來存儲API服務和statsd守護程式收到的各項監控名額的原始的時間序列的測量值。

聚合資料存儲負責存儲由metricd守護程式根據收到的測量值及時間戳,依據資源設定的聚合政策聚合過後的資料。

通常這兩種存儲後端會配置成同樣的驅動,常見的驅動包括:檔案(預設)、Ceph(推薦)、Swift、S3和Redis。由于上述的存儲驅動原生并不支援存儲時間序列,為此Gnocchi開發了一個名為Carbonara中間庫的來處理時序資料,進而驅動上述存儲引擎。

索引資料存儲用來儲存各種資源、監控名額和歸檔政策的中繼資料,目前Gnocchi提供了PostgreSQL和MySQL的存儲驅動。上述每個具體測量值對應的資源(Resource)和監控名額(Metric)都是存儲在索引存儲裡面的。

meter_dispatchers = gnocchi
[dispatcher_gnocchi]
filter_service_activity = False
url = http://{{CONTROLLER_IP}}:8041