Keycloak でメトリクス情報の取得


株式会社 日立製作所の茂木です。今回は Keycloak のプラグインについて紹介します。

Keycloak はプラグインの開発を容易にするため、様々な機能の Service Provider Interface(SPI)を提供しています。この SPI を利用したプラグインがコミュニティベースで開発されていて、Keycloak の公式 HP でも紹介されています。Keycloak - Extensions

今回はこれらのなかから、Prometheus 形式で Keycloak の Metrics が取得可能になるkeycloak-metrics-spiを紹介していきます。

keycloak-metrics-spi

Metrics として下記の情報が取得できるようになります。

  • Java VM のパフォーマンス (Heap など)
  • ログインなどの Event
  • Endpoint ごとのレスポンスタイム

これらの Metrics を利用するため、プラグインをインストールして Prometheus で Metrics の取得、Grafana での可視化までを行っていきます。

検証環境

  • Keycloak 8.0.0
  • keycloak-metrics-spi 1.0.4
  • prometheus 2.14.0
  • grafana 6.4.4

Keycloak の設定

Keycloak の Metrics を取得できるようにするため、keycloak-metrics-spiを導入して Keyclaok の設定を行っていきます。

keycloak-metrics-spi の導入

まずプラグインの導入を行います。keycloak-metrics-spiの jar ファイルは、GitHub のRelease ページから取得できます。

今回は執筆時点で最新の1.0.4をダウンロードします。ダウンロードしてきた jar ファイルは Keycloak の standalone/deployments/ディレクトリに配置します。

ファイルを配置して Keycloak を起動後、Server Info -> Providers 画面でmetricsmetrics-listenerが有効になっていることを確認します。

Keycloak の設定

keycloak-metrics-spiでは、ログイン回数などの情報を Event Listner SPI を利用して取得しています。イベントの情報を取得できるようにするため、Event 保存の有効化および Event Listener SPI の有効化を行います。Readme には CLI を利用した方法が説明されていますが、今回は Admin Console から設定します。

Event -> Config を開き、下記の設定を行います。

  • Event Listeners にmetrics-listenerを追加

- Save Events を ON に設定

Metrics Endpoint の確認

keycloak-metrics-spiをインストールすると、http://localhost:8080/auth/realms/master/metrics でメトリクス情報が取れるようになります。ブラウザでアクセスすると、下記のようにメトリクスを取得できていることが確認できます。

Prometheus の設定

Prometheus が Keycloak の Metrics 情報を取得できるように、prometheus.yamlscrape_configに下記の設定を追加します。

scrape_configs:
  - job_name: "keycloak"
    metrics_path: /auth/realms/master/metrics
    static_configs:
      - targets: ["localhost:8080"]

設定追加後に Prometheus を起動し、Status -> Targets から Keycloak のエンドポイントが Target として設定されていることが確認できます。

Keycloak の Metrics が取得できていれば、ログイン数や Java Heap の使用量といった情報をグラフ表示できるようになります。

  • Login 数の表示

  • Java Heap 使用量の表示

Grafana での Dash Board 表示

最後に Prometheus が取得した Metrics を基に、Grafana で可視化してみます。Grafana のサイトで公開されているKeycloak Metrics という Dash Board があるので、これを Grafana にインポートします。なお、この Dash Board には Pie Chart プラグインが利用されているので、先にインストールしておいてください。

正しく設定されていれば、下に示すような Dash Board が表示されます。

最後に

今回はkeycloak-metrics-spiを紹介しましたが、他にも様々なプラグインが紹介されています。今後も色々なプラグインが開発されていくと思うので注目していきたいと思っています。