36.5.4. Kibana
OpenShift Container Platform の Web コンソールから Kibana コンソールにアクセスするには、マスター webconsole-config configmap ファイル
に loggingPublicURL パラメーターを追加し、Kibana コンソールの URL (kibana-hostname
パラメーター) を指定します。値は HTTPS URL である必要があります。
... clusterInfo: ... loggingPublicURL: "https://kibana.example.com" ...
loggingPublicURL
パラメーターを設定すると、OpenShift Container Platform Web コンソールの Browse
有効なログイン cookie の期限が切れたら Kibana コンソールにログインする必要があります。 以下のタイミングでログインする必要があります。
- 初回使用時
- ログアウト後
通常通り Kiabana デプロイメントを拡張して冗長性を実現できます。
$ 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
) はデプロイメント、namespace、Pod、およびコンテナーごとにログを表示することができます。
Kibana Visualize は Elasticsearch および ES-OPS Pod 内に存在し、それらの Pod 内で実行する必要があります。ダッシュボードとその他の Kibana UI オブジェクトを読み込むには、まずはダッシュボードに追加するユーザーとして Kibana にログインしてから、ログアウトする必要があります。これにより、以下の手順で使用するユーザーごとの必要な設定が作成されます。次に、以下を実行します。
$ oc exec <$espod> -- es_load_kibana_ui_objects <user-name>
ここで、$espod
はいずれかの Elasticsearch Pod の名前です。
カスタムフィールドを Kibana Visualize に追加するには、以下を実行します。
OpenShift Container Platform クラスターが、Elasticsearch .operations.*
または project.*
インデックスに定義されていないカスタムフィールドを含むログを JSON 形式で生成する場合、カスタムフィールドが Kibana で利用できないため、これらのフィールドでビジュアライゼーションを作成することはできません。
ただし、カスタムフィールドを Elasticsearch インデックスに追加できます。これにより、フィールドを Kibana インデックスパターンに追加して、Kibana Visualize で使用できます。
カスタムフィールドは、テンプレートの更新後に作成されたインデックスにのみ適用されます。
カスタムフィールドを Kibana Visualize に追加するには、以下を実行します。
カスタムフィールドを Elasticsearch インデックステンプレートに追加します。
-
フィールドを追加する Elasticsearch インデックス (
.operations.*
またはproject.*
インデックス) を判別します。カスタムフィールドが含まれる特定のプロジェクトがある場合は、そのプロジェクトの特定のインデックスにフィールドを追加します (例:project.this-project-has-time-fields.*
)。 以下のようなカスタムフィールドの 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 }
openshift-logging
プロジェクトに切り替えます。$ oc project openshift-logging
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>
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
{ "acknowledged": true }
個別の 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>
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
以下のような出力が表示されます。
{ "acknowledged": true }
インデックスが更新されていることを確認します。
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
このコマンドは、カスタムフィールドのインデックスレコードを降順でソートします。
注記この設定は、既存のインデックスには適用されません。既存のインデックスに設定を適用する場合は、インデックスを再度実行します。
-
フィールドを追加する Elasticsearch インデックス (
カスタムフィールドを Kibana に追加します。
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
インデックスパターンファイルは、 /usr/share/elasticsearch/index_patterns ディレクトリーにダウンロードされます。
以下に例を示します。
index_patterns $ ls com.redhat.viaq-openshift.index-pattern.json
対応するインデックスパターンファイルを編集して、各カスタムフィールドの定義を
fields
値に追加します。以下に例を示します。
{\"count\": 0, \"name\": \"mytimefield2\", \"searchable\": true, \"aggregatable\": true, \"readFromDocValues\": true, \"type\": \"date\", \"scripted\": false},
ビジュアライゼーションで使用するには、定義に
\"searchable\": true,
と\"aggregatable\": true,
のパラメーターを追加する必要があります。データ型は、上記に追加した Elasticsearch フィールド定義に対応する必要があります。たとえば、number
タイプの Elasticsearch にmyfield
フィールドを追加した場合に、myfield
はstring
タイプとして追加できません。インデックスパターンファイルで、Kibana インデックスパターンの名前をインデックスパターンファイルに追加します。
たとえば、operation.\* インデックスパターンを使用するには、以下を実行します。
"title": "*operations.*"
project.MYNAMESPACE.\* インデックスパターンを使用するには、以下を実行します。
"title": "project.MYNAMESPACE.*"
ユーザー名を特定し、ユーザー名のハッシュ値を取得します。インデックスパターンは、ユーザー名のハッシュを使用して保存されます。以下の 2 つのコマンドを実行します。
$ get_hash() { > printf "%s" "$1" | sha1sum | awk '{print $1}' > }
$ get_hash admin d0aeb5660fc2140aec35850c4da997
インデックスパターンファイルを 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
以下に例を示します。
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
以下のような出力が表示されます。
{ "_id": ".operations.*", "_index": ".kibana.d0aeb5660fc2140aec35850c4da997", "_shards": { "failed": 0, "successful": 2, "total": 2 }, "_type": "index-pattern", "_version": 1, "created": true, "result": "created" }
-
カスタムフィールドの Kibana コンソールを終了して再起動し、Available Fields 一覧に表示されるように、Management
Index Patterns ページのフィールド一覧に表示されます。