云计算国产化之路 vnc登录 文件系统直通(virtio-9p) 扩展qemu接口 gpg WARNING 珍藏博客 虚拟内存情况dommemstat分析 免密码自动登录脚本 Linux网桥 测试网段IP占用情况 Linux 进程状态 systemc强制依赖 调试openstack ut uefi p2v 重做ubuntu内核 virsh创建虚拟机简介 virtio IO路径 虚拟化层升级后磁盘无法卸载卷 vmtouch使用 Taint flags 主机和虚拟机文件共享处理的几种方法 kvm分析工具 kvm中对磁盘的io cache 虚拟化不同导致的guestos中软件安装差异(未解决) 设备直通(PCI Assignment)到底是咋整的 virtio到底是咋整的 内核启动参数 虚拟化实时性提升(零)之配置步骤 中断虚拟化(pic)到底是咋整的 中断虚拟化(apic)到底是咋整的 Raid卡配置丢失导致服务器无法启动 tainted kernels cpu stuck for 23s问题分析 虚拟化实时性提升(一)之hostOS切换为强实时系统 内存虚拟化到底是咋整的 qemu-kvm中vcpu虚拟化到底是咋整的 风河虚拟化技术点分析 使用qga的好处 qemu迁移代码分析 虚拟机串口配置及其导出到主机pts和console.log System-based I/O vs. Raw I/O 虚拟机使用Hugepage(大页) 硬件辅助分页(hardware assisted paging) 修改centos7默认启动项目 virtio的工作流程——kernel中virtio-pci初始化(2) virtio的工作流程——qemu中virtio-backend初始化(1) qmp ceilometer取不到memory.usage指标 Virtio-Balloon超详细分析 slabtop输出 虚拟机磁盘cache导致的host os kernel崩溃 虚拟机cpu和memory性能优化测评 PCI配置空间(PCI Configuration Space) centos下网卡设备直通(VT-dpci passthrough)遇到的问题及其解决思路 libguestfs详解 yum卸载软件包及其依赖 通过原始Centos ISO来定制自己的ISO centos下网卡设备直通(VT-d,pci passthrough) (占位符)window虚拟机中拔盘如何通知到libvirt和qemu后端的 cirrus漏洞分析CVE-2017-2615 XSA-208 qcow2随笔 控制寄存器概览 ceilometer对接postgresql 解压initrd和vmlinuz qemu guest agent验证 QEMU升级指南(待续) ubuntu中kdump的配置 qemu(2.3)接口梳理 热迁移导致的FC存储场景下的multipath卷残留问题分析 virsh命令(4)secret,snapshot,pool,volume部分 virsh命令(3)之interface,filter,network virsh命令(2)monitor,host,nodedev部分 virsh命令(1)之domain部分 QEMU内存管理之FlatView模型(QEMU2.0.0) ovirt基于sanock的高可用(主机粒度HA) Sanlock防脑裂场景功能测试用例 gnocchi配置及与ceilometer对接指南 make patch for libvirt in centos centos使用sanlock指导 高可用nfs资料 ubuntu14中使用sanlock指导 LVM操作指南 sanlock相关功能验证流程汇总 make patch for libvirt in ubuntu libvirt.so.0-version `LIBVIRT_PRIVATE_1.2.7' not found gdb debug libvirt 基于ubuntu社区源码包编译libvirt compile libvirt(centos) No PCI buses available nfs lead to Linux halt nfs install and config anti-virus for cloud platform nova fetch image from glance(something about _base) token auth process ovs入门指南 virt software anti-virus something about ceilometer disk sample context interview questions openstack vm injection openstack Restful and RPC murano 概览 创建虚拟机流程(compute节点)之网络创建 创建虚拟机流程之compute_api之虚拟机实例填充之配额检测 创建虚拟机流程之compute_api之基本参数生成 创建虚拟机流程之compute_api 创建虚拟机流程(主) 创建虚拟机之image 创建虚拟机流程之准备网桥 创建虚拟机流程之virt 创建虚拟机流程之compute节点 CI/CD研发流程之工程创建 CI/CD研发流程之代码合入 CI/CD研发流程之UT(单元测试) 向openstack社区合入代码记 openstack/ceilometer/gnocchi杂谈 影子页表原理 mem_add(exec.c) qemu编译安装调试 openstack/ceilometer/gnocchi之Grafana简介 openstack wiki etcd openstack计量ceilometer openstack计费cloudKitty enventlet backdoor USB 安装VMWARE ESX pycharm设置指南 无法执行modprobe -a kvm-intel解决办法 QEMU配置项 网络不通小记 libvirt之XML(虚拟机定义文件) openstack-horizon 证书认证 ceilometer与ceph对接 openstack定时任务剖析(TODO) 服务器重启后mongodb进程无法启动 ubuntu14下新增openstack服务到service的导引 ERROR 1045(28000)-数据库连不上 Python两个内置函数—locals和globals unknown exit, hardware reason 31

openstack/ceilometer/gnocchi杂谈

2015年10月03日

注1:

当前在ceilometer中event可以和meter分别存储。
event数量少,且形式规整,也就是说怎么存都行。
故下文所提的sample,meter均指的是除了event外的meter
(ceilometer里面指标叫meter,对应的值叫sample,gnocchi里的指标叫metric)

注2:官网地址:http://gnocchi.xyz/architecture.html


序言

ceilometer设计的目标是作成一个通用框架,各式各样的数据都可以在这个框架内流动。
指标数据从“虚拟机的cpu使用率”到“物理主机的风扇转速”等等,涵盖了云系统的方方面面。
(ceilometer的meter合集见这里)

另外,为了数据的弹性,ceilometer没有严格的要求数据格式,比如数据中允许存在meatadata,这就造成了数据的不规整。
数据不规整给数据的存储(见上图左下角database部分)造成一定的困扰。

首先SQL无法满足要求,因为数据长短不一,规划短了存不下,规划长了浪费空间,不好规划。
有人提出,不是有NOSQL的数据库(比如mongodb)嘛,数据过来直接扔到里面。

这样貌似解决了问题。
可这种方案,数据量小的时候可行.
ceilometer中收集到的数据量是亿为单位的。
这样一来,检索的瓶颈集中到后端存储了。
(mongo官方推荐一次把数据全查出,再逻辑处理,不推荐条件查询,这不扯嘛)。

思路

其实归根结底,是一开始ceilometer没有想好数据如何处理、查询、存储。
仔细想想,收集到的数据就是时间序列上的资源值,比如某个时间点特定虚拟机的cpu使用率等。
有个时间点,有个值,上游的监控组件、告警组件、计费组件无非就是要这些东西。

由此,jd整出了gnocchi项目。
将数据裂化成两部分(index和storage):

index driver:存资源索引值(resource)

如下图,是我环境中的资源列表,可见从计算到存储到网络,涵盖了几大类。

show一个resource的结果,可见这个资源(也就是虚拟机网卡)关联了如图这么多指标。

小结

好,然我们回头梳理下所以内容,也就是下图:

数据让gnocchi来处理,把数据拆成两部分,一部分通过storage driver存储,一部分通过index driver存储。
这样检索数据的时候,通过index找到资源,然后再找到对应的metric,然后获取到metirc的measure信息
复杂度由o(n)降为O(1)或者o(r)

后端处理


MetricReporting的审计进程,实时审计数据处理状态
包含处理了多少metirc,还有多少metirc亟待处理。

安装配置

安装

devstack

(安装devstack时候建议用干净的系统,本人在此浪费较多时间)
enable_plugin gnocchi https://github.com/openstack/gnocchi master
enable_service gnocchi-api,gnocchi-metricd
在devstack的local.conf中增加这两个配置项即可。

pip

pip install gnocchi
pip install gnocchi[postgresql,ceph,keystone]

注意:pip安装的不是最新的版本,会存在一系列bug,需要进行升级。

souce code

从源码安装

配置

与ceilometer对接

与Grafana对接

具体可参见本人Grafana的那篇博文