36.5.4. Kibana


要从 OpenShift Container Platform web 控制台访问 Kibana 控制台,请使用 Kibana 控制台(kibana-hostname 参数)在 master webconsole-config configmap 文件中添加 loggingPublicURL 参数。该值必须是 HTTPS URL:

...
clusterInfo:
  ...
  loggingPublicURL: "https://kibana.example.com"
...
Copy to Clipboard Toggle word wrap

在 OpenShift Container Platform Web 控制台中设置 loggingPublicURL 参数会在 Browse Pods <pod_name> Logs 选项卡中创建一个 View Archive 按钮。这会链接到 Kibana 控制台。

注意

当有效的登录 Cookie 过期时,您需要登录到 Kibana 控制台,例如:您需要登录:

  • 首次使用
  • 注销后

您可以像冗余方式扩展 Kibana 部署:

$ oc scale dc/logging-kibana --replicas=2
Copy to Clipboard Toggle word wrap
注意

为确保扩展在日志记录 playbook 的多个执行之间保留,请确保更新清单文件中的 openshift_logging_kibana_replica_count

您可以通过访问 openshift_logging_kibana_hostname 变量指定的站点来查看用户界面。

有关 Kibana 的更多信息,请参阅 Kibana 文档

Kibana Visualize

通过 Kibana Visualize,您可以创建用于监控容器和 pod 日志的视觉化和仪表板,管理员用户(cluster-admincluster-reader)可以按部署、命名空间、Pod 和容器来查看日志。

Kibana Visualize 存在于 Elasticsearch 和 ES-OPS pod 中,且必须在这些 pod 中运行。要加载仪表板和其他 Kibana UI 对象,您必须首先以您要添加仪表板的用户身份登录到 Kibana,然后注销。这将创建下一步所依赖的每个用户所需的配置。然后运行:

$ oc exec <$espod> -- es_load_kibana_ui_objects <user-name>
Copy to Clipboard Toggle word wrap

其中 $espod 是 Elasticsearch Pod 之一的名称。

在 Kibana Visualize 中添加自定义字段

如果您的 OpenShift Container Platform 集群以 JSON 格式生成日志,其中包含 Elasticsearch .operations.*项目.* 索引中定义的自定义字段,则无法使用这些字段创建视觉化,因为自定义字段在 Kibana 中不可用。

但是,您可以将自定义字段添加到 Elasticsearch 索引中,该索引允许您将字段添加到 Kibana 索引模式中,以便在 Kibana Visualize 中使用。

注意

自定义字段仅应用于模板更新后创建的索引。

将自定义字段添加到 Kibana Visualize 中:

  1. 在 Elasticsearch 索引模板中添加自定义字段:

    1. 确定要添加哪些 Elasticsearch 索引,可以是 .operations.*project.* 索引。如果有具有自定义字段的特定项目,您可以将字段添加到项目的特定索引中,例如: project.this-project-has-time-fields.*
    2. 为自定义字段创建一个 JSON 文件,如下所示:

      例如:

      {
      	"order": 20,
      	"mappings": {
      		"_default_": {
      			"properties": {
      				"mytimefield1": { 
      1
      
      					"doc_values": true,
      					"format": "yyyy-MM-dd HH:mm:ss,SSSZ||yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ||yyyy-MM-dd'T'HH:mm:ssZ||dateOptionalTime",
      					"index": "not_analyzed",
      					"type": "date"
      				},
      				"mytimefield2": {
      					"doc_values": true,
      					"format": "yyyy-MM-dd HH:mm:ss,SSSZ||yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ||yyyy-MM-dd'T'HH:mm:ssZ||dateOptionalTime",
      					"index": "not_analyzed",
      					"type": "date"
      				}
      			}
      		}
      	},
      	"template": "project.<project-name>.*" 
      2
      
      }
      Copy to Clipboard Toggle word wrap
      1
      添加自定义字段和参数。
      2
      指定 .operations.*project.* 索引。
    3. 进入 openshift-logging 项目:

      $ oc project openshift-logging
      Copy to Clipboard Toggle word wrap
    4. 获取一个 Elasticsearch Pod 的名称:

      $ oc get -n logging pods -l component=es
      
      NAME                                       READY     STATUS    RESTARTS   AGE       IP             NODE                         NOMINATED NODE
      logging-es-data-master-5av030lk-1-2x494    2/2       Running   0          38m       154.128.0.80   ip-153-12-8-6.wef.internal   <none>
      Copy to Clipboard Toggle word wrap
    5. 将 JSON 文件加载到 Elasticsearch pod 中:

      $ cat <json-file-name> | \  
      1
      
      oc exec -n logging -i -c elasticsearch <es-pod-name> -- \ 
      2
      
          curl -s -k --cert /etc/elasticsearch/secret/admin-cert \
          --key /etc/elasticsearch/secret/admin-key \
          https://localhost:9200/_template/<json-file-name> -XPUT -d@- | \ 
      3
      
      python -mjson.tool
      Copy to Clipboard Toggle word wrap
      1 3
      您创建的 JSON 文件的名称。
      2
      Elasticsearch Pod 的名称。
      {
          "acknowledged": true
      }
      Copy to Clipboard Toggle word wrap
    6. 如果您有单独的 OPS 集群,请获取其中一个 es-ops Elasticsearch pod 的名称:

      $ oc get -n logging pods -l component=es-ops
      
      NAME                                           READY     STATUS    RESTARTS   AGE       IP             NODE                         NOMINATED NODE
      logging-es-ops-data-master-o7nhcbo4-5-b7stm    2/2       Running   0          38m       154.128.0.80   ip-153-12-8-6.wef.internal   <none>
      Copy to Clipboard Toggle word wrap
    7. 将 JSON 文件加载到 es-ops Elasticsearch pod 中:

      $ cat <json-file-name> | \ 
      1
      
      oc exec -n logging -i -c elasticsearch <esops-pod-name> -- \ 
      2
      
          curl -s -k --cert /etc/elasticsearch/secret/admin-cert \
          --key /etc/elasticsearch/secret/admin-key \
          https://localhost:9200/_template/<json-file-name> -XPUT -d@- | \ 
      3
      
      python -mjson.tool
      Copy to Clipboard Toggle word wrap
      1 3
      您创建的 JSON 文件的名称。
      2
      OPS 集群 Elasticsearch pod 的名称。

      输出结果类似如下:

      {
          "acknowledged": true
      }
      Copy to Clipboard Toggle word wrap
    8. 验证索引是否已更新:

      oc exec -n logging -i -c elasticsearch <es-pod-name> -- \ 
      1
      
          curl -s -k --cert /etc/elasticsearch/secret/admin-cert \
          --key /etc/elasticsearch/secret/admin-key \
          https://localhost:9200/project.*/_search?sort=<custom-field>:desc | \ 
      2
      
      python -mjson.tool
      Copy to Clipboard Toggle word wrap
      1
      Elasticsearch 或 OPS 集群 Elasticsearch pod 的名称。
      2
      您添加的自定义字段的名称。

      命令输出自定义字段的索引记录,按降序排列。

      注意

      设置不适用于现有的索引。如果要将设置应用到现有索引中,请执行 re-index。

  2. 将自定义字段添加到 Kibana:

    1. 从 Elasticsearch 容器获取现有的索引模式文件:

      $ mkdir index_patterns
      $ cd index_patterns
      $ oc project openshift-logging
      $ for espod in $( oc get pods -l component=es -o jsonpath='{.items[*].metadata.name}' ) ; do
      >  for ff in $( oc exec -c elasticsearch <es-pod-name> -- ls /usr/share/elasticsearch/index_patterns ) ; do
      >    oc exec -c elasticsearch <es-pod-name> -- cat /usr/share/elasticsearch/index_patterns/$ff > $ff
      >  done
      >  break
      > done
      Copy to Clipboard Toggle word wrap

      索引模式文件下载到 /usr/share/elasticsearch/index_patterns 目录中。

      例如:

      index_patterns $ ls
      
      com.redhat.viaq-openshift.index-pattern.json
      Copy to Clipboard Toggle word wrap
    2. 编辑对应的索引模式文件,将每个自定义字段的定义添加到字段值中:

      例如:

      {\"count\": 0, \"name\": \"mytimefield2\", \"searchable\": true, \"aggregatable\": true, \"readFromDocValues\": true, \"type\": \"date\", \"scripted\": false},
      Copy to Clipboard Toggle word wrap

      该定义必须包含 \"searchable\": true,\"aggregatable\": true, 才能进行视觉化使用。数据类型必须与上方添加的 Elasticsearch 字段定义对应。例如,如果您在 Elasticsearch 中添加了一个 myfield 字段,它的类型为 number,则无法将 myfield 添加到 Kibana 中作为字符串类型。

    3. 在索引模式文件中,将 Kibana 索引模式的名称添加到索引模式文件中:

      例如,使用 operations.\* 索引模式:

      "title": "*operations.*"
      Copy to Clipboard Toggle word wrap

      要使用 project.MYNAMESPACE.\* 索引模式:

      "title": "project.MYNAMESPACE.*"
      Copy to Clipboard Toggle word wrap
    4. 识别用户名并获取用户名的 hash 值。索引模式使用用户名的 hash 来存储。按顺序运行以下两个命令:

      $ get_hash() {
      >     printf "%s" "$1" | sha1sum | awk '{print $1}'
      > }
      Copy to Clipboard Toggle word wrap
      $ get_hash admin
      
      d0aeb5660fc2140aec35850c4da997
      Copy to Clipboard Toggle word wrap
    5. 将索引模式文件应用到 Elasticsearch:

      cat com.redhat.viaq-openshift.index-pattern.json | \ 
      1
      
        oc exec -i -c elasticsearch <espod-name> -- es_util \
          --query=".kibana.<user-hash>/index-pattern/<index>" -XPUT --data-binary @- | \ 
      2
      
        python -mjson.tool
      Copy to Clipboard Toggle word wrap
      1
      索引模式文件的名称。
      2
      用户散列和索引,可以是 .operations.*project.*

      例如:

      cat index-pattern.json | \
        oc exec -i -c elasticsearch mypod-23-gb9pl -- es_util \
          --query=".kibana.d0aeb5660fc2140aec35850c4da997/index-pattern/project.MYNAMESPACE.*" -XPUT --data-binary @- | \
        python -mjson.tool
      Copy to Clipboard Toggle word wrap

      输出结果类似如下:

      {
          "_id": ".operations.*",
          "_index": ".kibana.d0aeb5660fc2140aec35850c4da997",
          "_shards": {
              "failed": 0,
              "successful": 2,
              "total": 2
          },
          "_type": "index-pattern",
          "_version": 1,
          "created": true,
          "result": "created"
      }
      Copy to Clipboard Toggle word wrap
    6. 退出并重启自定义字段的 Kibana 控制台,使其显示在 Available Fields 列表中,并在 Management Index Patterns 页面上的字段列表中显示。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat