7.5. Kibana の設定

OpenShift Container Platform は Kibana を使用して、Fluentd によって収集され、Elasticsearch によってインデックス化されるログデータを表示します。

冗長性を確保するために Kibana をスケーリングし、Kibana ノードの CPU およびメモリーを設定することができます。

注記

特に指示がない場合は、これらの設定を実行する前にクラスターロギングを管理外の状態に設定する必要があります。詳細は、「クラスターロギングの管理状態の変更」を参照してください。

管理外の状態の Operator はサポートされず、クラスター管理者は個々のコンポーネント設定およびアップグレードを完全に制御していることを前提としています。

詳細は、管理外の Operator のサポートポリシーについて参照してください。

7.5.1. Kibana CPU およびメモリー制限の設定

それぞれのコンポーネント仕様は、CPU とメモリーの両方への調整を許可します。

手順

  1. 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
    1
    各ノードに割り当てる CPU およびメモリー制限を指定します。
    2
    Kibana プロキシーに割り当てる CPU およびメモリー制限を指定します。

7.5.2. 冗長性を確保するための Kibana のスケーリング

冗長性を確保するために Kibana デプロイメントをスケーリングできます。

手順

  1. 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 がインストールされている必要があります。

手順

  1. 以下のコマンドを使用して、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 を削除します。

  2. クラスターロギングのカスタムリソース (CR) の visualization セクションを編集し、Kibana Pod の容認を設定します。

      visualization:
        type: "kibana"
        kibana:
          tolerations:
          - key: "kibana"  1
            operator: "Exists"  2
            effect: "NoExecute"  3
            tolerationSeconds: 6000 4
    1
    ノードに追加したキーを指定します。
    2
    Exists Operator を指定して、key/value/effect パラメーターが一致するようにします。
    3
    NoExecute effect を指定します。
    4
    オプションで、tolerationSeconds パラメーターを指定して、エビクトされる前に Pod がノードにバインドされる期間を設定します。

この容認は、oc adm taint コマンドで作成されたテイントと一致します。この容認のある Pod は、node1 にスケジュールできます。

7.5.4. Kibana Visualize ツールのインストール

Kibana の Visualize タブを使用すると、コンテナーログの監視用に視覚化やダッシュボードを作成でき、管理者ユーザー (cluster-admin または cluster-reader) はデプロイメント、namespace、Pod、およびコンテナーごとにログを表示することができます。

手順

ダッシュボードおよび他の Kibana UI オブジェクトを読み込むには、以下を実行します。

  1. 必要な場合は、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
  2. 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
  3. この手順で必要とされるユーザーごとに必要な設定を作成します。

    1. ダッシュボードを追加する必要のあるユーザーとして Kibana ダッシュボードにログインします。

      https://kibana-openshift-logging.apps.openshift.com 1
      1
      URL は Kibana ルートです。
    2. Authorize Access ページが表示される場合、すべてのパーミッションを選択してから Allow selected permissions をクリックします。
    3. Kibana ダッシュボードからログアウトします。
  4. 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 インデックスに挿入して、特定のユーザーに対してカスタムダッシュボードをインポートできます。