4.4. PromQL 查询


这些是在 Kubernetes 环境中创建的查询示例,用于将 Prometheus 用作监控工具。它们作为蓝图提供,您需要针对不同的运行时或监控环境进行调整。

注意

对于生产环境,您可能想要将这些查询或子查询替换为 记录规则,以确保它们没有使用太多的资源用于警报或实时仪表板。

4.4.1. 可用性

如果红帽构建的 Keycloak 实例可用并响应 Prometheus scrape 请求,则此指标将具有至少一个值,如果服务停机或无法访问,则为 0。

然后,使用 Grafana 等工具显示 30 天时间范围,并可以计算该时间窗中指标的平均值。

count_over_time(
  sum (up{
    container="keycloak", 
1

    namespace="$namespace"
  } > 0)[30d:15s]
) 
2

/
count_over_time(vector(1)[30d:15s]) 
3
Copy to Clipboard Toggle word wrap
1
根据附加标签过滤以识别红帽构建的 Keycloak 节点
2
当至少有一个红帽构建的 Keycloak 节点可用时,计算给定范围内的所有数据点和间隔
3
按照同一范围和间隔内所有数据点的数量划分
注意

在 Grafana 中,您可以将 30d:15s 替换为 $range:$间隔 到为仪表板选择的时间范围中的计算可用性 SLI。

4.4.2. 身份验证请求的延迟

此 Prometheus 查询计算在 0.25 秒内完成的身份验证请求的百分比,相对于红帽构建的 Keycloak 端点的所有身份验证请求,并在过去 30 天内针对特定的命名空间和 pod。

这个示例要求红帽构建 Keycloak 配置 http-metrics-slos 的值 250,表示应记录超过 250 ms 的请求的存储桶。将 http-metrics-histograms-enabled 设置为 true 会捕获额外的存储桶,这有助于进行性能故障排除。

sum(
  rate(
    http_server_requests_seconds_bucket{
      uri=~"/realms/{realm}/protocol/{protocol}.*|/realms/{realm}/login-actions.*", 
1

      le="0.25", 
2

      container="keycloak", 
3

      namespace="$namespace"}
    [30d] 
4

  )
) without (le,uri,status,outcome,method,pod,instance) 
5

/
sum(
  rate(
    http_server_requests_seconds_count{
      uri=~"/realms/{realm}/protocol/{protocol}.*|/realms/{realm}/login-actions.*", 
6

      container="keycloak",
      namespace="$namespace"}
    [30d] 
7

  )
) without (le,uri,status,outcome,method,pod,instance) 
8
Copy to Clipboard Toggle word wrap
1 6
与登录相关的 URL
2
SLO 定义的响应时间
3 7
根据附加标签过滤以识别红帽构建的 Keycloak 节点
4
SLO 指定的时间范围
5 8
忽略创建单个总和所需的多个标签
注意

在 Grafana 中,您可以在为仪表板选择的时间范围中将 30d 替换为 $_range 到 compute latency SLI。

4.4.3. 身份验证请求的错误

此 Prometheus 查询计算过去 30 天内返回所有身份验证请求的服务器端错误的身份验证请求百分比。

sum(
  rate(
    http_server_requests_seconds_count{
      uri=~"/realms/{realm}/protocol/{protocol}.*|/realms/{realm}/login-actions.*", 
1

      outcome="SERVER_ERROR", 
2

      container="keycloak", 
3

      namespace="$namespace"}
    [30d] 
4

  )
) without (le,uri,status,outcome,method,pod,instance) 
5

/
sum(
  rate(
    http_server_requests_seconds_count{
      uri=~"/realms/{realm}/protocol/{protocol}.*|/realms/{realm}/login-actions.*", 
6

      container="keycloak", 
7

      namespace="$namespace"}
    [30d] 
8

  )
) without (le,uri,status,outcome,method,pod,instance) 
9
Copy to Clipboard Toggle word wrap
1 6
与登录相关的 URL
2
过滤响应服务器错误(HTTP 状态 5xx)的所有请求
3 7
根据附加标签过滤以识别红帽构建的 Keycloak 节点
4 8
SLO 指定的时间范围
5 9
忽略创建单个总和所需的多个标签
注意

在 Grafana 中,您可以在为仪表板选择的时间范围中将 30d 替换为 $_range 到 compute 错误 SLI。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat