李哲,现 Cloudinsight技能 负责人 ,专注于灵敏 开辟 ,测试驱动开辟 ,代码质量与流程管理,DevOps ,如今 重要 研究方向为基于 Spring Boot 与 Spring Cloud 的微服务开辟 。在民航,电力等国企,中小创业公司积聚 了很多 大型项目以及创业项目标 履历 ,善于 基于 Ruby,Java的体系 开辟 ,同时也喜好 研究各种小众技能 。
比年 来越来越多的厂商和机构利用 OpenStack搭建 IaaS 层等底子 架构方面的云服务 ,从而使得 OpenStack 的发展得到 了巨大的推动。
但对于如许 一个巨大 的架构,可以或许 让其稳固 而又高效的运转起来也不是一件易事,因此怎样 实现一个强大 、健全 、可扩展的 OpenStack 监控体系 也成为当下很多 人关注 OpenStack 时所要思量 的紧张 部分 。
与此同时随着 OpenStack 上节点数量 和所需监控对象的数量 的增长 ,监控体系 也俨然成为一个云平台非常紧张 的特性,也是评估一个 OpenStack 的可运维程度 的参考 。
起首 我们先来相识 下到底什么是 OpenStack 以及其相干 构成。
什么是 OpenStack
OpenStack 是一个美国国家航空航天局和 Rackspace 相助 研发的 IaaS 软件,让任何人都可以自行创建 和提供云端运算服务。别的 ,OpenStack 也用作创建 防火墙内的私有云,提供机构或企业内各部分 共享资源 。简单 来说,OpenStack 就是一个提供私有化摆设 的 Amazon Web Services。履历 5 年的发达 发展,参加 OpenStack 阵营的已经包罗 Google、惠普、IBM 和 Intel。
对于 OpenStack 来说 ,其盘算 模块 Nova 是整个体系 中紧张 的构成 部分
OpenStack 模块构成
既然提到 Nova ,那么就有须要 说说 OpenStack 的模块构成 。OpenStack 由以下 5 个紧张 模块构成:
Nova - 盘算 服务
Keysyone - 认证服务
Glance - 镜像服务
Neutron - 假造 网络服务
Cinder - 存储服务
Horizon - UI 组件
总的来说,OpenStack 就像 AWS 提供假造 盘算 单位 EC2 ,假造 存储 S3,假造 网段 VPC等。而这些相互独立的模块构成 了一套完备 的云盘算 服务平台;假如 加上面向对象的存储 Swfit,资源监控 Ceilometer 和云体系 摆设 Heat ,那么这个云盘算 服务平台会更加完备 。
下面我们来先容 与 OpenStack 监控关系最精密 的 3 个模块:Nova、Keystone 和 Neutron,方便各人 更好地明白 和搭建 OpenStack 监控体系 。
Nova
Nova 功能及特点:
实例生命周期管理
盘算 资源管理
网络与授权管理
基于 REST 的 API
异步连续 通讯
支持各种宿主:Xen 、XenServer/XCP、KVM、UML 、VMware vSphere 及 Hyper-V
基于 Nova 的功能,在举行 OpenStack 监控时可以关注以下数据:
openstack.nova.current_workload:当前 Nova 的 Workload ,包罗 build, snapshot, migration, resize 各种动作的负载。
openstack.nova.running_vms:当前 Nova 在运行的假造 机和实例(instance)的数量 。
openstack.nova.hypervisor_load.1:hypervisor 相干 指标;除了一分钟内体系 负载外,还包罗 disk, ram, cpu 等相干 指标 。
openstack.nova.limits.max_personality:和 project 和租户相干 的指标;包罗 除 personality 外的 image, security 相干 指标。
OpenStack 内部在依照 AMQP(高级消息队列协议)的底子 上,基于 Rabbit MQ 作为其消息队罗列 行 通讯 。Nova 对哀求 应答举行 异步调用 ,当哀求 吸取 后便则立即 触发一个回调。由于利用 了异步通讯 ,不会有效 户的动作被长置于等待 状态 。比方 ,启动一个实例或上传一份镜像的过程较为耗时,API调用就将等待 返回结果 而不影响别的 操纵 ,在此异步通讯 起到了很大作用,使整个体系 变得更加高效。
Neutron Keystone
Neutron 为 OpenStack提供假造 网络管理服务,来使得网络设置 更为简单 。Keystone 为全部 的 OpenStack组件提供认证和访问战略 服务 ,它依靠 自身 REST(基于 Identity API)体系 举行 工作,重要 对(但不限于)Swift、Glance、Nova 等举行 认证与授权 。究竟 上,授权通过对动作消息泉源 者哀求 的合法 性举行 判定 。
这些 OpenStack 指标值得关注
OpenStack 复杂程度 让 Gartner在面对 企业咨询 OpenStack 搭建私有云时 ,会扣问 3 个题目 :
你的业务必要 搭建在一个 IaaS 私有云平台上吗?
你有技能 和资源来支持这么复杂的项目吗?
像 OpenStack 如许 的开源框架符合 你的工作环境 吗?
可见 OpenStack 并不是一个很轻易 上手的工程。幸亏 国内出现了 OpenStack 中国社区,和 Cloudinsight如许 的构造 ,资助 企业和开辟 者更好地利用 OpenStack 。
为了资助 您更好地监控OpenStack ,以下通过相干 提取出的指标和图例,告诉您哪些指标值得关注,从而快速上手 OpenStack 监控。
如上文所述 ,对于 OpenStack 来说以下几类指标的监控是必要 关注的:
Hypervisor 指标 - 运行的假造 机数量 ,hypervisor 自身负载等;
Nova Server 指标 - 磁盘的读写速率,RAM 相干 指标等;
Tenant 指标 - 资源利用 环境 ,CPU 核数等;
Message Queue 指标 - MQ 的巨细 等
Nova 以管理平台的身份登场 ,负责管理整个云的盘算 资源 、网络、授权及测度。它原生支持 KVM, QEMU 宿主,也提供 Xen, VMware vSphere 及 Hyper-V 的支持 。Nova 兼容 AWS 的 EC2 和 S3 API,就像 AWS 通过 Nova 我们可以方便地移植应用 ,镌汰 应用的摆设 时间。
Nova 指标就包罗 了 Hypervisor, Nova Server, Tenant 指标。通过 Hypervisor 指标可以相识 到体系 的团体 运行环境 和负载,而 Nova Server 指标可以相识 某个假造 机的运行环境 ,Tenant 指标则是可以查察 相干 租户的资源利用 环境 。
Hypervisor 指标
为了方便更加方便明白 ,在此我们提取了以下 7 个指标,来查察 Hypervisor 的性能。由上图可知,Hypervisor 主导 Nova 模块中与盘算 相干 的部分 。
hypervisor_load - 该指标表征体系 负载 ,有点雷同 操纵 体系 的system.load.1 指标,标识已往 1 分钟内体系 负载。假如 体系 负载上升,一样平常 来说相干 的假造 机的指标也会上升 ,此时必要 针对性能举行 优化 。
current_workload - 一样平常 来说,hypervisor 任务 包罗 :build, snapshot, migrate, resize;该指标表现 当前任务 数量 ,由于 hypervisor 和假造 机共用 IO 资源,若当前任务 任务 数量 过高 ,一样平常 来说会导致 IO 瓶颈题目 。
running_vms - 当前运行的假造 机数量 。通过数据聚合功能,您可以相识 整个平台的假造 机数量 ,加上体系 负载和任务 数量 ,您可以相识 到 OpenStack 团体 的运行环境 。
vcpus_available- 当前 CPU 利用 环境 在生产环境 下一样平常 是保持稳固 的。您可以通过设置该指标的报警,来监控该指标的变革 ,从而猜测 非常 。而在开辟 环境 中 ,该指标无明显 的监控意义 。越高的 CPU 数量 代表您有越多的资源提供给用于盘算 的主机,若该指标出现陡然低落 的环境 ,那代表您必要 增设呆板 了。
free_disk_gb - 磁盘的空闲环境 ,直接影响是否可以新建假造 机。关注该指标可以相识 到何时必要 对占用磁盘空间较大的实例举行 迁徙 。
free_ram_mb - 和磁盘的空闲环境 相似,RAM 的空闲环境 也是一个非常值得关注的环境 ,属于关键资源。
Nova Server 指标
关注 Nova Server 指标可以相识 重要 节点的信息 ,如每个节点向 Nova 发送哀求 的数量 ,从而猜测 是否存在 Noisy Neighbor Problem。
若想要相识 每个实例(假造 机)的具体 指标,如 CPU 利用 率、内存 、网络等指标,您可以利用 Cloudinsight 或 Zabbix类的监控工具将其 Agent 安装至每个假造 机内部 。通过标签来举行 数据聚合和分组 ,可以到达 更专业化的监控程度 。
hdd_read_req - 在假造 环境 中,每个进程 的 RAM 利用 量黑白 常 有限的。查察 HDD 的读哀求 数量 ,就意味着监控 Nova 节点的假造 机的基天性 能。举例来说 ,若该指标出现峰值,就意味着假造 机的 RAM 太小了,从而导致较小的分页 ,继而使得对 HDD 的读哀求 数量 激增 。此时您就必要 对 Nova 集群举行 性能排查啦。
Tenant 指标
Tenant 这个概念在一年前被讨论得蛮火的,特别 是国内 SaaS厂商鼓起 了以后。租户简单 来说,就是一组用户啦 。给差别 组的用户分配不一样的资源 ,可以到达 资源的公道 分配,从而到达 长处 的最大化。
监控租户相干 指标,也就意味着在监控与业务相干 的指标。
total_cores_used max_total_cores - Core 作为紧张 的资源 ,相识 其利用 环境 ,来辅助决定 是否必要 在激增的环境 下,多分配资源;是否必要 在连续 较低利用 率的环境 下,镌汰 资源分配 。
total_instances_used max_total_instances - Instance 数量 也就是假造 机数量 ,和 core 一样是紧张 的资源。监控租户的当前利用 量,和最大分配量,可以资助 决定 是否必要 为该租户增加 资源。
RabbitMQ指标
RabbitMQ指标又是什么呢?正如上文所说 ,OpenStack 内部在依照 AMQP(高级消息队列协议)的底子 上,基于 Rabbit MQ 作为其消息队罗列 行 通讯 。
也就是说,监控 RabbitMQ 指标意味着监控 OpenStack 环境 的团体 环境 ,毕竟 通讯与停止 还是 蛮紧张 的一件事变 的啦。
consumer_utilisation - 抱负 环境 下,该指标保持在 100% 数值下是最好的,这意味着每个队列都可以及时 地处理 惩罚 新消息。网络拥堵和 Comsumer Prefetch 都会低落 该指标的数值 。SO SAD!
memory - 和大多数 MQ 一样 ,RabbitMQ 会在内存不敷 用的环境 下调用磁盘。加上磁盘分页而导致的吞吐量增长 ,很轻易 使得内存利用 量高出 体系 RAM 的 40%(默认值),RabbitMQ 会优先对消息生产者举行 节流 。Duang!性能题目 就产生了。
count - 发起 为该指标设置指标报警战略 ,当数值为 0 时,触发报警 。毕竟 有效 队列的数量 是 0,那是相称 可骇 的事变 呢。
consumers - 和 count 一样,设置个报警比力 好。该指标为 0 是一件如同 伏地魔重生的事变 。若您不幸碰到 该环境 ,我们保举 以下两种方式:Aliveness Testing 和StackTach 工具。
Cloudinsight 作为国内首家支持 OpenStack 监控的监控工具,在此,我们盼望 已经利用 OpenStack 的企业和开辟 者 ,来试用 Cloudinsight OpenStack 监控 Beta 版本;帮 Cloudinsight 可以或许 更好地优化 OpenStack 监控的功能。
本文系 OneAPM工程师编译整理 。OneAPM是国内领先的针对应用程序的一站式应用性能管理平台,OneAPM Cloud Insight集监控、管理、盘算 、协作、可视化于一身,资助 全部 IT 公司 ,镌汰 在体系 监控上的人力和时间本钱 投入,让运维工作更加高效、简单 。想阅读更多技能 文章,请访问 OneAPM 官方技能 博客。