启用集中式日志部署

https://blueprints.launchpad.net/tripleo/+spec/tripleo-opstools-centralized-logging

TripleO 应该部署一个开箱即用的集中式日志解决方案来服务于 overcloud。

问题描述

对于像 OpenStack 这样复杂的分布式系统,识别和诊断问题可能需要在许多不同的系统和许多不同的日志文件中跟踪一个事务。在没有集中式日志解决方案的情况下,这个过程对于新手和经验丰富的操作员来说都令人沮丧,即使是简单的问题也难以诊断。

提议的变更

当环境配置时,我们将以日志收集模式部署 Fluentd 服务作为 overcloud 堆栈中所有节点上的可组合服务。每个可组合服务将拥有自己的 fluentd 来源配置。

为了接收这些消息,我们将部署一个运行 KibanaElasticsearch 和 Fluentd 的集中式日志系统,部署在专用的节点上,以提供日志聚合和分析。这将使用可组合角色部署在一个与 overcloud 堆栈分离的专用的 Heat 堆栈中。

我们还将支持将消息发送到 tripleo 未部署的外部 Fluentd 实例。

用例摘要

  1. Elasticsearch、Kibana 和 Fluentd 日志中继/转换器作为 overcloud 堆栈中的独立 Heat 堆栈部署;Fluentd 日志收集器部署在每个 overcloud 节点上

  2. ElasticSearch、Kibana 和 Fluentd 日志中继/转换器部署在外部基础设施中;Fluentd 日志收集器部署在每个 overcloud 节点上

替代方案

安全影响

从 OpenStack 服务日志中收集的数据可能包含敏感信息

  • fluentd 代理和日志聚合器之间的通信应使用 SSL 保护。

  • 访问 Kibana UI 必须至少具有基本的 HTTP 身份验证,并且客户端访问应通过 SSL 进行。

  • ElasticSearch 应该只允许通过 localhost 进行收集。

其他最终用户影响

性能影响

在 overcloud 节点上运行 Fluentd 需要额外的资源。从 overcloud 节点到日志聚合器的日志流量将消耗一些带宽。

其他部署者影响

  • Fluentd 将部署在所有 overcloud 节点上。

  • 用于配置 Fluentd 收集器的新的参数。

  • 用于配置日志收集器(Fluentd、ElasticSearch 和 Kibana)的新参数

开发人员影响

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

实现

负责人

Martin Mágr <mmagr@redhat.com> Lars Kellogg-Stedman <lars@redhat.com>

工作项

  • fluentd 服务的 puppet-tripleo profile

  • tripleo-heat-templates 用于 FluentD 收集器部署的可组合角色

  • tripleo-heat-templates 用于 FluentD 聚合器部署的可组合角色

  • tripleo-heat-templates 用于 Elasticsearch 部署的可组合角色

  • tripleo-heat-templates 用于 Kibana 部署的可组合角色

  • tripleo-quickstart 中日志节点的支持

依赖项

  • Fluentd 的 Puppet 模块:konstantin-fluentd [1]

  • ElasticSearch 的 Puppet 模块 elasticsearch-elasticsearch [2]

  • Kibana 的 Puppet 模块(待定)

  • CentOS Opstools SIG 包仓库

测试

Fluentd 客户端部署将在 TripleO CI 中合并补丁后进行测试。由于集中式日志记录功能默认情况下不会启用,我们可能需要为这些功能引入特定的测试。

文档影响

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

参考资料

[1] https://forge.puppet.com/srf/fluentd [2] https://forge.puppet.com/elasticsearch/elasticsearch