使用Keycloak获取度量信息
我是Hitachi制作公司的茂木。这次我要介绍的是Keycloak插件。
为了方便插件开发,Keycloak提供了各种功能的服务提供者接口(SPI)。基于这些SPI开发的插件是由社区开发并且在Keycloak官方网站上进行了介绍。Keycloak – 扩展.
本次我们将介绍一种名为keycloak-metrics-spi的选项,可以通过Prometheus格式来获取Keycloak的指标数据。
Keycloak度量指标扩展点
您可以获取以下信息作为指标。
-
- Java VM のパフォーマンス (Heap など)
-
- ログインなどの Event
- Endpoint ごとのレスポンスタイム
为了使用这些指标,我们需要在Prometheus上安装插件来获取指标,并在Grafana中进行可视化。
验证环境
-
- Keycloak 8.0.0
-
- keycloak-metrics-spi 1.0.4
-
- prometheus 2.14.0
- grafana 6.4.4
Keycloak的设置
为了能够获取Keycloak的指标,我们将引入keycloak-metrics-spi并进行Keycloak配置。
引入 keycloak-metrics-spi
首先,进行插件的安装。可以从GitHub的Release页面获取keycloak-metrics-spi的jar文件。
这次我们将下载最新的1.0.4版本。下载的jar文件将放置在Keycloak的standalone/deployments/目录中。
将文件放置并启动Keycloak后,在“Server Info -> Providers”页面上确认metrics和metrics-listener已启用。
Keycloak的配置
在keycloak-metrics-spi中,我们利用Event Listner SPI来获取登录次数等信息。为了能够获取事件信息,我们将启用事件保存和事件监听器SPI。Readme中介绍了使用CLI的方法,但本次我们将从Admin Console进行设置。
打开事件配置,进行以下设置。
- Event Listeners にmetrics-listenerを追加
将“Save Events”设置为“ON”。
确认度量终端点
安装keycloak-metrics-spi后,可以通过访问http://localhost:8080/auth/realms/master/metrics 来获取度量信息。在浏览器中访问,可以确认已成功获取下面的度量信息。
普罗米修斯的设置
为了使Prometheus能够获取Keycloak的Metrics信息,我们需要在prometheus.yaml的scrape_config中添加以下设置。
scrape_configs:
- job_name: "keycloak"
metrics_path: /auth/realms/master/metrics
static_configs:
- targets: ["localhost:8080"]
設定追加後,您可以啟動 Prometheus,並從「狀態」->「目標」中確認 Keycloak 端點是否已設定為目標。
如果能够获取Keycloak的Metrics,就能够将登录次数和Java Heap的使用量等信息以图表形式展示出来。
- Login 数の表示
- Java Heap 使用量の表示
在Grafana中显示仪表板
最后,我们将使用Prometheus获取的Metrics,在Grafana中进行可视化。在Grafana网站上,有一个名为Keycloak Metrics的仪表板可以使用,因此我们将其导入到Grafana中。请注意,该仪表板使用了Pie Chart插件,所以请先安装该插件。
如果设置正确,将显示如下所示的仪表板。
最后一步
这次我们介绍了keycloak-metrics-spi,还有其他各种插件正在被介绍。由于我们认为将来还会开发出各种各样的插件,所以我们希望能够继续关注。