9.4. 使用 Kibana 进行日志视觉化
如果使用 ElasticSearch 日志存储,您可以使用 Kibana 控制台来视觉化收集的日志数据。
使用 Kibana,您可以使用您的数据进行以下操作:
- 使用 Discover 标签页搜索并浏览数据。
- 使用 Visualize 选项卡对数据进行图表显示。
- 使用 Dashboard 标签页创建并查看自定义仪表板。
使用并配置 Kibana 界面的内容超出了本文档的范围。有关使用接口的更多信息,请参阅 Kibana 文档。
默认情况下,审计日志不会存储在 OpenShift Container Platform 内部 Elasticsearch 实例中。要在 Kibana 中查看审计日志,您必须使用 Log Forwarding API 配置使用审计日志的 default
输出的管道。
9.4.1. 定义 Kibana 索引模式
索引模式定义了您要视觉化的 Elasticsearch 索引。要在 Kibana 中探索和视觉化数据,您必须创建索引模式。
先决条件
用户必须具有
cluster-admin
角色、cluster-reader
角色或这两个角色,才能在 Kibana 中查看 infra 和 audit 索引。默认kubeadmin
用户具有查看这些索引的权限。如果可以查看
default
、kube-
和openshift-
项目中的 pod 和日志,则应该可以访问这些索引。您可以使用以下命令检查当前用户是否有适当的权限:$ oc auth can-i get pods --subresource log -n <project>
输出示例
yes
注意默认情况下,审计日志不会存储在 OpenShift Container Platform 内部 Elasticsearch 实例中。要在 Kibana 中查看审计日志,您必须使用 Log Forward API 配置使用审计日志的
default
输出的管道。- 在创建索引模式前,Elasticsearch 文档必须被索引。这会自动完成,但在一个新的或更新的集群中可能需要几分钟。
流程
在 Kibana 中定义索引模式并创建视觉化:
- 在 OpenShift Container Platform 控制台中点击 Application Launcher 并选择 Logging。
点 Management
Index Patterns Create index pattern 创建 Kibana 索引模式: -
首次登录 Kibana 时,每个用户必须手动创建索引模式才能查看其项目的日志。用户必须创建一个名为
app
的索引模式,并使用@timestamp
时间字段查看其容器日志。 -
每个 admin 用户在首次登录 Kibana 时,必须使用
@timestamp
时间字段为app
、infra
和audit
索引创建索引模式。
-
首次登录 Kibana 时,每个用户必须手动创建索引模式才能查看其项目的日志。用户必须创建一个名为
- 从新的索引模式创建 Kibana 视觉化。
9.4.2. 在 Kibana 中查看集群日志
您可以在 Kibana web 控制台中查看集群日志。在 Kibana 中查看和视觉化您的数据的方法,它们超出了本文档的范围。如需更多信息,请参阅 Kibana 文档。
先决条件
- 必须安装 Red Hat OpenShift Logging 和 Elasticsearch Operator。
- Kibana 索引模式必须存在。
用户必须具有
cluster-admin
角色、cluster-reader
角色或这两个角色,才能在 Kibana 中查看 infra 和 audit 索引。默认kubeadmin
用户具有查看这些索引的权限。如果可以查看
default
、kube-
和openshift-
项目中的 pod 和日志,则应该可以访问这些索引。您可以使用以下命令检查当前用户是否有适当的权限:$ oc auth can-i get pods --subresource log -n <project>
输出示例
yes
注意默认情况下,审计日志不会存储在 OpenShift Container Platform 内部 Elasticsearch 实例中。要在 Kibana 中查看审计日志,您必须使用 Log Forward API 配置使用审计日志的
default
输出的管道。
流程
在 Kibana 中查看日志:
- 在 OpenShift Container Platform 控制台中点击 Application Launcher 并选择 Logging。
使用用来登录到 OpenShift Container Platform 控制台的相同凭证进行登录。
Kibana 界面将出现。
- 在 Kibana 中,点 Discover。
从左上角的下拉菜单中选择您创建的索引模式: app、audit 或 infra。
日志数据显示为时间戳文档。
- 展开一个时间戳的文档。
点 JSON 选项卡显示该文件的日志条目。
例 9.1. 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 ] }
9.4.3. 配置 Kibana
您可以通过修改 ClusterLogging
自定义资源(CR) 来使用 Kibana 控制台配置。
9.4.3.1. 配置 CPU 和内存限值
日志记录组件允许对 CPU 和内存限值进行调整。
流程
编辑
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: 3 limits: memory: 100Mi requests: cpu: 100m memory: 100Mi replicas: 2 collection: resources: 4 limits: memory: 736Mi requests: cpu: 200m memory: 736Mi type: fluentd
9.4.3.2. 为日志可视化器节点扩展冗余性
您可以扩展托管日志视觉化器的 pod 以增加它的冗余性。
流程
编辑
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 节点的数量。