×

如果您使用的是 Elasticsearch 日志存储,则可以使用 Kibana 控制台可视化收集的日志数据。

使用 Kibana,您可以对数据执行以下操作

  • 使用**发现**选项卡搜索和浏览数据。

  • 使用**可视化**选项卡绘制图表和地图数据。

  • 使用**仪表板**选项卡创建和查看自定义仪表板。

Kibana 界面的使用和配置不在本文档的讨论范围之内。有关使用界面的更多信息,请参阅Kibana 文档

默认情况下,审核日志不会存储在 AWS Elasticsearch 实例上的内部 Red Hat OpenShift Service 中。要在 Kibana 中查看审核日志,必须使用日志转发 API配置使用default输出的审核日志管道。

定义 Kibana 索引模式

索引模式定义要可视化的 Elasticsearch 索引。要浏览和可视化 Kibana 中的数据,必须创建索引模式。

先决条件
  • 用户必须具有cluster-admin角色、cluster-reader角色或同时具有这两个角色才能在 Kibana 中查看infraaudit索引。默认的kubeadmin用户具有查看这些索引的适当权限。

    如果您可以在defaultkube-openshift-项目中查看 Pod 和日志,则应该能够访问这些索引。您可以使用以下命令检查当前用户是否具有相应的权限

    $ oc auth can-i get pods --subresource log -n <project>
    示例输出
    yes

    默认情况下,审核日志不会存储在 AWS Elasticsearch 实例上的内部 Red Hat OpenShift Service 中。要在 Kibana 中查看审核日志,必须使用日志转发 API 配置使用default输出的审核日志管道。

  • 必须先索引 Elasticsearch 文档才能创建索引模式。这是自动完成的,但在新的或更新的集群中可能需要几分钟。

步骤

要定义索引模式并在 Kibana 中创建可视化

  1. 在 AWS 控制台的 Red Hat OpenShift Service 中,单击应用程序启动器app launcher并选择**日志记录**。

  2. 通过单击**管理**→**索引模式**→**创建索引模式**来创建 Kibana 索引模式。

    • 第一次登录 Kibana 时,每个用户都必须手动创建索引模式才能查看其项目的日志。用户必须创建一个名为app的索引模式并使用@timestamp时间字段来查看其容器日志。

    • 第一次登录 Kibana 时,每个管理员用户都必须为appinfraaudit索引创建索引模式,并使用@timestamp时间字段。

  3. 从新的索引模式创建 Kibana 可视化。

在 Kibana 中查看集群日志

您可以在 Kibana Web 控制台中查看集群日志。在 Kibana 中查看和可视化数据的方法不在本文档的讨论范围之内。有关更多信息,请参阅Kibana 文档

先决条件
  • 必须安装 Red Hat OpenShift 日志记录和 Elasticsearch 运算符。

  • Kibana 索引模式必须存在。

  • 用户必须具有cluster-admin角色、cluster-reader角色或同时具有这两个角色才能在 Kibana 中查看infraaudit索引。默认的kubeadmin用户具有查看这些索引的适当权限。

    如果您可以在defaultkube-openshift-项目中查看 Pod 和日志,则应该能够访问这些索引。您可以使用以下命令检查当前用户是否具有相应的权限

    $ oc auth can-i get pods --subresource log -n <project>
    示例输出
    yes

    默认情况下,审核日志不会存储在 AWS Elasticsearch 实例上的内部 Red Hat OpenShift Service 中。要在 Kibana 中查看审核日志,必须使用日志转发 API 配置使用default输出的审核日志管道。

步骤

要在 Kibana 中查看日志

  1. 在 AWS 控制台的 Red Hat OpenShift Service 中,单击应用程序启动器app launcher并选择**日志记录**。

  2. 使用与登录 AWS 控制台的 Red Hat OpenShift Service 相同的凭据登录。

    Kibana 界面启动。

  3. 在 Kibana 中,单击**发现**。

  4. 从左上角的下拉菜单中选择您创建的索引模式:appauditinfra

    日志数据显示为带时间戳的文档。

  5. 展开其中一个带时间戳的文档。

  6. 单击**JSON**选项卡以显示该文档的日志条目。

    Kibana 中的示例基础架构日志条目
    {
      "_index": "infra-000001",
      "_type": "_doc",
      "_id": "YmJmYTBlNDkZTRmLTliMGQtMjE3NmFiOGUyOWM3",
      "_version": 1,
      "_score": null,
      "_source": {
        "docker": {
          "container_id": "f85fa55bbef7bb783f041066be1e7c267a6b88c4603dfce213e32c1"
        },
        "kubernetes": {
          "container_name": "registry-server",
          "namespace_name": "openshift-marketplace",
          "pod_name": "redhat-marketplace-n64gc",
          "container_image": "registry.redhat.io/redhat/redhat-marketplace-index:v4.7",
          "container_image_id": "registry.redhat.io/redhat/redhat-marketplace-index@sha256:65fc0c45aabb95809e376feb065771ecda9e5e59cc8b3024c4545c168f",
          "pod_id": "8f594ea2-c866-4b5c-a1c8-a50756704b2a",
          "host": "ip-10-0-182-28.us-east-2.compute.internal",
          "master_url": "https://kubernetes.default.svc",
          "namespace_id": "3abab127-7669-4eb3-b9ef-44c04ad68d38",
          "namespace_labels": {
            "openshift_io/cluster-monitoring": "true"
          },
          "flat_labels": [
            "catalogsource_operators_coreos_com/update=redhat-marketplace"
          ]
        },
        "message": "time=\"2020-09-23T20:47:03Z\" level=info msg=\"serving registry\" database=/database/index.db port=50051",
        "level": "unknown",
        "hostname": "ip-10-0-182-28.internal",
        "pipeline_metadata": {
          "collector": {
            "ipaddr4": "10.0.182.28",
            "inputname": "fluent-plugin-systemd",
            "name": "fluentd",
            "received_at": "2020-09-23T20:47:15.007583+00:00",
            "version": "1.7.4 1.6.0"
          }
        },
        "@timestamp": "2020-09-23T20:47:03.422465+00:00",
        "viaq_msg_id": "YmJmYTBlNDktMDMGQtMjE3NmFiOGUyOWM3",
        "openshift": {
          "labels": {
            "logging": "infra"
          }
        }
      },
      "fields": {
        "@timestamp": [
          "2020-09-23T20:47:03.422Z"
        ],
        "pipeline_metadata.collector.received_at": [
          "2020-09-23T20:47:15.007Z"
        ]
      },
      "sort": [
        1600894023422
      ]
    }

配置 Kibana

您可以通过修改ClusterLogging自定义资源 (CR) 来使用 Kibana 控制台进行配置。

配置 CPU 和内存限制

日志记录组件允许调整 CPU 和内存限制。

步骤
  1. 编辑openshift-logging项目中的ClusterLogging自定义资源 (CR)

    $ oc -n openshift-logging edit ClusterLogging instance
    apiVersion: "logging.openshift.io/v1"
    kind: "ClusterLogging"
    metadata:
      name: "instance"
      namespace: openshift-logging
    
    ...
    
    spec:
      managementState: "Managed"
      logStore:
        type: "elasticsearch"
        elasticsearch:
          nodeCount: 3
          resources: (1)
            limits:
              memory: 16Gi
            requests:
              cpu: 200m
              memory: 16Gi
          storage:
            storageClassName: "gp2"
            size: "200G"
          redundancyPolicy: "SingleRedundancy"
      visualization:
        type: "kibana"
        kibana:
          resources: (2)
            limits:
              memory: 1Gi
            requests:
              cpu: 500m
              memory: 1Gi
          proxy:
            resources: (2)
              limits:
                memory: 100Mi
              requests:
                cpu: 100m
                memory: 100Mi
          replicas: 2
      collection:
        logs:
          type: "fluentd"
          fluentd:
            resources: (3)
              limits:
                memory: 736Mi
              requests:
                cpu: 200m
                memory: 736Mi
    1 根据需要指定日志存储的 CPU 和内存限制和请求。对于 Elasticsearch,您必须同时调整请求值和限制值。
    2 根据需要指定日志可视化工具的 CPU 和内存限制和请求。
    3 根据需要指定日志收集器的 CPU 和内存限制和请求。

日志可视化节点的冗余扩展

您可以扩展承载日志可视化工具的 Pod 以实现冗余。

步骤
  1. 编辑openshift-logging项目中的ClusterLogging自定义资源 (CR)

    $ oc edit ClusterLogging instance
    $ oc edit ClusterLogging instance
    
    apiVersion: "logging.openshift.io/v1"
    kind: "ClusterLogging"
    metadata:
      name: "instance"
    
    ....
    
    spec:
        visualization:
          type: "kibana"
          kibana:
            replicas: 1 (1)
    1 指定 Kibana 节点的数量。