监控

Alauda Build of Keycloak 提供与 Prometheus 兼容的内置指标。启用指标后,您可以在可观测性技术栈中监控 Keycloak 的健康状况、性能和使用情况。

启用指标

通过在 Keycloak CR 中设置 metrics-enabled 选项来启用指标:

spec:
  additionalOptions:
    - name: metrics-enabled
      value: "true"

启用后,Keycloak 会在管理端口上公开一个 metrics 端点(默认值:9000),可通过 spec.httpManagement.port 进行配置:

  • 集群内http://<keycloak-service-name>.<namespace>:9000/metrics
  • 在 Pod 内http://localhost:9000/metrics

管理端口与主 HTTP/HTTPS 端口是分离的。

关键指标

可用的指标类别如下:

CategoryExample MetricsDescription
JVMjvm_memory_used_bytes, jvm_gc_pause_secondsJava Virtual Machine 资源使用情况
HTTPhttp_server_requests_seconds, http_server_active_requests请求数量、延迟和活动连接数
Databaseagroal_active_connections, agroal_awaiting_connections数据库连接池使用情况
Keycloak Eventskeycloak_logins_total, keycloak_login_errors_total每个 Realm 的身份验证成功和失败计数

配置 Prometheus 抓取

将以下 scrape 配置添加到您的 Prometheus 实例中,以收集 Keycloak 指标:

scrape_configs:
  - job_name: keycloak
    static_configs:
      - targets:
          - <keycloak-service>:9000
    metrics_path: /metrics

如果您正在使用 Prometheus Operator,请创建一个 ServiceMonitor

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: keycloak-metrics
  namespace: <namespace>
spec:
  selector:
    matchLabels:
      app: keycloak
  endpoints:
    - port: management
      path: /metrics
      interval: 30s

Liveness 和 Readiness 探针

Keycloak Operator 会自动配置 liveness 和 readiness 探针。您可以在 Keycloak CR 中自定义探针参数:

spec:
  livenessProbe:
    periodSeconds: 10
    failureThreshold: 3
  readinessProbe:
    periodSeconds: 10
    failureThreshold: 3

这些探针使用位于 http://<pod>:9000/health/livehttp://<pod>:9000/health/ready 的管理端点。

健康检查端点

Keycloak 会在管理端口上公开三个健康检查端点:

EndpointDescription
/health/live如果 Keycloak 进程正在运行,则返回 UP
/health/ready如果 Keycloak 已准备好处理请求(数据库已连接、缓存已初始化),则返回 UP
/health/started在 Keycloak 完全启动后返回 UP