如何基于Openstack telemetry项目实现云监控报警服务

发表于:2017-7-31 10:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:任敏敏    来源:infoq

分享:
  1、OpenStack Telemetry简介
  OpenStack Telemetry项目是OpenStack big tent下负责计量统计的组件,目前Telemetry是包含了四个子项目,Ceilometer、 Aodh、Gnocchi和Panko。其中的Ceilometer项目是最早OpenStack项目中负责计量统计的服务,但是由于云平台数据收集越来越多造成CCCeilometer越来越复杂,因此在Mitaka版本开始ceilometer项目开始分解为不同项目,并统称为OpenStack Telemetry。
  云监控告警服务,主要包括三个部分: 计量数据收集、计量数据存储、告警服务。
  OpenStack Telemetry的架构如图所示(Mitaka版本),其中Ceilometer是负责数据收集,Gnocchi则负责meter数据存储,Aodh项目负责告警服务,Panko负责Event数据存储。由于Event和Meter两种数据类型不同,CCCeilometer社区将两种数据分开处理。由于Panko项目到newton才有release,而笔者采用的mitaka验证环境,本文中不涉及Panko。
  图 1 Telemetry逻辑架构
  2、数据收集服务
  Ceilometer服务主要用于数据收集,并提供两类数据的收集meter和Event。
  Meter数据由Ceilometer的polling agent主动获取。
  Event数据来源是OpenStack service 的notification,例如instance/volume/network 等创建更新删除等等。
  Ceilometer 服务主要包含:
  a) polling agent:定期轮询获取监控数据并将数据发送给CCCeilometer notification agent做进一步处理,通过libvirt接口或者snmp或者OpenStack service API。
  Polling agent又根据namespace做了metering的区分,分别对应不同的agent
  Central polling agent,主要是通过OpenStack API 进行云平台的数据收集
  Compute polling agent则是通过与hypervisor的接口调用定期获取统计数据
  Impi polling agent则是通过ipmi协议收集数据
  图 2 central polling agent获取监控数据
  图3 OpenStack services notification 数据收集
  b) notification agent:在Mitaka版本中,notification agent通过监听message queue,将message 转化为event和sample并且执行pipeline处理,如图所示。例如虚拟机的CPU利用率,libvirt目前只提供CPUTIME的查询,如果为用户展示CPU利用率要做数据转换,notification agent就会根据pipeline中的定义执行数据转换,并将处理后的数据,通过message queue发送给CCCeilometer collector
  图4 pipeline Manager数据处理
  c)Ceilometer collector:ceilometer collector的作用就是将收集到数据存储到存储系统中,CCCeilometer支持多种存储后端:
  文件系统
  数据库
  Gnocchi
  HTTP
  对与存储系统的选择是非常关键的,公有云环境中会随着用户和资源的增长数据也会持续增长,这是对云监控服务来说是一个非常大的挑战。下小节,将为描述,我们是如何考量存储系统的。
  3、监控数据存储系统抉择
  对于计量统计服务来说,存储服务的性能是非常关键的,其中一个要求就是对它的存储量有很大的要求,公有云平台数量很大,每时每刻不断的有数据往系统里面塞。对数据库的吞吐能力要求很高,然后就是对查询性能要求很高。CERN作为OpenStack最大的规模的实践,也采用了MongoDB去做meter数据存储,但是一直以来MongoDB的也一直被诟病,一个存储空间占用,一个随之数据量增多响应时间变大的问题。
  3.1 Gnocchi简介
  Gnocchi是OpenStack Telemtry的Metric serivce,开始与2015年,目的在与解决CCCeilometer的监控数据存储的性能问题。Gnocchi支持的存储driver有文件系统、Swift、s3、Ceph
  官方建议使用ceph,gnocchi对ceph的数据存储做了很多优化。
  Gnocchi架构如图所示,包含两部分index和storage。Gnocchi API提供restful API接口,接受到数据存储请求时,会创建index在数据库中,并把数据写入临时待处理区,并加入时间戳。
  Metricd服务则从待处理数据区获取带有时间戳的数据,将数据追加到统计数据文件中。gnocchi为了节省存储空间在最新版本中加入了压缩算法支持。
  对于MongoDB 和Gnocchi的选择,我们做了实际的测试,主要关注两项指标存储空间需求和查询数据响应时间。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号