You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Prometheus-Operator自动采集Keycloak的Realm指标

方案1:单端点聚合全Realm指标(优先推荐,改动最小)

你当前使用的keycloak-metrics-spi 2.0及以上版本已原生支持全局指标输出,无需按Realm分别采集:

  • 开启全局指标开关后,所有Realm的指标会统一在/auth/metrics路径返回,每条指标自动携带realm标签区分所属领域,新增Realm无需任何配置变动,自动包含在指标范围内。
  • 仅需要保留1个ServiceMonitor指向这个统一路径即可,完全不需要维护Realm列表。

可以直接通过Helm values添加环境变量开启该功能,无需进入控制台修改配置:

keycloak:
  extraEnvVars:
    - name: KC_SPI_METRICS_GLOBAL_METRICS_ENABLED
      value: "true"

方案2:Prometheus HTTP服务发现自动发现Realm(适合必须按Realm单独采集的场景)

如果你的场景要求必须按Realm拆分采集端点,可以用Prometheus自带的HTTP服务发现能力实现自动发现:

  1. 开发一个极简HTTP服务(几十行代码即可),调用Keycloak Admin API的/auth/admin/realms接口拉取当前所有Realm名称
  2. 服务按照Prometheus HTTP服务发现的规范返回抓取目标列表,每个目标的__metrics_path__设置为对应Realm的/auth/realms/{realmName}/metrics,同时附加realm标签
  3. 在Prometheus配置中新增抓取任务,指向这个服务发现接口即可,新增Realm会在服务发现的刷新周期内自动被采集

方案3:CronJob动态生成ServiceMonitor(适合必须用ServiceMonitor管理采集任务的场景)

如果你的监控规范要求所有采集任务必须通过ServiceMonitor管理,可以部署一个定时任务实现自动维护:

  1. 编写CronJob定时调用Keycloak Admin API拉取全量Realm列表
  2. 复用到你现有的ServiceMonitor模板逻辑,自动生成/更新所有Realm对应的ServiceMonitor资源
  3. 无需手动维护values.yaml中的Realm列表,新增Realm会在定时任务触发时自动创建对应的采集规则

优化建议

你提到的SPI指标暴露在公网http端口的问题,无需依赖反向代理拦截:可以直接在Keycloak的Ingress规则中添加配置,禁止集群外IP访问所有匹配/*/metrics的路径,仅允许Prometheus所在的监控网段访问即可,安全性更高。

内容的提问来源于stack exchange,提问作者Max N.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:15:04