实现 Ceilometer

日期:

2015-03-31 10:30

标签:

kilo, ceilometer

此蓝图旨在将 Ceilometer 项目添加到 OSAD。它将阐述一种可能的解决方案,希望能进而引发关于如何正确地将 Ceilometer 作为 OSAD 的可选组件来实现的讨论。

问题描述

目前,由于各种原因,OSAD 没有实现 Ceilometer。其中一个原因是该项目在生产环境中的不稳定性质——导致数据库表不断增长,从而导致 API 查询极其缓慢。然而,有些人可能仍然希望部署 Ceilometer,并且可能更愿意在内部处理这个问题。

此外,这些问题不应否定 Ceilometer 作为 OpenStack 项目的可信度,因此,它应该被实现到 OSAD 中。

提议的变更

需要添加一个额外的角色,os_ceilometer,来处理 Ceilometer 服务的安装/配置。此外,还需要将额外的配置指令添加到其他项目(例如 cinder、nova、glance 等),以便它们生成通知。

对于数据库,/etc/openstack_deploy/conf.d/ceilometer.yml 应该给用户一个选项,可以选择要连接的数据库。此 BP 不实现 Ceilometer 的额外数据库的部署,但可以讨论将其作为潜在的补充。

此外,新的主机组将被添加到 env.d/ceilometer.yml 文件中,以便用户可以指定将中央代理程序安装到哪些基础设施节点上,以及将计算代理程序安装到哪些计算节点上。对此文件的提议更改如下

component_skel:
  ceilometer_agent_compute:
    belongs_to:
    - ceilometer_all
  ceilometer_agent_central:
    belongs_to:
    - ceilometer_all
  ceilometer_agent_notification:
    belongs_to:
    - ceilometer_all
  ceilometer_collector:
    belongs_to:
    - ceilometer_all
  ceilometer_alarm_evaluator:
    belongs_to:
    - ceilometer_all
  ceilometer_alarm_notifier:
    belongs_to:
    - ceilometer_all
  ceilometer_api:
    belongs_to:
    - ceilometer_all

container_skel:
  ceilometer_api_container:
    belongs_to:
      - metering-infra_containers
    contains:
      - ceilometer_agent_central
      - ceilometer_agent_notification
      - ceilometer_collector
      - ceilometer_alarm_evaluator
      - ceilometer_alarm_notifier
      - ceilometer_api
    properties:
      service_name: ceilometer
      container_release: trusty
  metering-compute_container:
    belongs_to:
    - metering-compute_containers
    contains:
    - ceilometer_agent_compute
    properties:
      service_name: ceilometer
      container_release: trusty
      is_metal: true

physical_skel:
  metering-compute_containers:
    belongs_to:
    - all_containers
  metering-compute_hosts:
    belongs_to:
    - hosts
  metering-infra_containers:
    belongs_to:
    - all_containers
  metering-infra_hosts:
    belongs_to:
    - hosts
显著变更
  • 新的 ceilometer 角色

  • 新的 ceilometer playbook

  • 一个 openstack_user_config.yml 文件,位于 openstack_deploy/conf.d/ 目录中,专门用于 ceilometer 配置。

  • 在适当的文件中添加变量

  • Ceilometer API 的 Haproxy 配置更改。

备选方案

不要这样做。

Playbook 影响

Ceilometer 组件应该是可选的。因此,当未选择运行时,它不应影响其他 playbook。但是,当选择运行时,可以更改不同项目的其他配置以允许通知。

升级影响

目前尚无已知问题

安全影响

用户可能需要指定 Ceilometer 数据库的凭据,因为此 BP 目前不实现 Ceilometer 数据库的部署。

性能影响

当启用 ceilometer 时,由于 ceilometer 的大型 API 响应,horizon 仪表板可能会变慢。这与问题描述中陈述的问题有关。我们必须让用户了解这个已知问题,并建议正确监督 ceilometer 数据库。当 ceilometer 被禁用时,它不应产生任何性能影响。

最终用户影响

用户现在可以选择在其私有云上启用 ceilometer。

部署者影响

只有当部署者希望启用 ceilometer 时,才需要在 /etc/openstack_deploy/conf.d/ceilometer.yml 中指定其他配置。

部署者需要了解将用于 ceilometer 的数据库。

开发人员影响

将创建一个新角色来处理 Ceilometer 的安装/配置。该角色将由部署者显式运行。

依赖项

N/A

实现

负责人

主要负责人

Miguel Alejandro Cantu Sudarshan Acharya

其他贡献者:

工作项

至少,需要完成以下工作
  • 新的 ceilometer 角色

  • 新的 ceilometer playbook

  • 一个 openstack_user_config.yml 文件,位于 openstack_deploy/conf.d/ 目录中,专门用于 ceilometer 配置。

  • 在适当的部分中添加变量。

  • Ceilometer API 的 Haproxy 配置更改。

需要修改以下文件

  • etc/openstack_deploy/env.d/openstack_environment.yml

  • etc/openstack_deploy/user_secrets.yml

  • etc/openstack_deploy/user_variables.yml

  • playbooks/inventory/group_vars/all.yml

  • playbooks/vars/configs/haproxy_config.yml

  • playbooks/vars/repo_packages/openstack_services.yml

  • playbooks/roles/os_cinder/defaults/main.yml

  • playbooks/roles/os_cinder/templates/cinder.conf.j2

  • playbooks/roles/os_glance/defaults/main.yml

  • playbooks/roles/os_glance/templates/glance-api.conf.j2

  • playbooks/roles/os_glance/tempaltes/glance-registry.conf.j2

  • playbooks/roles/os_heat/defaults/main.yml

  • playbooks/roles/os_heat/templates/heat.conf.j2

  • playbooks/roles/os_nova/defaults/main.yml

  • playbooks/roles/os_nova/templates/nova.conf.j2

  • playbooks/roles/os_swift/defaults/main.yml

  • playbooks/roles/os_swift/tasks/swift_service_setup.yml

  • playbooks/roles/os_swift/templates/proxy-server.conf.j2

需要添加以下文件

  • etc/openstack/deploy/conf.d/ceilometer.yml.example

  • playbooks/os-ceilometer-install.yml

  • playbooks/roles/os_ceilometer/

    • CONTRIBUTING.rst

    • LICENSE

    • README.rst

    • defaults/

      • main.yml

    • handlers/

      • main.yml

    • meta/

      • main.yml

    • templates/

      • ceilometer.conf.j2

      • api_paste.ini.j2

      • ceilometer-upstart-init.j2

      • event_definitions.yaml.j2

      • event_pipeline.yaml.j2

      • pipeline.yaml.j2

      • sudoers.j2

    • tasks/

      • main.yml

      • ceilometer_install.yml

      • ceilometer_pre_install.yml

      • ceilometer_post_install.yml

      • ceilometer_service_setup.yml

      • ceilometer_service_add.yml

      • ceilometer_upstart_common_init.yml

      • ceilometer_upstart_init.yml

测试

需要修改门控脚本,启用 Ceilometer 配置。将添加一个类似“DEPLOY_CEILOMETER”的变量,并在适当的条件中,使用 mongodb 服务器进行测试部署 Ceilometer。

playbooks 将指向在 AIO 上部署的 mongodb 服务器。将创建一个门控脚本,使用 ansible galaxy 角色在 AIO 上部署一个简单的 mongodb 服务器。

文档影响

需要创建详细的文档,解释如何启用 Ceilometer。

参考资料