LoginSignup
2
1

More than 1 year has passed since last update.

Keycloak Metrics SPIで、Red Hat SSO(Keycloak)の稼働統計をGrafanaで見る

Last updated at Posted at 2021-10-18

Red Hat Single Sign-on(以下、Red Hat SSO)の稼働統計をGrafanaで見てみます。
Red Hat SSOは、OSSのKeycloakをベースとした製品で、サポートを受けることができます。

稼働統計は、コミュニティのAerogear Keycloak Metrics SPIを利用します。
Keycloak Metrics SPIは、Red Hat SSOのサポート対象ではありませんが、利用することは可能です。
ちなみに、Red Hat SSOのコンテナイメージは、Prometheusメトリクスが利用可能ですが、ログイン回数などのメトリクスはなく、Red Hat SSOの土台になっているJBoss EAPのメトリクスのみとなっています。(2021/10/18時点)

本手順は、Red Hat SSOのインストールから実施していきます。
(Keycloakでもインストールバイナリが異なるだけで手順は同じになります)

環境

・OpenJDK 8
・Red Hat SSO 7.5.0 (Keycloak 15.0.2)
・Aerogear Keycloak Metrics SPI 2.5.1

1. Red Hat SSOのインストール

Red Hat カスタマーポータルにログインし、 Red Hat SSOをダウンロードします。
※本来はパッチもダウンロードして、パッチを当ててください。(執筆時はパッチは出てませんでした)
Red Hat SSOのzipインストールは、zip解凍すれば終わりです。配置場所は、任意です。

$ unzip rh-sso-7.5.0-server-dist.zip

zipを展開して作成したディレクトリーは、SSO_HOMEとします。
環境変数にしておきます。

$ export SSO_HOME="zipを展開して作成したディレクトリー"

Red Hat SSOの管理ユーザも作っておきます。(便宜上、admin/adminで作ってます)

$ $SSO_HOME/bin/add-user-keycloak.sh -u admin -p admin
Added 'admin' to '/xxxx/standalone/configuration/keycloak-add-user.json', restart server to load user

・参考手順

2. Aerogear Keycloak Metrics SPIのインストールとセットアップ

$SSO_HOME/standalone/deploymentsに配置すればOKです。

$ cd $SSO_HOME/standalone/deployments
$ curl -LO https://github.com/aerogear/keycloak-metrics-spi/releases/download/2.5.1/keycloak-metrics-spi-2.5.1.jar
$ touch keycloak-metrics-spi-2.5.1.jar.dodeploy
$ ls
README.txt              keycloak-metrics-spi-2.5.1.jar      keycloak-metrics-spi-2.5.1.jar.dodeploy

metrics-listener eventを有効化

metrics-listener eventを有効化します。これは、GUIでもできるのですが、手順作るのが楽なCUIでやります。

まずはRed Hat SSOを起動しておきます。
引数でバインドアドレスをワイルドカード(0.0.0.0)にしているのは、後述するPrometheusとGrafanaのインストールをdockerでやっているためです。(PrometheusからRed Hat SSOのメトリクス取得を楽にやるため)

$ $SSO_HOME/bin/standalone.sh -b 0.0.0.0

次に別ターミナルで、metrics-listener eventを有効化します。

$ $SSO_HOME/bin/kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin --password admin
Logging into http://localhost:8080/auth as user admin of realm master
$ $SSO_HOME/bin/kcadm.sh update events/config -s "eventsEnabled=true" -s "adminEventsEnabled=true" -s "eventsListeners+=metrics-listener"

これで、メトリクスは取得できるので、curlで確認します。

$ curl http://localhost:8080/auth/realms/master/metrics
# HELP keycloak_user_event_CLIENT_LOGIN Generic KeyCloak User event
# TYPE keycloak_user_event_CLIENT_LOGIN counter
# HELP keycloak_user_event_REGISTER_NODE Generic KeyCloak User event
# TYPE keycloak_user_event_REGISTER_NODE counter
# HELP keycloak_user_event_VALIDATE_ACCESS_TOKEN_ERROR Generic KeyCloak User event
# TYPE keycloak_user_event_VALIDATE_ACCESS_TOKEN_ERROR counter
・・・

・参考手順

3. PrometheusとGrafanaのインストールとセットアップ

PrometheusとGrafanaは、dockerでやってしまいます。(やっぱり、コンテナは楽です)

以下のファイル構成で作成していきます。

$ tree .
.
├── docker-compose.yml
└── prometheus
    └── prometheus.yml

docker-compose.ymlは以下の内容になります。

docker-compose.yml
version: "3"

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    volumes:
      - ./prometheus:/etc/prometheus/
    ports:
      - 9090:9090

  grafana:
    image: grafana/grafana
    container_name: grafana
    environment:
    - TERM=linux
    - GF_INSTALL_PLUGINS=grafana-piechart-panel # メトリクスのダッシュボードで必要となります
    ports:
      - 3000:3000

prometheus.ymlは以下の内容になります。
targetsのIPアドレスは、RH-SSOが動作しているマシンのIPアドレスにします。
インターバルは、すぐ確認したいので、5秒にしてます。

prometheus-compose.yml
global:
    scrape_interval: 5s 
    evaluation_interval: 5s
    external_labels:
      monitor: "sso-monitor"

rule_files:

scrape_configs:

  - job_name: "keycloak"  # メトリクスのダッシュボードがkeycloakのjob名を参照するので、ここはkeycloakにします

    metrics_path: /auth/realms/master/metrics
    static_configs:
      - targets: ["192.168.68.111:8080"] # RH-SSOが動作しているマシンのIPアドレスにします

ファイルの準備ができたら、起動します。

$ docker-compose up -d 
Creating network "sso-metrics_default" with the default driver
Creating grafana    ... done
Creating prometheus ... done

4. Prometheusを見てみる

prometheusは、http://localhost:9090 にアクセスすると表示できます。
statusタブからtargetを押すとprometheus-compose.ymlで設定したjob_nameの"RH SSO"が確認できます。

prometeus_1.png

5. Grafanaの設定とGrafanaを見てみる

Grafanaは、http://localhost:3000 にアクセスすると表示できます。
IDとパスワードは、admin/adminで入れます。なお、ログインするとパスワード変更が求めれます。

DataSourceを設定する

左ペインのConfigurationからDataSourceタブで、Prometheusを選択します。
HTTPのURL項目に、http://prometheus:9090 を入力して、save&testを実行します。

grafana1.png

Keycloak Metricsのダッシュボードを設定する

Keycloak Metrics用のダッシュボードが、公開されていますので、それを利用します。

左ペインのDashBordsからManagerを選択し、Importを選択します。
Import via grafana.comの項目に、https://grafana.com/grafana/dashboards/10441 を入力して、Loadを実行します。

grafana2.png

後は、Dash BoardからKeycloak Metricsを参照することで、Realmやクライアント(アプリケーション)毎のログイン回数などが表示されます。

grafana3.png

6. まとめ

Red Hat SSOのインストールからGrafanaで稼働統計を見るとこまでの手順を記載しました。
運用で実際使うGrafanaのダッシュボードでは、このRealmだけ見たいや、トークンの状況を重点的に見たいなどあると思います。
いずれもカスタマイズ可能なので、Keycloak Metricsのダッシュボードを参考にして、運用で確認したい内容に仕上げていくのがいいかと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1