4.4. PromQL クエリー
これらは、Kubernetes 環境で作成され、監視ツールとして Prometheus で使用されるサンプルクエリーです。ブループリントとして提供されており、ランタイムや監視環境に合わせて調整する必要があります。
アラートやライブダッシュボードに使用する場合、実稼働環境ではこれらのクエリーまたはサブクエリーを recording rule に置き換えて、リソースを使いすぎないようにする必要があります。
4.4.1. 可用性 リンクのコピーリンクがクリップボードにコピーされました!
このメトリクスの値は、Red Hat build of Keycloak インスタンスが利用可能で、Prometheus スクレイプリクエストに応答している場合は少なくとも 1 になり、サービスがダウンしているかアクセスできない場合は 0 になります。
次に、Grafana などのツールを使用して 30 日間の時間範囲を表示し、その期間内のメトリクスの平均を計算します。
count_over_time(
sum (up{
container="keycloak",
namespace="$namespace"
} > 0)[30d:15s]
)
/
count_over_time(vector(1)[30d:15s])
Grafana では、値 30d:15s を $range:$interval に置き換えて、ダッシュボードで選択した時間範囲内の可用性 SLI を計算できます。
4.4.2. 認証リクエストのレイテンシー リンクのコピーリンクがクリップボードにコピーされました!
この Prometheus クエリーは、過去 30 日間に特定の namespace と Pod を対象とする特定の Red Hat build of Keycloak エンドポイントにおける過去 30 日間のすべての認証リクエストのうち、0.25 秒以内に完了した認証リクエストの割合を計算します。
この例では、Red Hat build of Keycloak 設定の http-metrics-slos に値 250 が含まれている必要があります。これは、250 ミリ秒より速いリクエストと遅いリクエストのバケットが記録されることを示しています。http-metrics-histograms-enabled を true に設定すると、パフォーマンスのトラブルシューティングに役立つ追加のバケットがキャプチャーされます。
sum(
rate(
http_server_requests_seconds_bucket{
uri=~"/realms/{realm}/protocol/{protocol}.*|/realms/{realm}/login-actions.*",
le="0.25",
container="keycloak",
namespace="$namespace"}
[30d]
)
) without (le,uri,status,outcome,method,pod,instance)
/
sum(
rate(
http_server_requests_seconds_count{
uri=~"/realms/{realm}/protocol/{protocol}.*|/realms/{realm}/login-actions.*",
container="keycloak",
namespace="$namespace"}
[30d]
)
) without (le,uri,status,outcome,method,pod,instance)
Grafana では、値 30d を $__range に置き換えて、ダッシュボードで選択した時間範囲内のレイテンシー SLI を計算できます。
4.4.3. 認証リクエストのエラー リンクのコピーリンクがクリップボードにコピーされました!
この Prometheus クエリーは、過去 30 日間に特定の namespace を対象とするすべての認証リクエストのうち、サーバー側エラーを返した認証リクエストの割合を計算します。
sum(
rate(
http_server_requests_seconds_count{
uri=~"/realms/{realm}/protocol/{protocol}.*|/realms/{realm}/login-actions.*",
outcome="SERVER_ERROR",
container="keycloak",
namespace="$namespace"}
[30d]
)
) without (le,uri,status,outcome,method,pod,instance)
/
sum(
rate(
http_server_requests_seconds_count{
uri=~"/realms/{realm}/protocol/{protocol}.*|/realms/{realm}/login-actions.*",
container="keycloak",
namespace="$namespace"}
[30d]
)
) without (le,uri,status,outcome,method,pod,instance)
Grafana では、値 30d を $__range に置き換えて、ダッシュボードで選択した時間範囲内のエラー SLI を計算できます。