Grafana でメトリクスを可視化する

ユーザーは Grafana の事前構築済みダッシュボード上のメトリクスにアクセスし、アドホックレポートに使用できます。

Grafana について

Grafana はブラウザベースのダッシュボードを提供します。

詳細については、Grafana ウェブサイト をご覧ください。

Grafana を開く

Grafana はデフォルトでデプロイされます。

コマンド minikube ip192.168.39.39 を返したと仮定すると、コンソールは http://grafana.192.168.39.39.nip.io で利用可能です。

minikube の IP アドレスは、minikube インスタンスが再作成されるたびに変更されます。
grafana

カスタムダッシュボードの追加

匿名ログインが不十分な場合、ユーザー名 admin とパスワード keycloak またはデプロイメントに関連するパスワードで Grafana にログインします。

カスタムダッシュボードはフォルダ monitoring/dashboards に含まれています。新しいファイルとしてダッシュボードをさらに追加すると、task は最新バージョンを minikube クラスターにインストールします。

ダッシュボードのスナップショットの取得

ユーザー名 admin とデプロイメントに関連するパスワードで Grafana にログインすると、ユーザーはダッシュボードのスナップショットを取得し、スタンドアロンの Grafana インスタンスにインポートしてダッシュボードを表示および操作できるように、スナップショットを json ファイルとしてエクスポートする機能を持つことになります。

スナップショットの取得方法と、ダッシュボードを共有するその他の方法の詳細については、こちら をお読みください。

ダッシュボード PDF の自動ダウンロード

利用可能なダッシュボードの PDF スナップショットを、指定された時間枠、Grafana インスタンス、Kubernetes 名前空間で取得できる python スクリプト snapGrafana.py があります。

必要な python ライブラリのインストール

pip3 install -U -r requirements.txt

また、以下のコマンドを使用して、すべての要件が満たされているかどうかを確認できます。

python3 -m pip check
インポートされる playwright python モジュールには、コマンド playwright install を使用した追加のインストールが必要です。そうしないと、これに似た例外が表示されます。
if you see a missing playwright._impl._api_types.Error: Executable doesn't exist at  exception, just run the below command to download the needed browsers for the script to work.

使用方法

スクリプトの要件が満たされると、以下のコマンドで使用でき、ダッシュボードの PDF がこのスクリプトを実行している現在のディレクトリにダウンロードされます。

python3 snapGrafana.py --grafana_domain ${GRAFANA_DOMAIN} \
--admin_password ${KEYCLOAK_MASTER_PASSWORD} \
--time_window "from=1694801561166&to=1694802033424" \
--keycloak_namespace "runner-keycloak"

snapGrafana.py CLI オプション

CLI オプション デフォルト

--grafana_domain

(設定されていません)

http:// なしの Grafana サーバーのドメイン。

例: --grafana_domain grafana.apps.gh-keycloak.abcd.xx.openshiftapps.com

--admin_password

(設定されていません)

これは Grafana 管理者ユーザーのパスワードです。minikube デプロイメントを使用する場合は admin で、openshift を使用する場合は KEYCLOAK_MASTER_PASSWORD に設定されているものです。

--keycloak_namespace

runner-keycloak

ターゲット Keycloak がデプロイされている名前空間。これは grafana ダッシュボードがフィルタリングするために使用します。

--time_window

(設定されていません)

ダッシュボードがダッシュボードのスコープをフィルタリングするために使用する時間枠。

Ansible モジュールの benchmark.sh スクリプトを使用する場合、プレイブックの実行の最後に以下のようなメッセージが表示されます。

INFO: Input for snapGrafana.py is from=1695382925487&to=1695383025382

kcb.sh を直接使用する場合、ユーザーは kcb.sh ベースのロードシミュレーション後に生成された result_grafana_inputs.json ファイルからこの値を取得でき、keycloak-benchmark-0.XX-SNAPSHOT/results/ ディレクトリにあります。以下は result_grafana_inputs.json ファイルの出力例であり、必要な時間枠の値は snap_grafana_time_window キーに関連付けられています。

{
  "uuid": "108fdd0c-41b7-41d5-af66-8a41cff19a8f",
  "name": "Scenario 'keycloak.scenario.authentication.AuthorizationCode' with 2 users-per-sec",
  "grafana_input": {
    "start": {
      "epoch_seconds": 1695213772,
      "iso": "2023-09-20T08:42:52-04:00"
    },
    "end": {
      "epoch_seconds": 1695213810,
      "iso": "2023-09-20T08:43:30-04:00"
    },
    "input": {
      "scenario": "keycloak.scenario.authentication.AuthorizationCode",
      "snap_grafana_time_window": "from=1695213772731&to=1695213810554",
      "unit": "users-per-sec",
      "value": 2,
      "config": "-Drealm-name=test-realm"
    }
  }
}