启用可用性监控部署

https://blueprints.launchpad.net/tripleo/+spec/tripleo-opstools-availability-monitoring

TripleO 应该部署开箱即用的可用性监控解决方案来服务于超云。

问题描述

目前没有实现这样的功能,除了在底层云堆栈中部署 sensu-server、sensu-api 和 uchiwa(Sensu 控制面板)服务之外。由于在超云节点上没有部署 sensu-client 服务,这段代码是无用的。考虑到潜在的高资源消耗,也应该合理地移除当前的底层云代码,以避免在部署大量超云节点时可能出现的问题。

相反,sensu-server、sensu-api 和 uchiwa 应该部署在独立的节点上,无论是在底层云级别还是在超云级别。因此,sensu-client 部署支持应该足够灵活,以启用连接到外部监控基础设施,或者与部署在专用超云节点上的 Sensu 堆栈连接。

用例摘要

1. sensu-server、sensu-api 和 uchiwa 部署在外部基础设施中;sensu-client 部署在每个超云节点上 2. sensu-server、sensu-api 和 uchiwa 作为单独的 Heat 堆栈部署在超云堆栈中;sensu-client 部署在每个超云节点上

提议的变更

概述

当通过环境文件显式声明时,sensu-client 服务将作为可组合服务部署在超云堆栈上。Sensu 检查必须配置为订阅检查(有关详细信息,请参阅 [0])。每个可组合服务将拥有自己的订阅字符串,这将确保在 Sensu 服务器节点(无论其位于何处)上定义的检查在正确的超云节点上运行。

将实现一种可能性,即在底层云部署的独立节点上部署 sensu-server、sensu-api 和 uchiwa 服务。该独立节点将具有专门用于监控的目的(不仅用于可用性监控服务,而且将来也用于集中式日志记录服务或性能监控服务)。

监控节点将作为单独的 Heat 堆栈部署到超云堆栈,使用 Puppet 和所需的服务的可组合角色。

替代方案

安全影响

额外的服务(sensu-client)将安装在所有超云节点上。这些服务将具有与在监控节点上运行的 RabbitMQ 实例的开放连接,并用于在超云节点上执行命令(检查)。检查定义将驻留在监控节点上。

其他最终用户影响

性能影响

如果我们想避免影响超云中的 OpenStack 部署,我们可以考虑部署单独的 RabbitMQ 和 Redis 用于监控目的。

其他部署者影响

  • Sensu 客户端默认将在所有超云节点上部署,除了监控节点。

  • 新的 Sensu 常用参数

    • MonitoringRabbitHost

      • Sensu 需要连接的 RabbitMQ 主机

    • MonitoringRabbitPort

      • Sensu 需要连接的 RabbitMQ 端口

    • MonitoringRabbitUseSSL

      • Sensu 是否应该使用 SSL 连接到 RabbitMQ

    • MonitoringRabbitPassword

      • Sensu 用于连接的 RabbitMQ 密码

    • MonitoringRabbitUserName

      • Sensu 用于连接的 RabbitMQ 用户名

    • MonitoringRabbitVhost

      • 用于监控目的的 RabbitMQ vhost。

  • 新的 Sensu 服务器/API 参数

    • MonitoringRedisHost

      • Sensu 需要连接的 Redis 主机

    • MonitoringRedisPassword

      • Sensu 用于连接的 Redis 密码

    • MonitoringChecks

      • Sensu 执行的检查的完整定义(对于所有订阅)

  • 每个可组合服务的订阅字符串的新参数

    • 例如,对于服务 nova-compute,MonitoringSubscriptionNovaCompute,它将默认设置为 ‘overcloud-nova-compute’

开发人员影响

应该为 tripleo-quickstart 实现对新节点类型支持。

实现

负责人

Martin Mágr <mmagr@redhat.com>

工作项

  • 用于 Sensu 服务的 puppet-tripleo profile

  • 用于 Uchiwa 服务的 puppet-tripleo profile

  • 用于 sensu-client 部署的 tripleo-heat-templates 可组合服务

  • 用于 sensu-server 部署的 tripleo-heat-templates 可组合服务

  • 用于 sensu-api 部署的 tripleo-heat-templates 可组合服务

  • 用于 uchiwa 部署的 tripleo-heat-templates 可组合服务

  • tripleo-quickstart 中对监控节点的支持

  • 撤销实现 Sensu 支持的 instack-undercloud 的补丁

依赖项

  • 用于 Sensu 服务的 Puppet 模块:sensu-puppet [1]

  • 用于 Uchiwa 的 Puppet 模块:puppet-uchiwa [2]

  • CentOS Opstools SIG 仓库 [3]

测试

一旦补丁合并,当前的 TripleO CI 将通过默认方式部署 sensu-client 来测试 sensu-client 的部署。

我们应该考虑创建一个 CI 作业来部署带有监控节点的超云,以测试其余的监控组件。

文档影响

创建新节点类型和新选项的过程需要记录。

参考资料

[0] https://sensuapp.org/docs/latest/reference/checks.html#subscription-checks [1] https://github.com/sensu/sensu-puppet [2] https://github.com/Yelp/puppet-uchiwa [3] https://wiki.centos.org/SpecialInterestGroup/OpsTools