OpenStack-Ceilometer项目功能与架构介绍

2023-05-16

1. OpenStack-Ceilometer项目简介

OpenStack通过Telemetry项目提供计量与监控服务,该项目旨在针对组成已部署云的物理和虚拟资源,可靠地收集并保存各类使用数据,以便对这些数据进行后续检索和分析,并在满足已定义条件或者规则时触发操作(如报警)。

Telemetry项目中包含许多子项目,其中包括以下几个:

  • Ceilometer:数据采集服务,提供一个获取和保存各种使用数据的统一框架

    源码https://github.com/openstack/ceilometer
    Bug列表https://bugs.launchpad.net/ceilometer
    文档https://docs.openstack.org/ceilometer/latest/
    压缩包http://tarballs.openstack.org/ceilometer/
  • Aodh:告警服务,根据已保存的使用数据定义规则并触发操作

    源码https://github.com/openstack/aodh
    Bug列表https://github.com/openstack/aodh
    文档https://docs.openstack.org/aodh/latest/
    压缩包http://tarballs.openstack.org/aodh/
  • Gnocchi:开源时序数据库服务,保存基于时间序列的数据,并对其提供索引服务

    源码https://github.com/gnocchixyz/gnocchi
    Bug列表https://github.com/gnocchixyz/gnocchi/issues
    文档http://gnocchi.xyz/
    压缩包https://pypi.python.org/pypi/gnocchi
  • Panko:事件数据库服务,用来保存事件Event信息,并对其提供索引服务

    源码https://github.com/openstack/panko
    Bug列表https://bugs.launchpad.net/panko
    文档https://docs.openstack.org/panko/latest/
    压缩包http://tarballs.openstack.org/panko/

其中,Ceilometer项目处于核心位置,OpenStack Telemetry的源头就是Ceilometer项目。该项目始于2012年,最初的目的是获取和保存计量信息以支持对用户收费,随着项目的发展,很多OpenStack项目都需要获取和保存多种不同的测量值,所以Ceilometer增加了第二个目标:成为收集和保存各种测量数据的标准框架。后来由于Heat项目的需要,Ceilometer项目又增加了利用已保存的测量值进行报警的功能。

为了满足客户更加灵活且可供选择的部署Ceilometer项目的各个功能,在Openstack Liberty版本中,报警功能从Ceilometer项目中剥离,产生了一个新的项目Aodh。在Openstack Newton版本中,事件Event信息的保存功能也被剥离,产生了新项目Panko。

早期Ceilometer项目使用MongoDB保存计量数据,性能十分差劲,为了解决这个问题Telemetry社区开发了Gnocchi项目,用于保存时序数据,并作为Ceilometer项目的数据保存后端。

这些从Ceilometer项目剥离和衍生出来的项目与Ceilometer项目一起,构成了Telemetry项目。

2. Ceilometer项目架构

Ceilometer的主要功能是

  • 高效轮询与OpenStack服务相关的计量数据
  • 通过监听消息总栈获取事件和计量数据
  • 将收集到的数据发布到多个目的地

2.1 整体架构

Ceilometer的每个服务都支持横向扩展,可根据负载情况,增加节点或者增加单个节点的worker数。Ceilometer提供两个核心服务:

  • Polling Agent:轮询OpenStack 服务并生成meter数据的守护进程
  • Notification Agent: 监听Notification Bus上的通知信息,并将通知信息转换为事件Event和取样Sample数据,也是一个守护进程。

从上图架构能够看出,Ceilometer收集和处理的数据,可发往多个target,比如通过Gnocchi-API发给Gnocchi,实现数据保存;发给Panko用户储存Event和其他元数据;也可以发给外部系统使用;Aodh服务通过已保存的数据,制定规则触发报警等。

2.2 数据收集

Ceilometer项目通过两种方式收集数据:

  • Notification Agent: 第三方的数据发送者将数据以消息的形式发送至Notification Bus,Notification Agent会监听这些通知事件,并从中提取Sample或者Event数据。

    所有的OpenStack服务都会发送已执行操作或系统状态的通知,这些通知数据的发送者可能是Openstack项目的其他组件,如Nova, Glance, Cinder, Neutron, Swift, Keystone, and Heat,当然也可能是来自Ceilometer内部。

    Notification Agent 加载ceilometer.notification命名空间下的一个或者多个插件,每个插件可以监听任何topic。 一般默认监听 notifications.info, notifications.sample, 和notifications.error。监听进程从配置的topic抓取下来消息之后,将其分发到合适的插件处理成event和sample

  • Polling Agent:定期主动地通过各种API或者其他通信协议收集远端或者本地的不同服务实体中的测量数据。

    虽然我们可以使用Notification Agent收集和整理出许多可计量数据信息,但是有些信息不会直接发出,例如VM实例的资源使用情况,因此我们还需要使用Polling Agent来获取更多数据。

    目前主要有三种不同的Polling Agent。 Compute Agent部署在Nova Compute服务的计算节点上,主要用来和Hypervisor通信,轮询获取计算资源相关数据(Hypervisor相关的测量值),要求部署在计算节点上,也是为了更高效地和本地Hypervisor进行通信。Central Agent部署在控制节点上(也可以被部署在任何其他节点上),用于和远程各种不同实体和服务进行通信,获取不同的非计算资源数据(如通过轮询公共的REST API检索未通过通知显示的OpenStack资源的附加信息,还负责通过SNMP获取硬件资源信息)。IPMI Agent,它需要部署在支持IPMI的节点上,用于获取本机IPMI的相关测量值。

    由于Polling Agent采用轮询的方式主动获取数据,可能会对服务器造成负载,可以同时部署多个Central Agent实例,Compute Agent和IPMI Agent主要和本地进行通信,不能使用部署多个相关实例。

2.3 数据处理

Ceilometer获取到的测量数据,会把它转化为符合某种标准的采样数据并通过内部总线发送给Notification Agent,然后Notification Agent会根据用户定义的Pipeline来对采样数据进行转换(Transform)和发布(Publish)。

Ceilometer处理数据的机制即为Pipeline,Pipeline的引入使得管理员很方便的定义某个测量数据的采样频率和发布方式,在Ceilometer中,同时允许有多个Pipeline,每个Pipeline都是由源(source)和目标(sink)两部分组成。源中定义了需要测量的数据,数据的采样频率,在那些Endpoint上进行数据采样以及这些数据的目标(sink)。 目标则定义了数据需要经过哪些Transformer进行转换,并且最终交由哪些Publisher进行数据发布。 下图展示了数据的处理流程:

数据发布流程如下:

该图显示了采样数据可发送给多个target,如通过Gnocchi和oslo.messaging的方式同时将同一采样数据发布给不同的数据接受者。

目前已有多种Publisher,具体如下:

  1. Gnocchi ,发布samples/events 给Gnocchi API;
  2. Notifier,基于消息通知的Publisher,向通知总线上发送info级别的通知消息,采样数据(Sample)作为通知消息的数据载荷(payload);
  3. UDP,将采样数据封装在UDP包内,然后向某个管理员可配置的UDP地址和端口发送;
  4. HTTP,发布采样值到REST接口;
  5. File,将采样数据内容以log形式保存在某个管理员可配置的文件中;
  6. Zaqar,将采样数据发给Zaqar服务;
  7. HTTPS,通过SSL发送给REST接口;
  8. Prometheus,发送给prometheus接收网关;
  9. Monasca,将采样数据发送给 Monasca API。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenStack-Ceilometer项目功能与架构介绍 的相关文章

  • kolla 部署 openstack v1.0

    准备 hosts配置 cat lt lt EOF gt gt etc hosts 192 168 179 90 kolla ansible controller 192 168 179 91 kolla ansible compute EO
  • OpenStack之仪表盘服务(Dashboard)

    一 Dashboard的基本 1 概念 OpenStack云计算平台可以通过命令行管理工具使用 或者其他应用通过应用程序接口被其他程序调用 但是都较为麻烦 不够直观 那么Dashboard随机应运而生了 其本质是一个web前端控制台 主要功
  • OpenStack--部署块存储cinder

    通过 cinder 使用 lvm 卷提供后端存储 官方部署文档 https docs openstack org ocata zh CN install guide rdo cinder html 1 数据库准备 1 创建数据库并授权 ro
  • 6G推进组发布《6G总体愿景与潜在关键技术》白皮书!(附PPT及白皮书下载)

    就在昨日 6月6日 我国工信部IMT 2030 6G 推进组正式发布了 6G总体愿景与潜在关键技术 白皮书 白皮书梳理出6G的总体愿景和八大业务应用场景及相应的指标需求 提出了十大潜在关键技术 并阐述了对6G发展中面临的若干关键问题的观点
  • Devstack部署多节点Openstack(转)

    平台工具介绍 操作系统 Windows7 工具 VirtualBox 5 0 24 镜像 ubuntu 14 04 5 server amd64 iso 下载地址 ubuntu14 04 5 server版 DevStack版本 Mitak
  • 关注 OpenStack 的筒子们,福利来啦!

    2017 OpenStack Days China 将于 2017 年 7 月 24 日 25 日 周一至周二 在北京国家会议中心隆重召开 我们非常荣幸能和大家一起见证并打造这样一个强有力的 大规模的云计算标准软件平台 这一次 OpenSt
  • openstack安装之计算服务安装配置笔记

    1 设置本地实验ip 1 1 管理节点和计算节点更改hosts 使用ifconfig查看本地ip地址 vi etc hosts x x x x controller x x x x compute1 1 2 管理节点编辑chrony con
  • OpenStack企业级实战

    一 环境初始化 1 CentOS7一键安装OpenStack 安装参考 Install RDO 前提条件 准备一个8g或16g内存的centos7 有一块网卡可以访问internet 磁盘 40G cpu分2 4线程 cpu要开启虚拟化 r
  • 点滴记录——使用Ganglia监控Openstack Swift状态

    转载请说明出处 http blog csdn net cywosp article details 42304487 在官方文档中有对StatsD来对Swift状态进行监控的描述 http docs openstack org develo
  • OpenStack--实现内外网结构

    类似于阿里云 ECS 主机的内外网 双网卡不通网段 的结构 最终实现内外网区分隔离 https www aliyun com product ecs utm medium text utm source baidu utm campaign
  • Keystone 高可靠性部署与性能测试

    Goal Keystone Region 为跨地域的 Openstack 集群提供了统一的认证和用户租户管理 目前公司在国内外部署了数十套 Openstack 集群 其中既有集群在内网 又有集群在公网 既有 Havana 集群 也有 Ice
  • Linux系统调优 之 《OpenStack平台调度策略优化》

    目录 1 规划节点 2 基础准备 案例实施 1 OpenStack平台报错分析 2 解决策略 1 规划节点 根据云平台分配的主机 节点规划见表1 表1 节点规划 IP 主机名 节点 192 168 200 11 controller 控制节
  • OpenStack常用命令搜集 —— 筑梦之路

    之前学习搭建过OpenStack 好久都没有使用了 这里主要搜集下OpenStack的常用命令 温故而知新 OpenStack 搭建记录 筑梦之路 筑梦之路的博客 CSDN博客 查看日志 日志位置 使用devstack方式部署 默认日志路径
  • 超详细OpenStack一键式部署

    1 准备镜像文件 Cen1 创建新的虚拟机 1 创建虚拟机 点击关闭 2 安装Centos7 密码自己设置 不用跟着一样 2 生成动态IP地址 root localhost dhclient 3 查看生成的IP地址 root localho
  • openstack热迁移机制分析(libvirt热迁移模型、nova热迁移控制逻辑、调试方法)

    前段时间在解决大内存热迁移失败的时候 查阅了下openstack热迁移相关知识 有了一些记录跟大家分享下 以基于L版openstack qemu kvm 跟大家分享下API库libvirt的热迁移机制和nova控制逻辑的一些记录 注 这篇博
  • openstack用户管理笔记

    1 创建项目 1 1 创建项目 需要确认集群环境是否初始化完毕 实验初始化需要几分钟时间 访问控制节点IP dashboard 如果正常弹出登录页面即初始化完毕 假设控制节点IP为172 20 6 22 则访问地址为 172 20 6 22
  • openstack-nova-compute.service起不来

    1 启动服务 2 查看compute nova日志tail var log nova nova compute log 发现身份验证机制AMQPLAIN拒绝登录 3 关闭防火墙 root controller systemctl stop
  • Terraform,如何在现有资源上运行配置程序?

    我的问题与这个 github 帖子类似 https github com hashicorp terraform issues 745 https github com hashicorp terraform issues 745 这也与我
  • 错误:在openstack pike devstack上创建实例时未建立sql_connection参数

    我已经通过以下链接在我的 Ubuntu 16 04 上成功安装了 Openstack Devstack pike https www mirantis com blog how to install openstack on your lo
  • 如何使用 cloud-init 安装 docker?

    我想在 Openstack 中创建实例 在通过 ssh 连接之前 这些实例中已经安装了 Docker 所以我很自然地对 Cloud init 技术感兴趣 因为它允许我们在第一次启动时在虚拟机上安装软件包 所以现在我尝试在启动时在我的实例上安

随机推荐