`
cloudinsight
  • 浏览: 2165 次
文章分类
社区版块
存档分类
最新评论

不能监控 Openstack 的监控工具,不是好监控

阅读更多

Cloudinsight 在 15 年年底的时候,成为了国内首家支持 Docker 监控的监控工具。Cloudinsight 一直跟随架构栈的技术变迁,满足不同企业和开发者的监控需求,所以在这炎热和雷雨交替的夏天,Cloudinsight 又一次开启了国内 OpenStack 监控的先河。

什么是 OpenStack

OpenStack 是一个美国国家航空航天局和 Rackspace 合作研发的 IaaS 软件,让任何人都可以自行建立和提供云端运算服务。此外,OpenStack 也用作建立防火墙内的私有云,提供机构或企业内各部门共享资源。

简单来说,OpenStack 就是一个提供私有化部署的 Amazon Web Services。经历 5 年的蓬勃发展,加入 OpenStack 阵营的已经包括 Google、惠普、IBM 和 Intel。

在 Cloudinsight Agent 4.7.0 版本中,已经加入了 OpenStack 监控。其中包括计算模块 Nova 的监控。

OpenStack 模块构成

既然提到 Cloudinsight 支持 Nova 的监控,那么就有必要说说 OpenStack 的模块构成。OpenStack 由以下 5 个重要模块构成:

  1. Nova - 计算服务 
  2. Keysyone - 认证服务 
  3. Glance - 镜像服务 
  4. Neutron - 虚拟网络服务 
  5. Cinder - 存储服务 
  6. Horizon - UI 组件

总的来说,OpenStack 就像 AWS 提供虚拟计算单元 EC2,虚拟存储 S3,虚拟网段 VPC等。而这些相互独立的模块组成了一套完整的云计算服务平台;如果加上面向对象的存储 Swfit,资源监控 Ceilometer 和云系统部署 Heat,那么这个云计算服务平台会更加完整。

下面我们来介绍与 Cloudinsight 监控相关的 3 个模块:Nova、Keystone 和 Neutron,方便您更好地使用 Cloudinsight Agent。

Nova

Nova 是 OpenStack 计算的弹性控制器。OpenStack 云实例生命期所需的各种动作都将由 Nova 进行处理和支撑,这就意味着 Nova 以管理平台的身份登场,负责管理整个云的计算资源、网络、授权及测度。虽然Nova 本身并不提供任何虚拟能力,但是它将使用 libvirt API 与虚拟机的宿主机进行交互。Nova 通过 Web服务 API 来对外提供处理接口,而且这些接口与 Amazon 的 Web 服务接口是兼容的。

Nova 功能及特点:

  • 实例生命周期管理
  • 计算资源管理
  • 网络与授权管理
  • 基于 REST 的 API
  • 异步连续通信
  • 支持各种宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere 及 Hyper-V

基于 Nova 的功能,Cloudinsight 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 相关指标。

更全面的监控指标和指标涵义,请参考 Cloudinsight OpenStack 监控 • 文档

OpenStack 内部在遵循 AMQP(高级消息队列协议)的基础上,基于 Rabbit MQ 作为其消息队列进行通信。Nova 对请求应答进行异步调用,当请求接收后便则立即触发一个回调。由于使用了异步通信,不会有用户的动作被长置于等待状态。例如,启动一个实例或上传一份镜像的过程较为耗时,API调用就将等待返回结果而不影响其它操作,在此异步通信起到了很大作用,使整个系统变得更加高效。

Cloudinsight 支持 RabbitMQ 相关监控,在配置 OpenStack 监控时,可以开启 RabbitMQ 相关监控

Neutron & Keystone

Neutron 为 OpenStack 提供虚拟网络管理服务,来使得网络配置更为简单。

Keystone 为所有的 OpenStack 组件提供认证和访问策略服务,它依赖自身 REST(基于 Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova 等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定。

目前 Cloudinsight Agent 可以获知这两个模块的 UP 或 DOWN 的状态,更多指标的监控,敬请期待吧。

如何使用 Cloudinsight 监控 OpenStack

相对于 Cloudinsight 其他监控来说,配置 OpenStack 还是稍微有些复杂的。大体上分为几步:

  1. 为 Cloudinsight 创建角色; 
  2. 为该角色赋予 Nova, Neutron, Keystone 相关权限; 
  3. 开启 Cloudinsight Agent 中 openstack.yaml 配置文件,告知 OpenStack 相关配置; 
  4. 配置 RabbitMQ 监控; 
  5. 重启 Cloudinsight Agent。

为了您更多地了解 OpenStack 相关信息和监控基础知识,我们就快速地介绍一下如何配置。更为详细的配置,请前往 Cloudinsight OpenStack 监控 • 文档

创建角色

使用 Cloudinsight 监控 Openstak 前,需要在 Openstack 为 Cloudinsight Agent 创建单独的角色,确保 Keystone 模块可以让 Agent 访问指标数据。

openstack role create cloudinsight_monitoring  
openstack user create cloudinsight --password my_password --project my_project_name  
openstack role add cloudinsight_monitoring --project my_project_name --user cloudinsight  

配置权限

需要编辑 Openstack 3 个模块 Nova, Neutron, Keystone 来让 role:cloudinsight_monitoring 获取相应权限。

一般来说,Nova 的权限文件会在 /etc/nova/policy.json 路径下。打开并新增如下权限。

    - "compute_extension:aggregates",
    - "compute_extension:hypervisors",
    - "compute_extension:server_diagnostics",
    - "compute_extension:v3:os-hypervisors",
    - "compute_extension:v3:os-server-diagnostics",
    - "compute_extension:availability_zone:detail",
    - "compute_extension:v3:availability_zone:detail",
    - "compute_extension:used_limits_for_admin",
    - "os_compute_api:os-aggregates:index",
    - "os_compute_api:os-aggregates:show",
    - "os_compute_api:os-hypervisors",
    - "os_compute_api:os-hypervisors:discoverable",
    - "os_compute_api:os-server-diagnostics",
    - "os_compute_api:os-used-limits"

告知 Cloudinsight

接下来,需要前往 Cloudinsight Agent 的平台服务配置文件中,新增 Openstack 相关配置。

# 修改 keystone_server_url 配置项
# 通常来说,默认的端口号为 5000
init_config:  
  keystone_server_url: "https://my-keystone-server.com:port/"

# 除此之外,您还需要前往 <yourHorizonserver>/identity 查询您的 Project ID 来修改配置项 id
# 以下是示例
instances:  
    - name: instance_1
      auth_scope:
          project:
              id: b9d363ac9a5b4cceae228e03639357ae
      # 前往配置项的 User credentials 部分,修改角色的账户和密码
      user:
          password: my_password
          name: cloudinsight
          domain:
              id: default

配置 RabbitMQ

想要快速开启 RabbitMQ,可以使用以下指令安装 RabbitMQ 监控插件:

rabbitmq-plugins enable rabbitmq_management  

重启 Rabbit 使插件生效。安装成功后,插件为您创建 URL: http://localhost:15672/api/ 来展示指标数据,而 Cloudinsight 也是通过该地址采集指标数据。

service rabbitmq-server restart  

在 etc/conf.d/rabbitmq.yaml 中添加该地址:

instances:  
    -  rabbitmq_api_url: http://localhost:15672/api/
       rabbitmq_user: guest # defaults to 'guest'
       rabbitmq_pass: guest # defaults to 'guest'

重启 Agent

重启 Cloudinsight Agent,使配置生效 。

/etc/init.d/cloudinsight-agent restart

至此,Cloudinsight Openstack 配置已经完成。为什么需要使用 Cloudinsight 来监控 OpenStack 呢?何必使用 Ceilometer 呢?

我们先来看一下 Ceilometer 提供的数据:

| Period    | Period Start   | Max | Min | Avg | Sum | Count | Duration |
| 10000000    | 22046-12-05T07:43:18  | 0.0 | 0.0 | 0.0 | 0.0 | 17    | 11273.0 |

再来看看 Cloudinsight 提供的 OpenStack 默认监控样式:

Cloudinsight 不仅拥有更好的易读性,还提供指标数据的多维度聚合,能够帮助您更好地定位问题。具体的操作可以进一步了解 Cloudinsight 数据聚合的功能。

这些 OpenStack 指标值得关注

OpenStack 复杂程度让 Gartner 在面对企业咨询 OpenStack 搭建私有云时,会询问 3 个问题:

  • 你的业务需要搭建在一个 IaaS 私有云平台上吗?
  • 你有技术和资源来支持这么复杂的项目吗?
  • 像 OpenStack 这样的开源框架合适你的工作环境吗?

可见 OpenStack 并不是一个很容易上手的工程。好在国内出现了 OpenStack 中国社区,和 Cloudinsight 这样的组织,帮助企业和开发者更好地使用 OpenStack。

以下,Cloudinsight 会帮助您更好地监控 OpenStack,通过相关提取出的指标和图例,告诉您哪些指标值得关注,从而快速上手 OpenStack 监控。

如上文所述,Cloudinsight 支持 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 指标

Cloudinsight 为您提取了以下 7 个指标,来查看 Hypervisor 的性能。由上图可知,Hypervisor 主导 Nova 模块中与计算相关的部分。

指标 描述
hypervisor_load 系统负载
current_workload 当前 hypervisor 运行任务的数量
hypervisor_up 启停状态
running_vms 运行的虚拟机数量
vcpus_available 当前可用的 CPU 数量
free_disk_gb 当前可用的磁盘空间,默认单位 GB
free_ram_mb 当前可用的 RAM 大小,默认单位 MB

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 Agent 安装至每个虚拟机内部。通过标签来进行数据聚合和分组,可以达到更牛掰的监控程度。

指标 描述
hdd_read_req 每秒读请求的数量

hdd_read_req - 在虚拟环境中,每个进程的 RAM 使用量是十分有限的。查看 HDD 的读请求数量,就意味着监控 Nova 节点的虚拟机的基本性能。举例来说,若该指标出现峰值,就意味着虚拟机的 RAM 太小了,从而导致较小的分页,继而使得对 HDD 的读请求数量激增。此时您就需要对 Nova 集群进行性能排查啦。

Tenant 指标

Tenant 这个概念在一年前被讨论得蛮火的,特别是国内 SaaS 厂商兴起了以后。租户简单来说,就是一组用户啦。给不同组的用户分配不一样的资源,可以达到资源的合理分配,从而达到利益的最大化。

监控租户相关指标,也就意味着在监控与业务相关的指标。

指标 描述
total_cores_used 租户当前使用 core 数量
max_total_cores 分配给租户最大 core 数量
total_instances_used 租户当前使用 instance 数量
max_total_instances 分配给租户最大 instance 数量

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 接收新消息的时间占比
memory 当前队列的大小
count 当前有效队列的数量
consumers 每个队列的消费者数量

consumer_utilisation - 理想情况下,该指标保持在 100% 数值下是最好的,这意味着每个队列都可以及时地处理新消息。网络拥堵和 Comsumer Prefetch 都会降低该指标的数值。SO SAD!

memory - 和大多数 MQ 一样,RabbitMQ 会在内存不够用的情况下调用磁盘。加上磁盘分页而导致的吞吐量增加,很容易使得内存使用量超过系统 RAM 的 40%(默认值),RabbitMQ 会优先对消息生产者进行节流。Duang!性能问题就产生了。

count - 建议为该指标设置指标报警策略,当数值为 0 时,触发报警。毕竟有效队列的数量是 0,那是相当可怕的事情呢。

consumers - 和 count 一样啦,设置个报警比较好。该指标为 0 是一件犹如伏地魔重生的事情。若您不幸遇到该情况,我们推荐以下两种方式:Aliveness Testing 和 StackTach 工具

在此,我们也希望获取已经使用 OpenStack 的企业和开发者,来试用 Cloudinsight OpenStack 监控 Beta 版本;帮助 Cloudinsight 能够更好地优化 OpenStack 监控的功能。

分享到:
评论

相关推荐

    prometheus监控openstack规则

    prometheus监控规则大全 node规则,redis监控,es监控,vmware监控,ipmi监控,ceph监控,etcd监控,k8s监控,mysql监控,openstack监控,os监控,交换机监控,windows监控,cdh监控,calico监控规则监控

    用于监控OpenStack虚拟机,提供监测CPU、内存,使用flask和ajax和boostrap构建实时监控.zip

    首先,该项目的核心功能是监控OpenStack虚拟机的资源使用情况,包括CPU利用率、内存占用、网络接口流量以及磁盘I/O。这些指标对于评估虚拟机性能和健康状况至关重要。通过监控这些参数,管理员可以识别潜在的性能...

    一种openstack环境下针对ironic服务的监控工具及方法.pdf

    一种OpenStack环境下针对Ironic服务的监控工具及方法主要关注的是如何有效地监控OpenStack云平台中的Ironic服务,这是OpenStack中的一个核心组件,专门负责裸机管理。该发明涉及的技术领域是云计算和开放源代码软件...

    基于python的openstack资源监控系统设计与实现

    为了优化 OpenStack 监控模块在功能和可视化方面的不足,确保 OpenStack 实例的稳定运行,设计出一个用于 OpenStack 的监控系统。通 过使用 Libvirt、Python 编程语言、Django 框架、Echarts 等开发技术, 完成了...

    一种基于Grafana的对OpenStack的网络监控方法.pdf

    【发明名称】:一种基于 Grafana 的对 OpenStack 的网络监控方法 【技术背景】: ...对于OpenStack用户来说,这种方法有助于他们更好地监控网络资源,预防和解决潜在的问题,确保服务的稳定性和安全性。

    基于python的openstack资源监控系统设计与实现.docx

    * 功能不完善:OpenStack 监控模块的功能相对有限,无法提供实时的监控和报警功能。 * 可视化不足:OpenStack 监控模块的可视化功能不够强大,无法提供实时的监控数据和报警信息。 三、基于 Python 的 OpenStack ...

    基于OpenStack资源监控系统

    由于现有监控技术大多只针对网格集群监控而设计,不能完全满足云计算平台的特点和实际应用需求,同时,专有的监控系统功能比较单一,只能针对某个领域进行监控。因此,设计一套属于云平台自己的资源监控系统显得尤为...

    OpenStack Operations Feedback loop

    5. 易用性方面的挑战:用户在安装、升级、监控和管理工具方面可能遇到的困难,以及对文档的需求,例如对改善文档、例子/最佳实践的需求,以及对功能存在的不知情和功能未被正确记录的情况。 6. 特定组件的反馈:...

    Programming Your OpenStack Cloud

    - **Aodh**:这是一个事件驱动的报警服务,用于监控OpenStack资源并在达到预设阈值时触发报警。 - **Panko**:这是一个事件服务,记录并检索OpenStack资源的事件历史记录。 - **Senlin**:这是一个集群服务,提供...

    基于python的openstack资源监控系统设计与实现-毕业论文

    为了优化 OpenStack 监控模块在功能和可视化方面的不足,确保 OpenStack 实例的稳定运行,设计出一个用于 OpenStack 的监控系统。通 过使用 Libvirt 、Python 编程语言、Django 框架、Echarts等开发技术, 完成了...

    每天5分钟玩转OpenStack.PDF

    8. **监控与日志**:学习使用OpenStack的监控工具监控资源使用情况,以及如何查看和分析日志。 9. **OpenStack API**:掌握API调用,以便编写自动化脚本或集成OpenStack到其他系统。 10. **社区与生态系统**:了解...

    OpenStack从零开始学

    在实践中,你将学习到如何使用OpenStack命令行工具(如openstack-client)进行操作,以及如何通过API进行自动化部署。此外,对于云计算的基本概念,如虚拟化技术(如KVM)、网络模型(如VLAN和SDN)以及分布式存储...

    OpenStack-原文.pdf

    这份文档提供了详尽的规划、设计和架构建议,旨在确保用户在实施OpenStack时能充分考虑并满足他们的具体需求。OpenStack是一个开源的云计算平台,允许用户创建和管理私有云或公共云服务,涵盖计算、存储、网络等多个...

    OpenStack Essentials

    3. 管理和维护OpenStack云的技巧:涉及如何使用OpenStack的命令行工具和Web界面进行日常管理,例如创建和管理实例、配置网络和安全组、监控系统状态等。 4. 整合和扩展OpenStack集群:讲解如何在现有集群中添加新...

    OpenStack书籍(OpenStack部署实践.pdf+OpenStack Operations Guide.pdf)

    OpenStack是一个开源的云计算平台,它提供了一套全面的基础...通过这两本书籍的学习,无论是初学者还是有经验的IT专业人员,都能获取到从部署到运维OpenStack云环境的全面知识,从而更好地理解和掌握OpenStack技术。

    openstack 中文

    此外,书中可能还会涉及OpenStack的高级功能,如热迁移、自定义策略、监控和报警等。 除了理论知识,实战书籍通常会包含实践步骤和示例,帮助读者在实际操作中掌握OpenStack。读者可能需要在虚拟环境中或者自己的...

    基于OpenStack云资源监控系统设计与实现.docx

    《基于OpenStack云资源监控系统设计与实现》 在当今数字化时代,云计算作为一种高效、灵活的计算模式,已经成为企业和组织的重要技术基础设施。OpenStack作为开源的云计算平台,因其稳定性、可扩展性和高可靠性,被...

    OpenStack 实践操作参考指导 openstack-ops-manual

    OpenStack支持集成多种第三方监控工具,并且自身也提供了一套强大的监控框架。 5. **备份与恢复**:对于重要的数据和服务,备份策略是必不可少的。书中提供了详细的备份方案以及在发生故障时如何进行快速恢复的方法...

    OpenStack Cloud Computing Cookbook

    6. **监控与日志**:了解如何使用 ceilometer进行计量和监控,以及如何处理OpenStack的日志数据,对于确保系统的稳定运行至关重要。 7. **故障排查与性能优化**:书中可能会提供实用技巧来诊断和解决OpenStack环境...

    prometheus监控postgress规则

    prometheus监控规则大全 node规则,redis监控,es监控,vmware监控,ipmi监控,ceph监控,etcd监控,k8s监控,mysql监控,openstack监控,os监控,交换机监控,windows监控,cdh监控,calico监控规则监控

Global site tag (gtag.js) - Google Analytics