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" ...
...
clusterInfo:
...
loggingPublicURL: "https://kibana.example.com"
...
在 OpenShift Container Platform Web 控制台中设置 loggingPublicURL 参数会在 Browse
当有效的登录 Cookie 过期时,您需要登录到 Kibana 控制台,例如:您需要登录:
- 首次使用
- 注销后
您可以像冗余方式扩展 Kibana 部署:
oc scale dc/logging-kibana --replicas=2
$ oc scale dc/logging-kibana --replicas=2
为确保扩展在日志记录 playbook 的多个执行之间保留,请确保更新清单文件中的 openshift_logging_kibana_replica_count。
您可以通过访问 openshift_logging_kibana_hostname 变量指定的站点来查看用户界面。
有关 Kibana 的更多信息,请参阅 Kibana 文档。
Kibana Visualize
通过 Kibana Visualize,您可以创建用于监控容器和 pod 日志的视觉化和仪表板,管理员用户(cluster-admin 或 cluster-reader)可以按部署、命名空间、Pod 和容器来查看日志。
Kibana Visualize 存在于 Elasticsearch 和 ES-OPS pod 中,且必须在这些 pod 中运行。要加载仪表板和其他 Kibana UI 对象,您必须首先以您要添加仪表板的用户身份登录到 Kibana,然后注销。这将创建下一步所依赖的每个用户所需的配置。然后运行:
oc exec <$espod> -- es_load_kibana_ui_objects <user-name>
$ oc exec <$espod> -- es_load_kibana_ui_objects <user-name>
其中 $espod 是 Elasticsearch Pod 之一的名称。
在 Kibana Visualize 中添加自定义字段
如果您的 OpenShift Container Platform 集群以 JSON 格式生成日志,其中包含 Elasticsearch .operations.* 或 项目.* 索引中定义的自定义字段,则无法使用这些字段创建视觉化,因为自定义字段在 Kibana 中不可用。
但是,您可以将自定义字段添加到 Elasticsearch 索引中,该索引允许您将字段添加到 Kibana 索引模式中,以便在 Kibana Visualize 中使用。
自定义字段仅应用于模板更新后创建的索引。
将自定义字段添加到 Kibana Visualize 中:
在 Elasticsearch 索引模板中添加自定义字段:
-
确定要添加哪些 Elasticsearch 索引,可以是
.operations.*或project.*索引。如果有具有自定义字段的特定项目,您可以将字段添加到项目的特定索引中,例如:project.this-project-has-time-fields.*。 为自定义字段创建一个 JSON 文件,如下所示:
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
openshift-logging项目:oc project openshift-logging
$ oc project openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 获取一个 Elasticsearch Pod 的名称:
oc get -n logging pods -l component=es
$ 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 Copied! Toggle word wrap Toggle overflow 将 JSON 文件加载到 Elasticsearch pod 中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "acknowledged": true }{ "acknowledged": true }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您有单独的 OPS 集群,请获取其中一个 es-ops Elasticsearch pod 的名称:
oc get -n logging pods -l component=es-ops
$ 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 Copied! Toggle word wrap Toggle overflow 将 JSON 文件加载到 es-ops Elasticsearch pod 中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出结果类似如下:
{ "acknowledged": true }{ "acknowledged": true }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证索引是否已更新:
oc exec -n logging -i -c elasticsearch <es-pod-name> -- \ curl -s -k --cert /etc/elasticsearch/secret/admin-cert \ --key /etc/elasticsearch/secret/admin-key \ https://localhost:9200/project.*/_search?sort=<custom-field>:desc | \ python -mjson.tooloc 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.toolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 命令输出自定义字段的索引记录,按降序排列。
注意设置不适用于现有的索引。如果要将设置应用到现有索引中,请执行 re-index。
-
确定要添加哪些 Elasticsearch 索引,可以是
将自定义字段添加到 Kibana:
从 Elasticsearch 容器获取现有的索引模式文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 索引模式文件下载到 /usr/share/elasticsearch/index_patterns 目录中。
例如:
index_patterns $ ls com.redhat.viaq-openshift.index-pattern.json
index_patterns $ ls com.redhat.viaq-openshift.index-pattern.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑对应的索引模式文件,将每个自定义字段的定义添加到
字段值中:例如:
{\"count\": 0, \"name\": \"mytimefield2\", \"searchable\": true, \"aggregatable\": true, \"readFromDocValues\": true, \"type\": \"date\", \"scripted\": false},{\"count\": 0, \"name\": \"mytimefield2\", \"searchable\": true, \"aggregatable\": true, \"readFromDocValues\": true, \"type\": \"date\", \"scripted\": false},Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该定义必须包含
\"searchable\": true,和\"aggregatable\": true,才能进行视觉化使用。数据类型必须与上方添加的 Elasticsearch 字段定义对应。例如,如果您在 Elasticsearch 中添加了一个myfield字段,它的类型为number,则无法将myfield添加到 Kibana 中作为字符串类型。在索引模式文件中,将 Kibana 索引模式的名称添加到索引模式文件中:
例如,使用 operations.\* 索引模式:
"title": "*operations.*"
"title": "*operations.*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用 project.MYNAMESPACE.\* 索引模式:
"title": "project.MYNAMESPACE.*"
"title": "project.MYNAMESPACE.*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别用户名并获取用户名的 hash 值。索引模式使用用户名的 hash 来存储。按顺序运行以下两个命令:
get_hash() { printf "%s" "$1" | sha1sum | awk '{print $1}' }$ get_hash() { > printf "%s" "$1" | sha1sum | awk '{print $1}' > }Copy to Clipboard Copied! Toggle word wrap Toggle overflow get_hash admin
$ get_hash admin d0aeb5660fc2140aec35850c4da997Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将索引模式文件应用到 Elasticsearch:
cat com.redhat.viaq-openshift.index-pattern.json | \ oc exec -i -c elasticsearch <espod-name> -- es_util \ --query=".kibana.<user-hash>/index-pattern/<index>" -XPUT --data-binary @- | \ python -mjson.toolcat 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.toolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
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.toolcat 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.toolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出结果类似如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
退出并重启自定义字段的 Kibana 控制台,使其显示在 Available Fields 列表中,并在 Management
Index Patterns 页面上的字段列表中显示。