8.5. 配置 Kibana

OpenShift Container Platform 使用 Kibana 显示由 Fluentd 收集并由 Elasticsearch 索引的日志数据。

您可以扩展 Kibana 来实现冗余性,并为 Kibana 节点配置 CPU 和内存。

注意

除非另有说明,否则在执行这些配置之前,必须将集群日志记录设置为非受管状态。如需更多信息,请参阅更改集群日志记录管理状态

处于非受管状态的 Operator 不被正式支持,集群管理员需要完全掌控各个组件的配置和升级。如需了解更多信息,请参阅非受管 Operator 的支持策略

8.5.1. 配置 Kibana CPU 和 内存限值

每个组件规格都允许调整 CPU 和内存限值。

流程

  1. openshift-logging 项目中编辑集群日志记录自定义资源 (CR):

    $ oc edit ClusterLogging instance
    apiVersion: "logging.openshift.io/v1"
    kind: "ClusterLogging"
    metadata:
      name: "instance"
    
    ....
    
    spec:
        visualization:
          type: "kibana"
          kibana:
            replicas:
          resources:  1
            limits:
              memory: 1Gi
            requests:
              cpu: 500m
              memory: 1Gi
          proxy:  2
            resources:
              limits:
                memory: 100Mi
              requests:
                cpu: 100m
                memory: 100Mi
    1
    指定要为每个节点分配的 CPU 和内存限值。
    2
    指定要为 Kibana 代理分配的 CPU 和内存限值。

8.5.2. 扩展 Kibana 以实现冗余

您可以扩展 Kibana 部署以实现冗余。

流程

  1. openshift-logging 项目中编辑集群日志记录自定义资源 (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 节点的数量。

8.5.3. 使用容忍度(toleration)来控制 Kibana Pod 放置

您可以通过在 Pod 上使用容限(toleration)来控制 Kibana Pod 在哪些节点上运行,并防止其他工作负载使用这些节点。

您可以通过集群日志记录自定义资源 (CR) 将容限应用到 Kibana Pod,并通过节点规格将污点(taint)应用到节点。节点上的污点是一个 key:value 对,它指示节点排斥所有不容许该污点的 Pod。通过使用没有在其他 Pod 上使用的特定 key:value 对,可以确保仅 Kibana Pod 能够在该节点上运行。

先决条件

  • 必须安装 Cluster Logging 和 Elasticsearch。

流程

  1. 使用以下命令,将污点添加到要在其上调度 Kibana Pod 的节点:

    $ oc adm taint nodes <node-name> <key>=<value>:<effect>

    例如:

    $ oc adm taint nodes node1 kibana=node:NoExecute

    本例在 node1 上放置一个键为 kibana 且值为 node 的污点,污点效果是 NoExecute。您必须使用 NoExecute 污点设置。NoExecute 仅调度与污点匹配的 Pod,并删除不匹配的现有 Pod。

  2. 编辑集群日志记录自定义资源 (CR) 的 visualization 部分,以配置 Kibana Pod 的容忍度:

      visualization:
        type: "kibana"
        kibana:
          tolerations:
          - key: "kibana"  1
            operator: "Exists"  2
            effect: "NoExecute"  3
            tolerationSeconds: 6000 4
    1
    指定添加到节点的键。
    2
    指定 Exists 运算符,以要求匹配 key/value/effect 参数。
    3
    指定 NoExecute 效果。
    4
    (可选)指定 tolerationSeconds 参数,以设置 Pod 在被逐出前可以保持绑定到节点的时长。

此容忍度与 oc adm taint 命令创建的污点匹配。具有此容限的 Pod 能够调度到 node1 上。

8.5.4. 安装 Kibana Visualize 工具

借助 Kibana 的 Visualize 选项卡,您可以创建用于监控容器日志的视觉化和仪表板,让管理员用户(cluster-admincluster-reader)能够按照部署、命名空间、Pod 和容器来查看日志。

流程

加载仪表板和其他 Kibana UI 对象:

  1. 若有必要,可获取安装 Cluster Logging Operator 时默认创建的 Kibana 路由:

    $ oc get routes -n openshift-logging
    
    NAMESPACE                  NAME                       HOST/PORT                                                            PATH     SERVICES                   PORT    TERMINATION          WILDCARD
    openshift-logging          kibana                     kibana-openshift-logging.apps.openshift.com                                   kibana                     <all>   reencrypt/Redirect   None
  2. 获取 Elasticsearch Pod 的名称。

    $ oc get pods -l component=elasticsearch
    
    NAME                                            READY   STATUS    RESTARTS   AGE
    elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k    2/2     Running   0          22h
    elasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj7    2/2     Running   0          22h
    elasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr   2/2     Running   0          22h
  3. 创建此过程需要的用户级配置:

    1. 以您想要添加仪表板的用户身份登录到 Kibana 仪表板。

      https://kibana-openshift-logging.apps.openshift.com 1
      1
      Kibana 路由所在的 URL。
    2. 如果显示 Authorize Access 页面,请选择所有权限,再点 Allow selected permissions
    3. 退出 Kibana 仪表板。
  4. 使用任何 Elastiscearch Pod 的名称,从 Pod 所在的项目运行以下命令:

    $ oc exec <es-pod> -- es_load_kibana_ui_objects <user-name>

    例如:

    $ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k -- es_load_kibana_ui_objects <user-name>
注意

Kibana 对象(如视觉化、仪表板等)的元数据以 .kibana.{user_hash} 索引格式保存在 Elasticsearch 中。您可以使用 userhash=$(echo -n $username | sha1sum | awk '{print $1}') 命令获取 user_hash。默认情况下,Kibana shared_ops 索引模式允许具有集群管理员角色的所有用户共享索引,并将这个 Kibana 对象元数据保存到 .kibana 索引中。

任何自定义仪表板都可以通过使用导入/导出功能,或通过使用 curl 命令将元数据插入 Elasticsearch 索引来为特定用户导入。