9.4. Kibana によるログの可視化
ElasticSearch ログストアを使用している場合は、Kibana コンソールを使用して収集されたログデータを可視化できます。
Kibana を使用すると、データに対して以下を実行できます。
- Discover タブを使用して、データを検索および参照します。
- Visualize タブを使用して、データをグラフ化およびマッピングします。
- Dashboard タブを使用してカスタムダッシュボードを作成し、表示します。
Kibana インターフェイスの使用および設定は、このドキュメントでは扱いません。インターフェイスの使用に関する詳細は、Kibana ドキュメント を参照してください。
監査ログは、デフォルトでは内部 OpenShift Container Platform Elasticsearch インスタンスに保存されません。Kibana で監査ログを表示するには、ログ転送 API を使用して、監査ログの default
出力を使用するパイプラインを設定する必要があります。
9.4.1. Kibana インデックスパターンの定義
インデックスパターンは、可視化する必要のある Elasticsearch インデックスを定義します。Kibana でデータを確認し、可視化するには、インデックスパターンを作成する必要があります。
前提条件
Kibana で infra および audit インデックスを表示するには、ユーザーには
cluster-admin
ロール、cluster-reader
ロール、または両方のロールが必要です。デフォルトのkubeadmin
ユーザーには、これらのインデックスを表示するための適切なパーミッションがあります。default
、kube-
およびopenshift-
プロジェクトで Pod およびログを表示できる場合に、これらのインデックスにアクセスできるはずです。以下のコマンドを使用して、現在のユーザーが適切なパーミッションを持っているかどうかを確認できます。$ oc auth can-i get pods --subresource log -n <project>
出力例
yes
注記監査ログは、デフォルトでは内部 OpenShift Container Platform Elasticsearch インスタンスに保存されません。Kibana で監査ログを表示するには、ログ転送 API を使用して監査ログの
default
出力を使用するパイプラインを設定する必要があります。- Elasticsearch ドキュメントは、インデックスパターンを作成する前にインデックス化する必要があります。これは自動的に実行されますが、新規または更新されたクラスターでは数分の時間がかかる可能性があります。
手順
Kibana でインデックスパターンを定義し、ビジュアライゼーションを作成するには、以下を実行します。
- OpenShift Container Platform コンソールで、Application Launcher をクリックし、Logging を選択します。
Management
Index Patterns Create index pattern をクリックして Kibana インデックスパターンを作成します。 -
各ユーザーは、プロジェクトのログを確認するために、Kibana に初めてログインする際にインデックスパターンを手動で作成する必要があります。ユーザーは
app
という名前のインデックスパターンを作成し、@timestamp
時間フィールドを使用してコンテナーログを表示する必要があります。 -
管理ユーザーはそれぞれ、最初に Kibana にログインする際に、
@timestamp
時間フィールドを使用してapp
、infra
およびaudit
インデックスのインデックスパターンを作成する必要があります。
-
各ユーザーは、プロジェクトのログを確認するために、Kibana に初めてログインする際にインデックスパターンを手動で作成する必要があります。ユーザーは
- 新規インデックスパターンから Kibana のビジュアライゼーション (Visualization) を作成します。
9.4.2. Kibana でのクラスターログの表示
Kibana Web コンソールでクラスターのログを表示します。Kibana でデータを表示し、可視化する方法は、このドキュメントでは扱いません。詳細は、Kibana ドキュメント を参照してください。
前提条件
- Red Hat OpenShift Logging および Elasticsearch Operators がインストールされている必要があります。
- Kibana インデックスパターンが存在する。
Kibana で infra および audit インデックスを表示するには、ユーザーには
cluster-admin
ロール、cluster-reader
ロール、または両方のロールが必要です。デフォルトのkubeadmin
ユーザーには、これらのインデックスを表示するための適切なパーミッションがあります。default
、kube-
およびopenshift-
プロジェクトで Pod およびログを表示できる場合に、これらのインデックスにアクセスできるはずです。以下のコマンドを使用して、現在のユーザーが適切なパーミッションを持っているかどうかを確認できます。$ oc auth can-i get pods --subresource log -n <project>
出力例
yes
注記監査ログは、デフォルトでは内部 OpenShift Container Platform Elasticsearch インスタンスに保存されません。Kibana で監査ログを表示するには、ログ転送 API を使用して監査ログの
default
出力を使用するパイプラインを設定する必要があります。
手順
Kibana でログを表示するには、以下を実行します。
- OpenShift Container Platform コンソールで、Application Launcher をクリックし、Logging を選択します。
OpenShift Container Platform コンソールにログインするために使用するものと同じ認証情報を使用してログインします。
Kibana インターフェイスが起動します。
- Kibana で Discover をクリックします。
左上隅のドロップダウンメニューから作成したインデックスパターン (app、audit、または infra) を選択します。
ログデータは、タイムスタンプ付きのドキュメントとして表示されます。
- タイムスタンプ付きのドキュメントの 1 つをデプロイメントします。
JSON タブをクリックし、ドキュメントのログエントリーを表示します。
例9.1 Kibana のインフラストラクチャーログエントリーのサンプル
{ "_index": "infra-000001", "_type": "_doc", "_id": "YmJmYTBlNDkZTRmLTliMGQtMjE3NmFiOGUyOWM3", "_version": 1, "_score": null, "_source": { "docker": { "container_id": "f85fa55bbef7bb783f041066be1e7c267a6b88c4603dfce213e32c1" }, "kubernetes": { "container_name": "registry-server", "namespace_name": "openshift-marketplace", "pod_name": "redhat-marketplace-n64gc", "container_image": "registry.redhat.io/redhat/redhat-marketplace-index:v4.7", "container_image_id": "registry.redhat.io/redhat/redhat-marketplace-index@sha256:65fc0c45aabb95809e376feb065771ecda9e5e59cc8b3024c4545c168f", "pod_id": "8f594ea2-c866-4b5c-a1c8-a50756704b2a", "host": "ip-10-0-182-28.us-east-2.compute.internal", "master_url": "https://kubernetes.default.svc", "namespace_id": "3abab127-7669-4eb3-b9ef-44c04ad68d38", "namespace_labels": { "openshift_io/cluster-monitoring": "true" }, "flat_labels": [ "catalogsource_operators_coreos_com/update=redhat-marketplace" ] }, "message": "time=\"2020-09-23T20:47:03Z\" level=info msg=\"serving registry\" database=/database/index.db port=50051", "level": "unknown", "hostname": "ip-10-0-182-28.internal", "pipeline_metadata": { "collector": { "ipaddr4": "10.0.182.28", "inputname": "fluent-plugin-systemd", "name": "fluentd", "received_at": "2020-09-23T20:47:15.007583+00:00", "version": "1.7.4 1.6.0" } }, "@timestamp": "2020-09-23T20:47:03.422465+00:00", "viaq_msg_id": "YmJmYTBlNDktMDMGQtMjE3NmFiOGUyOWM3", "openshift": { "labels": { "logging": "infra" } } }, "fields": { "@timestamp": [ "2020-09-23T20:47:03.422Z" ], "pipeline_metadata.collector.received_at": [ "2020-09-23T20:47:15.007Z" ] }, "sort": [ 1600894023422 ] }
9.4.3. Kibana の設定
Kibana コンソールを使用して、ClusterLogging
カスタムリソース (CR) を変更することで設定できます。
9.4.3.1. CPU およびメモリー制限の設定
ロギングコンポーネントは、CPU とメモリーの制限の両方への調整を許可します。
手順
openshift-logging
プロジェクトでClusterLogging
カスタムリソース (CR) を編集します。$ oc -n openshift-logging edit ClusterLogging instance
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" namespace: openshift-logging ... spec: managementState: "Managed" logStore: type: "elasticsearch" elasticsearch: nodeCount: 3 resources: 1 limits: memory: 16Gi requests: cpu: 200m memory: 16Gi storage: storageClassName: "gp2" size: "200G" redundancyPolicy: "SingleRedundancy" visualization: type: "kibana" kibana: resources: 2 limits: memory: 1Gi requests: cpu: 500m memory: 1Gi proxy: resources: 3 limits: memory: 100Mi requests: cpu: 100m memory: 100Mi replicas: 2 collection: resources: 4 limits: memory: 736Mi requests: cpu: 200m memory: 736Mi type: fluentd
9.4.3.2. ログビジュアライザーノードの冗長性のスケーリング
冗長性を確保するために、ログビジュアライザーをホストする Pod をスケーリングできます。
手順
openshift-logging
プロジェクトでClusterLogging
カスタムリソース (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 ノードの数を指定します。