第 7 章 可视化日志

7.1. 关于日志视觉化

您可以根据部署的日志存储解决方案,在 OpenShift Container Platform Web 控制台中视觉化您的日志数据,或 Kibana Web 控制台。Kibana 控制台可用于 ElasticSearch 日志存储,OpenShift Container Platform Web 控制台可用于 ElasticSearch 日志存储或 LokiStack。

注意

Kibana Web 控制台现已弃用,计划在以后的日志记录发行版本中删除。

7.1.1. 配置日志可视化工具

您可以通过修改 ClusterLogging 自定义资源(CR)来配置日志可视化工具类型。

先决条件

  • 有管理员权限。
  • 已安装 OpenShift CLI(oc)。
  • 已安装 Red Hat OpenShift Logging Operator。
  • 您已创建了 ClusterLogging CR。
重要

如果要使用 OpenShift Container Platform Web 控制台进行视觉化,您必须启用日志记录控制台插件。请参阅有关 "Log visualization with the web console" 的文档。

流程

  1. 修改 ClusterLogging CR visualization 规格:

    ClusterLogging CR 示例

    apiVersion: logging.openshift.io/v1
    kind: ClusterLogging
    metadata:
    # ...
    spec:
    # ...
      visualization:
        type: <visualizer_type> 1
        kibana: 2
          resources: {}
          nodeSelector: {}
          proxy: {}
          replicas: {}
          tolerations: {}
        ocpConsole: 3
          logsLimit: {}
          timeout: {}
    # ...

    1
    要用于日志记录的可视化工具类型。这可以是 kibanaocp-console。Kibana 控制台仅与使用 Elasticsearch 日志存储的部署兼容,而 OpenShift Container Platform 控制台只与 LokiStack 部署兼容。
    2
    Kibana 控制台的可选配置。
    3
    OpenShift Container Platform Web 控制台的可选配置。
  2. 运行以下命令来应用 ClusterLogging CR:

    $ oc apply -f <filename>.yaml

7.1.2. 查看资源的日志

资源日志是一个默认功能,可提供有限的日志查看功能。您可以使用 OpenShift CLI (oc) 和 Web 控制台查看各种资源的日志,如构建、部署和 pod。

提示

为增强日志检索和查看体验,请安装 logging。日志记录将 OpenShift Container Platform 集群中的所有日志(如节点系统审计日志、应用程序容器日志和基础架构日志)聚合到专用日志存储中。然后,您可以通过 Kibana 控制台或 OpenShift Container Platform Web 控制台查询、发现和视觉化您的日志数据。资源日志无法访问日志记录日志存储。

7.1.2.1. 查看资源日志

您可以在 OpenShift CLI (oc) 和 Web 控制台中查看各种资源的日志。日志从日志的尾部或末尾读取。

先决条件

  • 访问 OpenShift CLI(oc)。

流程 (UI)

  1. 在 OpenShift Container Platform 控制台中,导航到 WorkloadsPods,或通过您要调查的资源导航到 pod。

    注意

    有些资源(如构建)没有直接查询的 pod。在这种情况下,您可以在资源的 Details 页面中找到 Logs 链接。

  2. 从下拉菜单中选择一个项目。
  3. 点您要调查的 pod 的名称。
  4. Logs

流程 (CLI)

  • 查看特定 pod 的日志:

    $ oc logs -f <pod_name> -c <container_name>

    其中:

    -f
    可选:指定输出是否遵循要写到日志中的内容。
    <pod_name>
    指定 pod 的名称。
    <container_name>
    可选:指定容器的名称。当 pod 具有多个容器时,您必须指定容器名称。

    例如:

    $ oc logs ruby-58cd97df55-mww7r
    $ oc logs -f ruby-57f7f4855b-znl92 -c ruby

    输出的日志文件内容。

  • 查看特定资源的日志:

    $ oc logs <object_type>/<resource_name> 1
    1
    指定资源类型和名称。

    例如:

    $ oc logs deployment/ruby

    输出的日志文件内容。