Kibana

このドキュメントでは、Google Cloud Managed Service for Prometheus を使用して Kibana エクスポータから指標を収集できるように、Google Kubernetes Engine の Deployment を構成する方法について説明します。このドキュメントでは、次の方法について説明します。

  • Kibana エクスポータを設定して指標を報告します。
  • エクスポートされた指標を収集するために、Managed Service for Prometheus の PodMonitoring リソースを構成する。
  • Cloud Monitoring のダッシュボードにアクセスして指標を表示する。
  • 指標をモニタリングするようにアラートルールを構成する。

以下の手順は、Managed Service for Prometheus でマネージド コレクションを使用している場合にのみ適用されます。セルフデプロイ コレクションを使用している場合は、Kibana のドキュメントでインストール情報をご覧ください。

以下の手順は一例であり、ほとんどの Kubernetes 環境で機能します。セキュリティ ポリシーや組織のポリシーの制限により、アプリケーションやエクスポータのインストールに問題がある場合は、オープンソース ドキュメントでサポートを確認することをおすすめします。

Kibana の詳細については、Kibana をご覧ください。

前提条件

Managed Service for Prometheus とマネージド コレクションを使用して Kibana エクスポータから指標を収集するには、Deployment が次の要件を満たしている必要があります。

  • クラスタで Google Kubernetes Engine バージョン 1.21.4-gke.300 以降を実行している必要があります。
  • マネージド コレクションを有効にして、Managed Service for Prometheus を実行する必要があります。詳細については、マネージド コレクションを使ってみるをご覧ください。

  • Kibana とのインテグレーションに Cloud Monitoring で利用可能なダッシュボードを使用するには、kibana-prometheus-exporter バージョン 8.0.0 以降を使用する必要があります。

    利用可能なダッシュボードの詳細については、ダッシュボードを表示するをご覧ください。

Kibana では、Kibana エクスポータ プラグインをインストールした後にのみ、Prometheus 形式の指標が公開されます。プラグインをインストールするには、インストール手順に沿って操作してください。

インストール プロセスでは bin/kibana-plugin install PLUGIN を使用する必要があります。このプラグインをインストールする 1 つの方法は、カスタム Kibana Docker イメージを定義することです。次の例をご覧ください。

  FROM kibana:KIBANA_VERSION
  RUN bin/kibana-plugin install https://github.com/pjhampton/kibana-prometheus-exporter/releases/download/PLUGIN_VERSION/kibanaPrometheusExporter-PLUGIN_VERSION.zip

イメージをビルドしてリモート リポジトリに push したら、Kubernetes Deployment 内で使用できます。例:

  apiVersion: v1
  kind: ConfigMap
  metadata:
    name: kibana
  data:
    kibana.yml: |
      server.name: kibana
      server.host: "0.0.0.0"
      # Update this with credentials to match your Elasticsearch instance
      elasticsearch.hosts: http://username:password@elasticsearch-service-name:9200
  ---
  apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: kibana
    labels:
      app.kubernetes.io/name: kibana
  spec:
    ...
    template:
      ...
      spec:
        containers:
        - name: kibana
          image: CUSTOM_IMAGE
          ports:
          - containerPort: 5601
            name: kibana
            protocol: TCP
          volumeMounts:
          - mountPath: /usr/share/kibana/config/kibana.yml
            subPath: kibana.yml
            name: kibana
        volumes:
        - name: kibana
          configMap:
            name: kibana
            items:
            - key: kibana.yml
              path: kibana.yml

想定されるエンドポイントで Kibana エクスポータが指標を出力していることを確認するには、次の操作を行います。

  1. 次のコマンドを使用してポート転送を設定します。

    kubectl -n NAMESPACE_NAME port-forward POD_NAME 5601
    
  2. 別のターミナル セッションでブラウザまたは curl ユーティリティを使用して、localhost:5601/_prometheus/metrics エンドポイントにアクセスします。

PodMonitoring リソースを定義する

ターゲット ディスカバリの場合、Managed Service for Prometheus Operator には、同じ Namespace 内の Kibana エクスポータに対応する PodMonitoring リソースが必要です。

次の PodMonitoring 構成を使用できます。

# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: kibana
  labels:
    app.kubernetes.io/name: kibana
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  endpoints:
  - port: 5601
    scheme: http
    interval: 30s
    path: /_prometheus/metrics
  selector:
    matchLabels:
     app.kubernetes.io/name: kibana

構成の変更内容をローカル ファイルから適用するには、次のコマンドを実行します。

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Terraform を使用して構成を管理することもできます。

ルールとアラートを定義する

次の Rules 構成を使用して、Kibana 指標に関するアラートを定義できます。

# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
  name: kibana-rules
  labels:
    app.kubernetes.io/component: rules
    app.kubernetes.io/name: kibana-rules
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  groups:
  - name: kibana
    interval: 30s
    rules:
    - alert: KibanaHighCPUUsage
      annotations:
        description: |-
          Kibana high cpu usage
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Kibana high cpu usage (instance {{ $labels.instance }})
      expr: kibana_os_load5 >= 90
      for: 5m
      labels:
        severity: critical
    - alert: KibanaHighMemoryUsage
      annotations:
        description: |-
          Kibana high memory usage
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Kibana high memory usage (instance {{ $labels.instance }})
      expr: kibana_os_mem_bytes_used / kibana_os_mem_bytes_total >= 0.9
      for: 5m
      labels:
        severity: critical

構成の変更内容をローカル ファイルから適用するには、次のコマンドを実行します。

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Terraform を使用して構成を管理することもできます。

ルールをクラスタに適用する方法については、マネージド ルールの評価とアラートをご覧ください。

アラートのしきい値は、アプリケーションに合わせて調整できます。

構成を確認する

Metrics Explorer を使用すると、Kibana エクスポータが正しく構成されていることを確認できます。Cloud Monitoring が指標を取り込むまでに 1~2 分かかる場合があります。

指標が取り込まれていることを確認します。

  1. Google Cloud コンソールのナビゲーション パネルで [Monitoring] を選択し、次に [ Metrics Explorer] を選択します。

    Metrics Explorer に移動

  2. クエリビルダー ペインのツールバーで、[MQL] または [PROMQL] という名前のボタンを選択します。
  3. [言語] で [PromQL] が選択されていることを確認します。言語切り替えボタンは、クエリの書式設定と同じツールバーにあります。
  4. 次のクエリを入力して実行します。
    up{job="kibana", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}

ダッシュボードを表示する

Cloud Monitoring インテグレーションには、Kibana Prometheus の概要ダッシュボードが含まれています。ダッシュボードは、インテグレーションを構成すると自動的にインストールされます。インテグレーションをインストールすることなく、ダッシュボードの静的プレビューを表示することもできます。

インストールされているダッシュボードを表示する手順は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、[ダッシュボード] を選択します。

    [ダッシュボード] に移動

  2. [ダッシュボード リスト] タブを選択します。
  3. [統合] カテゴリを選択します。
  4. ダッシュボードの名前(Kibana Prometheus Overview など)をクリックします。

ダッシュボードの静的プレビューを表示する手順は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、[インテグレーション] を選択します。

    [インテグレーション] に移動

  2. [デプロイメント プラットフォーム] フィルタの [Kubernetes Engine] をクリックします。
  3. Kibana インテグレーションを見つけ、[詳細を表示] をクリックします。
  4. [ダッシュボード] タブを選択します。

トラブルシューティング

指標の取り込みに関する問題のトラブルシューティングについては、取り込み側の問題のトラブルシューティングエクスポータからの収集に関する問題をご覧ください。