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守护程序都是无状态的,可以轻松的根据负载情况进行扩展。

数据存储

Gnocchi中的一个核心问题是解决各种监控数据的存储,上述的API和metricd服务都需要与Gnocchi的后端存储打交道。根据存储内容的不同,Gnocchi的存储后端可以大致分为三个部分:原始事件测量值存储(Measure Storage),聚合数据存储(Aggregate Storage)和索引数据存储(Index)。

原始测量值存储用来存储API服务和statsd守护程序收到的各项监控指标的原始的时间序列的测量值。

聚合数据存储负责存储由metricd守护程序根据收到的测量值及时间戳,依据资源设定的聚合策略聚合过后的数据。

通常这两种存储后端会配置成同样的驱动,常见的驱动包括:文件(默认)、Ceph(推荐)、Swift、S3和Redis。由于上述的存储驱动原生并不支持存储时间序列,为此Gnocchi开发了一个名为Carbonara中间库的来处理时序数据,从而驱动上述存储引擎。

索引数据存储用来保存各种资源、监控指标和归档策略的元数据,目前Gnocchi提供了PostgreSQL和MySQL的存储驱动。上述每个具体测量值对应的资源(Resource)和监控指标(Metric)都是存储在索引存储里面的。

Gnocchi与Ceilometer的集成

要让Ceilometer的计量(meter)后端接入Gnocchi,首先需要确保Gnocchi安装完毕,具体安装步骤可以参考其官方文档。之后在ceilometer.conf中修改相关配置即可。

[DEFAULT]

meter_dispatchers = gnocchi

[dispatcher_gnocchi]

filter_service_activity = False

url = http://{{CONTROLLER_IP}}:8041

你可能感兴趣的:(openstack)