7.5. 配置 Kibana
OpenShift Container Platform 使用 Kibana 显示由 Fluentd 收集并由 Elasticsearch 索引的日志数据。
您可以扩展 Kibana 来实现冗余性,并为 Kibana 节点配置 CPU 和内存。
除非另有说明,否则在执行这些配置之前,必须将集群日志记录设置为非受管状态。如需更多信息,请参阅更改集群日志记录管理状态。
处于非受管状态的 Operator 不被正式支持,集群管理员需要完全掌控各个组件的配置和升级。
如需了解更多信息,请参阅非受管 Operator 的支持策略
7.5.1. 配置 Kibana CPU 和 内存限值
每个组件规格都允许调整 CPU 和内存限值。
流程
在
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
7.5.2. 扩展 Kibana 以实现冗余
您可以扩展 Kibana 部署以实现冗余。
流程
在
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 节点的数量。
7.5.3. 使用容忍度(toleration)来控制 Kibana Pod 放置
您可以通过在 Pod 上使用容限(toleration)来控制 Kibana Pod 在哪些节点上运行,并防止其他工作负载使用这些节点。
您可以通过集群日志记录自定义资源 (CR) 将容限应用到 Kibana Pod,并通过节点规格将污点(taint)应用到节点。节点上的污点是一个 key:value
对,它指示节点排斥所有不容许该污点的 Pod。通过使用没有在其他 Pod 上使用的特定 key:value
对,可以确保仅 Kibana Pod 能够在该节点上运行。
先决条件
- 必须安装 Cluster Logging 和 Elasticsearch。
流程
使用以下命令,将污点添加到要在其上调度 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。编辑集群日志记录自定义资源 (CR) 的
visualization
部分,以配置 Kibana Pod 的容忍度:visualization: type: "kibana" kibana: tolerations: - key: "kibana" 1 operator: "Exists" 2 effect: "NoExecute" 3 tolerationSeconds: 6000 4
此容忍度与 oc adm taint
命令创建的污点匹配。具有此容限的 Pod 能够调度到 node1
上。
7.5.4. 安装 Kibana Visualize 工具
借助 Kibana 的 Visualize 选项卡,您可以创建用于监控容器日志的视觉化和仪表板,让管理员用户(cluster-admin
或 cluster-reader
)能够按照部署、命名空间、Pod 和容器来查看日志。
流程
加载仪表板和其他 Kibana UI 对象:
若有必要,可获取安装 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
获取 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
创建此过程需要的用户级配置:
以您想要添加仪表板的用户身份登录到 Kibana 仪表板。
https://kibana-openshift-logging.apps.openshift.com 1
- 1
- Kibana 路由所在的 URL。
- 如果显示 Authorize Access 页面,请选择所有权限,再点 Allow selected permissions。
- 退出 Kibana 仪表板。
使用任何 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 索引来为特定用户导入。