7.5. Kibana の設定
OpenShift Container Platform は Kibana を使用して、Fluentd によって収集され、Elasticsearch によってインデックス化されるログデータを表示します。
冗長性を確保するために Kibana をスケーリングし、Kibana ノードの CPU およびメモリーを設定することができます。
特に指示がない場合は、これらの設定を実行する前にクラスターロギングを管理外の状態に設定する必要があります。詳細は、「クラスターロギングの管理状態の変更」を参照してください。
管理外の状態の Operator はサポートされず、クラスター管理者は個々のコンポーネント設定およびアップグレードを完全に制御していることを前提としています。
詳細は、管理外の Operator のサポートポリシーについて参照してください。
7.5.1. Kibana CPU およびメモリー制限の設定
それぞれのコンポーネント仕様は、CPU とメモリーの両方への調整を許可します。
手順
openshift-logging
プロジェクトでクラスターロギングのカスタムリソース (CR) を編集します。$ oc edit ClusterLogging instance
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" .... spec: visualization: type: "kibana" kibana: replicas: resources: 1 limits: memory: 1Gi requests: cpu: 500m memory: 1Gi proxy: 2 resources: limits: memory: 100Mi requests: cpu: 100m memory: 100Mi
7.5.2. 冗長性を確保するための Kibana のスケーリング
冗長性を確保するために Kibana デプロイメントをスケーリングできます。
手順
openshift-logging
プロジェクトでクラスターロギングのカスタムリソース (CR) を編集します。$ oc edit ClusterLogging instance
$ oc edit ClusterLogging instance apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" .... spec: visualization: type: "kibana" kibana: replicas: 1 1
- 1
- Kibana ノードの数を指定します。
7.5.3. 容認 (Toleration) による Kibana Pod の配置の制御
Kibana Pod が実行するノードを制御し、Pod の容認を使用して他のワークロードがそれらのノードを使用しないようにすることができます。
容認をクラスターロギングのカスタムリソース (CR) を利用して Kibana Pod に適用し、テイントをノード仕様でノードに適用します。ノードのテイントは、テイントを容認しないすべての Pod を拒否するようノードに指示する key:value ペア
です。他の Pod にはない特定の key:value
ペアを使用することで、Kibana Pod のみがそのノード上で実行されます。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされている必要があります。
手順
以下のコマンドを使用して、Kibana Pod をスケジュールするノードにテイントを追加します。
$ oc adm taint nodes <node-name> <key>=<value>:<effect>
以下は例になります。
$ oc adm taint nodes node1 kibana=node:NoExecute
この例では、テイントをキー
kibana
、値node
、およびテイントの効果NoExecute
のあるnode1
に配置します。NoExecute
テイント effect を使用する必要があります。NoExecute
は、テイントに一致する Pod のみをスケジュールし、一致しない既存の Pod を削除します。クラスターロギングのカスタムリソース (CR) の
visualization
セクションを編集し、Kibana Pod の容認を設定します。visualization: type: "kibana" kibana: tolerations: - key: "kibana" 1 operator: "Exists" 2 effect: "NoExecute" 3 tolerationSeconds: 6000 4
この容認は、oc adm taint
コマンドで作成されたテイントと一致します。この容認のある Pod は、node1
にスケジュールできます。
7.5.4. Kibana Visualize ツールのインストール
Kibana の Visualize タブを使用すると、コンテナーログの監視用に視覚化やダッシュボードを作成でき、管理者ユーザー (cluster-admin
または cluster-reader
) はデプロイメント、namespace、Pod、およびコンテナーごとにログを表示することができます。
手順
ダッシュボードおよび他の Kibana UI オブジェクトを読み込むには、以下を実行します。
必要な場合は、Cluster Logging Operator のインストール時にデフォルトで作成される Kibana ルートを取得します。
$ oc get routes -n openshift-logging NAMESPACE NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD openshift-logging kibana kibana-openshift-logging.apps.openshift.com kibana <all> reencrypt/Redirect None
Elasticsearch Pod の名前を取得します。
$ oc get pods -l component=elasticsearch NAME READY STATUS RESTARTS AGE elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj7 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr 2/2 Running 0 22h
この手順で必要とされるユーザーごとに必要な設定を作成します。
ダッシュボードを追加する必要のあるユーザーとして Kibana ダッシュボードにログインします。
https://kibana-openshift-logging.apps.openshift.com 1
- 1
- URL は Kibana ルートです。
- Authorize Access ページが表示される場合、すべてのパーミッションを選択してから Allow selected permissions をクリックします。
- Kibana ダッシュボードからログアウトします。
Elastiscearch Pod のいずれかの名前を使用して、Pod が置かれているプロジェクトで以下のコマンドを実行します。
$ oc exec <es-pod> -- es_load_kibana_ui_objects <user-name>
以下は例になります。
$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k -- es_load_kibana_ui_objects <user-name>
視覚化やダッシュボードなどの Kibana オブジェクトのメタデータは、.kibana.{user_hash} インデックス形式で Elasticsearch に保存されます。userhash=$(echo -n $username | sha1sum | awk '{print $1}')
コマンドを使用して、user_hash を取得できます。デフォルトで、Kibana shared_ops インデックスモードでは、クラスター管理者ロールを持つすべてのユーザーがインデックスを共有でき、この Kibana オブジェクトメタデータは .kibana インデックスに保存されます。
インポート/エクスポート機能を使用するか、curl コマンドを使用してメタデータを Elasticsearch インデックスに挿入して、特定のユーザーに対してカスタムダッシュボードをインポートできます。