可視化ダッシュボードを作成する

このページでは、Google Distributed Cloud(GDC)エアギャップ アプライアンス プロジェクトのログと指標の可視化に使用される Grafana インスタンス内でダッシュボードを作成して管理するプロセスについて説明します。

ダッシュボードには、システムのパフォーマンスが動的に視覚的に表示されます。これは、カスタマイズ可能な 1 つ以上のパネルで構成され、各パネルは GDC コンポーネントから特定の指標をクエリして表示するように構成されています。これらのパネルでは、次のことができます。

  • さまざまなグラフタイプで指標を可視化します。
  • 指標値に基づいて通知をトリガーするアラートしきい値を定義します。
  • ラベル、単位、期間などの表示プロパティをカスタマイズします。
  • 正確な比較を行うために、時間分解能を一定に設定します。

Grafana ダッシュボードを効果的に使用することで、GDC 環境のパフォーマンスと健全性に関する貴重な分析情報を得ることができます。

使用可能なダッシュボード

環境が稼働している場合、モニタリング インスタンスのホームページにいくつかの指標ダッシュボードがすぐに表示されます。たとえば、スイッチのステータスとシステム コンポーネントの健全性を確認できます。

スイッチとクラスタのダッシュボードを使用して、クラスタとノードの指標をモニタリングします。

利用可能なダッシュボードと最近表示したダッシュボードのリストが表示されたホームページ

最も関連性の高いプラットフォーム管理者(PA)の指標は次のとおりです。

  • Kubernetes / API サーバー: 組織内のクラスタごとの API サーバーの健全性を示します。
  • Kubernetes / コンピューティング リソース / マルチクラスタ: 組織全体のリソース使用率が表示されます。
  • Kubernetes / コンピューティング リソース / クラスタ: クラスタごとのリソース使用率が表示されます。
  • Kubernetes / Persistent Volumes: 各クラスタの Kubernetes 永続ボリュームの使用率が表示されます。
  • ノードのステータス: 各クラスタの各ノードのリソース使用量が表示されます。
  • Pod のステータス: 各クラスタの各 Pod のリソース消費量が表示されます。

次の図は、Kubernetes / コンピューティング リソース / マルチクラスタ ダッシュボードの例を示しています。

CPU 使用率を示す折れ線グラフと、CPU 割り当てを示すクラスタのリスト

始める前に

Grafana ダッシュボードにアクセスして表示するために必要な権限を取得するには、組織の IAM 管理者またはプロジェクトの IAM 管理者に、事前定義された Grafana 閲覧者ロールのいずれかを付与するよう依頼してください。

また、ダッシュボードの作成に必要な API オブジェクトを管理するために必要な権限を取得するには、組織の IAM 管理者またはプロジェクトの IAM 管理者に、関連する ConfigMap ロールと Dashboard ロールの付与を依頼してください。

必要なアクセスレベルと権限に応じて、組織またはプロジェクトでこれらのリソースの作成者、編集者、閲覧者のロールを取得できます。詳細については、IAM 権限を準備するをご覧ください。

対応するロールを取得したら、ダッシュボードを作成する前に次の操作を行います。

  1. ワークロードから指標を収集する
  2. kubeconfig ファイルのパスを環境変数として設定します。

    export KUBECONFIG=KUBECONFIG_PATH
    

    KUBECONFIG_PATH は、ダッシュボードを作成する Management API サーバーの kubeconfig ファイルのパスに置き換えます。

Grafana エンドポイントを特定する

次の URL は、プロジェクトの Grafana インスタンスのエンドポイントです。

https://GDC_URL/PROJECT_NAMESPACE/grafana

次のように置き換えます。

  • GDC_URL: GDC 内の組織の URL。
  • PROJECT_NAMESPACE: プロジェクトの Namespace。

たとえば、org-1 組織の platform-obs プロジェクトの Grafana エンドポイントは https://org-1/platform-obs/grafana です。

カスタム ダッシュボードを作成する

Grafana ダッシュボードを作成して設定をカスタマイズする手順は次のとおりです。

  1. Grafana エンドポイントを開いて、ユーザー インターフェースを表示します。
  2. ナビゲーション メニューで [追加] をクリックします。
  3. プルダウン メニューで [ダッシュボード] をクリックします。Grafana によって空のダッシュボードが作成されます。
  4. 空のダッシュボードに、必要なパネルをすべて追加します。

  5. 各パネルの [データソース] メニューで、パネルに必要なデータソース(指標(prometheus)、監査ログ(auditloki)、運用ログ(oploki)など)を選択します。

    マルチゾーン ユニバースの場合、Grafana にはゾーンラベル付きのデータソースがあり、これを使用して複数のゾーンの指標とログを含むダッシュボードの可視化を作成できます。これらのデータソースには DATA_SOURCE-ZONE_ID という形式の名前が付けられます。ここで、

    • DATA_SOURCE には、次のいずれかの値を指定できます。

      • 指標を表示する Prometheusprometheus または metrics)。
      • 監査ログを表示する 監査ログauditloki)。
      • オペレーション ログoploki): オペレーション ログを表示します。
    • ZONE_ID は、ダッシュボードにデータを表示するゾーンの ID です。

    また、クロスゾーン リソースの可視化ダッシュボードを作成する場合、データソース名は --Mixed-- です。このデータソースを使用すると、ゾーンごとに複数のクエリを追加し、単一のダッシュボードでゾーン間のデータ可視化を行うことができます。この機能を使用すると、たとえば、ユニバースの複数のゾーンにわたる単一の指標またはログクエリの動作を比較できます。

  6. 詳細をカスタマイズし、パネルを編集してクエリを指定したり、その他の更新を行ったりします。

  7. メニューバーで [ダッシュボードの設定] をクリックして、[設定] ページを開きます。

  8. ナビゲーション メニューから [JSON モデル] を選択します。

  9. ダッシュボードの JSON モデルをコピーし、後で使用できるようにプレーン テキスト ファイルに貼り付けます。

ConfigMap オブジェクトを作成する

次の手順で、ダッシュボードの JSON モデルを含む ConfigMap オブジェクトを作成します。

  1. ターミナル ウィンドウを開きます。
  2. ConfigMap オブジェクトを作成します。ConfigMap オブジェクトの data セクションに、先ほどコピーした JSON モデルを貼り付けます。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: PROJECT_NAMESPACE
      name: CONFIGMAP_NAME
    data:
      JSON_FILE_NAME.json: |
        {
        JSON_MODEL
        }
    

    次のように置き換えます。

    • PROJECT_NAMESPACE: プロジェクトの Namespace。
    • CONFIGMAP_NAME: ConfigMap オブジェクトに付ける名前。
    • JSON_FILE_NAME: ダッシュボードの JSON モデルのファイルに付ける名前。
    • JSON_MODEL: カスタム ダッシュボードの JSON モデル。

    このオブジェクトの例については、ConfigMap の例をご覧ください。

  3. ConfigMap オブジェクトを Management API サーバーに適用します。

    kubectl --kubeconfig ${KUBECONFIG} apply -f CONFIGMAP_NAME.yaml
    

ConfigMap の例

次の YAML ファイルは、platform-obs Namespace のダッシュボードの ConfigMap オブジェクトの例を示しています。

  apiVersion: v1
  kind: ConfigMap
  metadata:
    namespace: platform-obs
    name: my-project-dashboard-configmap
  data:
    my-project-dashboard.json: |
      {
      "annotations": {
        "list": [
          {
            "builtIn": 1,
            "datasource": "--",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
          }
        ]
      },
      "editable": true,
      "graphTooltip": 0,
      "id": null,
      "links": [],
      "panels": [],
      "schemaVersion": 27,
      "style": "dark",
      "tags": [],
      "templating": {
        "list": []
      },
      "time": {
        "from": "now-6h",
        "to": "now"
      },
      "timepicker": {},
      "timezone": "",
      "title": "Sample dashboard",
      "uid": null,
      "version": 0
      }

Dashboard カスタム リソースを作成する

次の手順に沿って Dashboard カスタム リソースを作成し、カスタム ダッシュボードをプロジェクトの Grafana インスタンスにインポートします。

  1. ターミナル ウィンドウを開きます。
  2. Dashboard カスタム リソースを作成し、ConfigMap オブジェクトに指定した名前でファイルを構成します。

    apiVersion: observability.gdc.goog/v1
    kind: Dashboard
    metadata:
      namespace: PROJECT_NAMESPACE
      name: DASHBOARD_NAME
    spec:
      configMapRef:
        name: CONFIGMAP_NAME
        namespace: PROJECT_NAMESPACE
        key: JSON_FILE_NAME.json
      foldername: Default
    

    次のように置き換えます。

    • PROJECT_NAMESPACE: プロジェクトの Namespace。
    • DASHBOARD_NAME: Dashboard カスタム リソースに付ける名前。
    • CONFIGMAP_NAME: ConfigMap オブジェクトに付けた名前。
    • JSON_FILE_NAME: ConfigMap オブジェクトのダッシュボードの JSON モデルを含むファイルに付けた名前。
  3. Dashboard カスタム リソースを Management API サーバーに適用します。

    kubectl --kubeconfig ${KUBECONFIG} apply -f DASHBOARD_NAME.yaml
    

システムは、Dashboard カスタム リソースと関連する ConfigMap オブジェクトの両方の変更をモニタリングします。ダッシュボードを更新または削除するには、これらのリソースを変更します。変更を行うと、Grafana の更新がトリガーされます。Grafana ユーザー インターフェースで直接実行した更新は保存できません。