使用外部 Infinispan 部署的 Keycloak
本文件包含可用於監控您部署效能的 Keycloak 指標詳細資訊。
本文檔中描述的部署適用於多站點部署。在此架構中,Keycloak 節點使用外部 Infinispan 來儲存快取資料。
如果您的部署未使用外部 Infinispan,請查閱Keycloak 叢集部署指南。
啟用 Keycloak 指標
Keycloak 在管理介面端點 /metrics
上公開指標。若要啟用,請使用建置時間選項 --metrics-enabled=true
。
在 Kubernetes 叢集上,使用 Keycloak Operator,可以透過在 Keycloak CR addionalOptions
中啟用指標,如下所示
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
labels:
app: keycloak
name: keycloak
spec:
additionalOptions:
- name: metrics-enabled
value: 'true'
其他資訊可以在此處找到。
Keycloak HTTP 指標
本節說明用於監控 Keycloak HTTP 請求處理的指標。
處理時間
這些指標公開處理時間,以監控 Keycloak 效能以及處理請求所需的時間。
在健全的叢集上,平均處理時間將保持穩定。處理時間的峰值或增加可能是某些節點負載過高的早期徵兆。 |
標籤
-
outcome
:更一般的結果標籤。 -
status
:HTTP 狀態碼。 -
uri
:請求的 URI。
指標 | 描述 |
---|---|
|
已處理的請求總數。 |
|
所有已處理請求的總持續時間。 |
啟用長條圖時,可以使用百分位數儲存區。這些對於建立熱圖很有用,但收集和公開百分位數儲存區可能會對部署效能產生負面影響。 |
Infinispan 快取
Keycloak 在嵌入式 Infinispan 快取中快取資料。本節中的指標有助於監控快取健康狀況。
全域標籤
-
cache=<name>
:快取名稱。
大小
使用這兩個指標監控快取中的項目數。如果快取是叢集的,則每個項目都有一個擁有者節點和零個或多個不同節點的備份副本。
將唯一項目大小指標相加,以取得叢集的項目總數。 |
指標 | 描述 |
---|---|
|
節點儲存的近似項目數,包括備份副本。 |
|
節點儲存的近似項目數,不包括備份副本。 |
資料存取
以下指標監控快取存取,例如讀取、寫入及其持續時間。
儲存
儲存作業是寫入作業,用於寫入或更新快取中儲存的值。
指標 | 描述 |
---|---|
|
儲存請求總數。 |
|
所有儲存請求的總持續時間。 |
啟用長條圖時,可以使用百分位數儲存區。這些對於建立熱圖很有用,但收集和公開百分位數儲存區可能會對部署效能產生負面影響。 |
讀取
讀取作業從快取讀取值。它分為兩組,找到值則為命中,未找到則為未命中。
指標 | 描述 |
---|---|
|
讀取命中請求總數。 |
|
所有讀取命中請求的總持續時間。 |
|
讀取未命中請求總數。 |
|
所有讀取未命中請求的總持續時間。 |
啟用長條圖時,可以使用百分位數儲存區。這些對於建立熱圖很有用,但收集和公開百分位數儲存區可能會對部署效能產生負面影響。 |
移除
移除作業從快取中移除值。它分為兩組,如果值存在則為命中,如果值不存在則為未命中。
指標 | 描述 |
---|---|
|
移除命中請求總數。 |
|
所有移除命中請求的總持續時間。 |
|
移除未命中請求總數。 |
|
所有移除未命中請求的總持續時間。 |
啟用長條圖時,可以使用百分位數儲存區。這些對於建立熱圖很有用,但收集和公開百分位數儲存區可能會對部署效能產生負面影響。 |
對於 |
讀取和移除作業的命中率
可以使用運算式來計算 Prometheus 等系統中快取的命中率。例如,讀取作業的命中率可以表示為
vendor_statistics_hit_times_seconds_count/(vendor_statistics_hit_times_seconds_count+vendor_statistics_miss_times_seconds_count)
讀取/寫入比率
可以使用運算式來計算快取的讀寫比率,使用上述指標
(vendor_statistics_hit_times_seconds_count+vendor_statistics_miss_times_seconds_count)/(vendor_statistics_hit_times_seconds_count+vendor_statistics_miss_times_seconds_count+vendor_statistics_remove_hit_times_seconds_count+vendor_statistics_remove_miss_times_seconds_count+vendor_statistics_store_times_seconds_count)
逐出
逐出是限制快取大小的程序,當快取滿時,會移除項目,以便為要快取的新項目騰出空間。由於 Keycloak 會在 users
、realms
和 authorization
中快取資料庫實體,因此資料庫存取始終會進行逐出事件。
指標 | 描述 |
---|---|
|
逐出事件總數。 |
逐出率
逐出的快速增加和資料庫 CPU 使用率非常高,表示 users
或 realms
快取對於順暢的 Keycloak 運作而言太小,因為資料需要非常頻繁地從資料庫重新載入,這會減慢回應速度。如果記憶體足夠,請考慮使用 CLI 選項 cache-embedded-users-max-count
或 cache-embedded-realms-max-count
來增加最大快取大小
交易
交易快取使用單階段提交和兩階段提交通訊協定來完成交易。這些指標會追蹤操作持續時間。
PESSMISTIC 鎖定模式使用單階段提交,並且不會建立提交請求。 |
在健全的叢集中,回滾次數應保持為零。死鎖應該很少見,但它們會增加回滾次數。 |
指標 | 描述 |
---|---|
|
準備請求總數。 |
|
所有準備請求的總持續時間。 |
|
回滾請求總數。 |
|
所有回滾請求的總持續時間。 |
|
提交請求總數。 |
|
所有提交請求的總持續時間。 |
啟用長條圖時,可以使用百分位數儲存區。這些對於建立熱圖很有用,但收集和公開百分位數儲存區可能會對部署效能產生負面影響。 |