第 7 章 安装日志记录


OpenShift Container Platform Operator 使用自定义资源(CR)来管理应用程序及其组件。高级配置和设置由 CR 中的用户提供。Operator 根据 Operator 逻辑中嵌入的最佳实践,将高级别指令转换为低级操作。自定义资源定义(CRD)定义了一个 CR,并列出 Operator 用户可用的所有配置。安装 Operator 会创建 CRD,然后用于生成 CR。

重要

您必须在日志存储 Operator 安装 Red Hat OpenShift Logging Operator。

您可以通过安装 Loki Operator 或 OpenShift Elasticsearch Operator 来部署日志记录,以管理您的日志存储,然后是 Red Hat OpenShift Logging Operator 来管理日志记录的组件。您可以使用 OpenShift Container Platform Web 控制台或 OpenShift Container Platform CLI 来安装或配置日志记录。

注意

在 OpenShift Container Platform 4.16 中,Elasticsearch Operator 只支持 ServiceMesh、Tracing 和 Kiali。计划在 2025 年 11 月从 OpenShift Operator 目录中删除此 Operator。删除的原因是 Elasticsearch Operator 不再支持日志存储,OpenShift Container Platform 4.16 及更新的版本不再支持 Kibana。如需有关生命周期日期的更多信息,请参阅 平台分析 Operator

提示

您还可以应用所有示例对象。

7.1. 使用 Web 控制台安装 Elasticsearch

您可以使用 OpenShift Container Platform Web 控制台安装 OpenShift Elasticsearch 和 Red Hat OpenShift Logging Operator。Elasticsearch 是内存密集型应用程序。默认情况下,OpenShift Container Platform 安装 3 个 Elasticsearch 节点,其内存请求和限制为 16 GB。初始设置的三个 OpenShift Container Platform 节点可能没有足够的内存在集群中运行 Elasticsearch。如果遇到与 Elasticsearch 相关的内存问题,在集群中添加更多 Elasticsearch 节点,而不是增加现有节点上的内存。

注意

如果您不希望使用默认的 Elasticsearch 日志存储,您可以从 ClusterLogging 自定义资源 (CR) 中删除内部 Elasticsearch logStore 和 Kibana visualization 组件。删除这些组件是可选的,但会保存资源。

先决条件

  • 确保具有 Elasticsearch 所需的持久性存储。注意每个 Elasticsearch 节点都需要自己的存储卷。

    注意

    如果将本地卷用于持久性存储,请不要使用原始块卷,这在 LocalVolume 对象中的 volumeMode: block 描述。Elasticsearch 无法使用原始块卷。

流程

使用 OpenShift Container Platform Web 控制台安装 OpenShift Elasticsearch Operator 和 Red Hat OpenShift Logging Operator:

  1. 安装 OpenShift Elasticsearch Operator:

    1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
    2. 从可用的 Operator 列表中选择 OpenShift Elasticsearch Operator,然后点 Install
    3. 确定在 Installation Mode 下选择了 All namespaces on the cluster
    4. 确定在 Installed Namespace 下选择了 openshift-operators-redhat

      您必须指定 openshift-operators-redhat 命名空间。openshift-operators 命名空间可能会包含社区提供的 operator。这些 operator 不被信任,其发布的 metric 可能与 OpenShift Container Platform metric 的名称相同,从而导致冲突。

    5. 选择 Enable Operator recommended cluster monitoring on this namespace

      这个选项在 Namespace 对象中设置 openshift.io/cluster-monitoring: "true" 标识。您必须设置这个选项,以确保集群监控提取 openshift-operators-redhat 命名空间。

    6. 选择 stable-5.y 作为 更新频道

      注意

      stable 频道只为日志记录的最新版本提供更新。要继续获得之前版本的更新,您必须将订阅频道改为 stable-x.y,其中 x.y 代表您安装的日志记录的主版本和次版本。例如,stable-5.7

    7. 选择一个批准策略

      • Automatic 策略允许 Operator Lifecycle Manager(OLM)在有新版本可用时自动更新 Operator。
      • Manual 策略需要拥有适当凭证的用户批准 Operator 更新。
    8. Install
    9. 通过切换到 Operators Installed Operators 页来验证 OpenShift Elasticsearch Operator 已被安装。
    10. 确定 OpenShift Elasticsearch Operator 在所有项目中被列出,请 StatusSucceeded
  2. 安装 Red Hat OpenShift Logging Operator:

    1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
    2. 从可用的 Operator 列表中选择 Red Hat OpenShift Logging,然后点 Install
    3. 确定在 Installation Mode 下选择了 A specific namespace on the cluster
    4. 确定在 Installed Namespace 下的 Operator recommended namespaceopenshift-logging
    5. 选择 Enable Operator recommended cluster monitoring on this namespace

      这个选项在 Namespace 对象中设置 openshift.io/cluster-monitoring: "true" 标识。您必须选择这个选项,以确保集群监控提取 openshift-logging 命名空间。

    6. 选择 stable-5.y 作为 更新频道
    7. 选择一个批准策略

      • Automatic 策略允许 Operator Lifecycle Manager(OLM)在有新版本可用时自动更新 Operator。
      • Manual 策略需要拥有适当凭证的用户批准 Operator 更新。
    8. Install
    9. 通过切换到 Operators Installed Operators 页来验证 Red Hat OpenShift Logging Operator 已被安装。
    10. 确保 openshift-logging 项目中列出的 Red Hat OpenShift LoggingStatusInstallSucceeded

      如果 Operator 没有被成功安装,请按照以下步骤进行故障排除:

      • 切换到 Operators Installed Operators 页面,并检查 Status 列中是否有任何错误或故障。
      • 切换到 Workloads Pods 页面,并检查 openshift-logging 项目中报告问题的 pod 的日志。
  3. 创建 OpenShift Logging 实例:

    1. 切换到 Administration Custom Resource Definitions 页面。
    2. Custom Resource Definitions 页面上,点 ClusterLogging
    3. Custom Resource Definition details 页中,从 Actions 菜单中选择 View Instances
    4. ClusterLoggings 页中,点 Create ClusterLogging

      您可能需要刷新页面来加载数据。

    5. 将 YAML 项中的代码替换为以下内容:

      注意

      此默认 OpenShift Logging 配置应该可以支持各种环境。参阅有关调优和配置日志记录子系统组件的主题,以了解有关可对 OpenShift Logging 集群进行修改的信息。

      apiVersion: logging.openshift.io/v1
      kind: ClusterLogging
      metadata:
        name: instance 1
        namespace: openshift-logging
      spec:
        managementState: Managed 2
        logStore:
          type: elasticsearch 3
          retentionPolicy: 4
            application:
              maxAge: 1d
            infra:
              maxAge: 7d
            audit:
              maxAge: 7d
          elasticsearch:
            nodeCount: 3 5
            storage:
              storageClassName: <storage_class_name> 6
              size: 200G
            resources: 7
                limits:
                  memory: 16Gi
                requests:
                  memory: 16Gi
            proxy: 8
              resources:
                limits:
                  memory: 256Mi
                requests:
                  memory: 256Mi
            redundancyPolicy: SingleRedundancy
        visualization:
          type: kibana 9
          kibana:
            replicas: 1
        collection:
          type: fluentd 10
          fluentd: {}
      1
      名称必须是 instance
      2
      OpenShift Logging 管理状态。在一些数情况下,如果更改了 OpenShift Logging 的默认值,则必须将其设置为 Unmanaged。但是,非受管部署不接收更新,直到 OpenShift Logging 重新变为受管状态为止。
      3
      用于配置 Elasticsearch 的设置。通过使用 CR,您可以配置分片复制策略和持久性存储。
      4
      指定 Elasticsearch 应该保留每个日志源的时间长度。输入一个整数和时间单位: 周(w)、小时(h/H)、分钟(m)和秒。例如,7d 代表 7 天。时间超过 maxAge 的旧日志会被删除。您必须为每个日志源指定一个保留策略,否则不会为该源创建 Elasticsearch 索引。
      5
      指定 Elasticsearch 节点的数量。请参阅此列表后面的备注。
      6
      为 Elasticsearch 存储输入现有存储类的名称。为获得最佳性能,请指定分配块存储的存储类。如果没有指定存储类,OpenShift Logging 将使用临时存储。
      7
      根据需要指定 Elasticsearch 的 CPU 和内存请求。如果这些值留白,则 OpenShift Elasticsearch Operator 会设置默认值,它们应足以满足大多数部署的需要。内存请求的默认值为 16Gi,CPU 请求为 1
      8
      根据需要指定 Elasticsearch 代理的 CPU 和内存请求。如果这些值留白,则 OpenShift Elasticsearch Operator 会设置默认值,它们应足以满足大多数部署的需要。内存请求的默认值为 256Mi,CPU 请求的默认值为 100m
      9
      用于配置 Kibana 的设置。通过使用 CR,您可以扩展 Kibana 来实现冗余性,并为 Kibana 节点配置 CPU 和内存。如需更多信息,请参阅配置日志可视化工具
      10
      用于配置 Fluentd 的设置。通过使用 CR,您可以配置 Fluentd CPU 和内存限值。如需更多信息,请参阅"配置 Fluentd"。
      注意

      master 节点的最大数量为三个。如果您将 nodeCount 指定为大于 3,OpenShift Container Platform 只会创建三个符合 Master 节点条件的 Elasticsearch 节点(具有 master、client 和 data 角色)。其余 Elasticsearch 节点创建为“仅数据”节点,使用 client 和 data 角色。Master 节点执行集群范围的操作,如创建或删除索引、分配分片和跟踪节点等。数据节点保管分片,并执行与数据相关的操作,如 CRUD、搜索和聚合等。与数据相关的操作会占用大量 I/O、内存和 CPU。务必要监控这些资源,并在当前节点过载时添加更多数据节点。

      例如,如果 nodeCount = 4,则创建以下节点:

      $ oc get deployment

      输出示例

      cluster-logging-operator-66f77ffccb-ppzbg       1/1    Running 0 7m
      elasticsearch-cd-tuhduuw-1-f5c885dbf-dlqws      1/1    Running 0 2m4s
      elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp    2/2    Running 0 2m40s
      elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc   2/2    Running 0 2m36s
      elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2   2/2    Running 0 2m4s

    6. Create。这将创建日志记录组件、Elasticsearch 自定义资源和组件以及 Kibana 接口。
  4. 验证安装:

    1. 切换到 Workloads Pods 页面。
    2. 选择 openshift-logging 项目。

      您应该会看到几个用于 OpenShift Logging、Elasticsearch、收集器和 Kibana 的 pod,类似于以下列表:

      输出示例

      cluster-logging-operator-66f77ffccb-ppzbg       1/1     Running   0          7m
      elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp    2/2     Running   0          2m40s
      elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc   2/2     Running   0          2m36s
      elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2   2/2     Running   0          2m4s
      collector-587vb                                   1/1     Running   0          2m26s
      collector-7mpb9                                   1/1     Running   0          2m30s
      collector-flm6j                                   1/1     Running   0          2m33s
      collector-gn4rn                                   1/1     Running   0          2m26s
      collector-nlgb6                                   1/1     Running   0          2m30s
      collector-snpkt                                   1/1     Running   0          2m28s
      kibana-d6d5668c5-rppqm                          2/2     Running   0          2m39s

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.