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-logging
Copy 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.tool
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 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.json
Copy 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 d0aeb5660fc2140aec35850c4da997
Copy 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.tool
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 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.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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
カスタムフィールドの Kibana コンソールを終了して再起動し、Available Fields 一覧に表示されるように、Management
Index Patterns ページのフィールド一覧に表示されます。