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" ...
...
clusterInfo:
...
loggingPublicURL: "https://kibana.example.com"
...
loggingPublicURL パラメーターを設定すると、OpenShift Container Platform Web コンソールの Browse
有効なログイン cookie の期限が切れたら Kibana コンソールにログインする必要があります。 以下のタイミングでログインする必要があります。
- 初回使用時
- ログアウト後
通常通り Kiabana デプロイメントを拡張して冗長性を実現できます。
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) はデプロイメント、namespace、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 クラスターが、Elasticsearch .operations.* または project.* インデックスに定義されていないカスタムフィールドを含むログを JSON 形式で生成する場合、カスタムフィールドが 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 このコマンドは、カスタムフィールドのインデックスレコードを降順でソートします。
注記この設定は、既存のインデックスには適用されません。既存のインデックスに設定を適用する場合は、インデックスを再度実行します。
-
フィールドを追加する 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 対応するインデックスパターンファイルを編集して、各カスタムフィールドの定義を
fields値に追加します。以下に例を示します。
{\"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 フィールド定義に対応する必要があります。たとえば、numberタイプの Elasticsearch にmyfieldフィールドを追加した場合に、myfieldはstringタイプとして追加できません。インデックスパターンファイルで、Kibana インデックスパターンの名前をインデックスパターンファイルに追加します。
たとえば、operation.\* インデックスパターンを使用するには、以下を実行します。
"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 ユーザー名を特定し、ユーザー名のハッシュ値を取得します。インデックスパターンは、ユーザー名のハッシュを使用して保存されます。以下の 2 つのコマンドを実行します。
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 ページのフィールド一覧に表示されます。