外部 Infinispan 部署

本文件包含可用於監控您的部署效能的外部 Infinispan 指標的詳細資訊

已啟用 Infinispan 伺服器指標

Infinispan 在端點 /metrics 中公開指標。預設情況下,它們是啟用的。我們建議啟用屬性 name-as-tags,因為它使指標名稱與快取名稱無關。

若要在 Infinispan 伺服器中設定指標,只需如下面的 XML 所示啟用即可。

infinispan.xml
<infinispan>
    <cache-container statistics="true">
        <metrics gauges="true" histograms="false" name-as-tags="true" />
    </cache-container>
</infinispan>

在 Kubernetes 中使用 Infinispan Operator 時,可以使用具有自訂組態的 ConfigMap 來啟用指標。下面顯示一個範例。

ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-config
data:
  infinispan-config.yaml: >
    infinispan:
      cacheContainer:
        metrics:
          gauges: true
          namesAsTags: true
          histograms: false
infinispan.yaml CR
apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
  name: infinispan
  annotations:
    infinispan.org/monitoring: 'true' (1)
spec:
  configMapName: "cluster-config" (2)
1 啟用部署的監控
2 使用自訂組態設定 ConfigMap 名稱。

其他資訊可以在這裡這裡找到。

叢集和網路

本節描述對於監控 Infinispan 節點之間的通訊以識別可能的網路問題很有用的指標。

全域標籤

  • cluster=<名稱>:叢集名稱。如果正在收集來自多個叢集的指標,則此標籤有助於識別它們的歸屬位置。

  • node=<節點>:報告指標的節點名稱。

回應時間

以下指標公開遠端請求的回應時間。回應時間是在兩個節點之間測量的,包括處理時間。所有請求都由這些指標測量,並且回應時間在整個叢集生命週期中應保持穩定。

在健康的叢集中,回應時間將保持穩定。回應時間的增加可能表示叢集已降級或節點負載過重。

標籤

  • node=<節點>:它識別傳送器節點。

  • target_node=<節點>:它識別接收器節點。

指標 描述

vendor_jgroups_stats_sync_requests_seconds_count

同步請求到接收器節點的次數。

vendor_jgroups_stats_sync_requests_seconds_sum

同步請求到接收器節點的總持續時間

啟用直方圖時,可以使用百分位數儲存桶。這些對於建立熱圖很有用,但是,收集和公開百分位數儲存桶可能會對部署效能產生負面影響。

頻寬

Infinispan 接收和傳送的所有位元組都由這些指標收集。此外,也會計算所有內部訊息(如心跳)。它們允許計算每個節點目前使用的頻寬。

指標名稱取決於正在使用的 JGroups 傳輸協定。
指標 協定 描述

vendor_jgroups_tcp_get_num_bytes_received

TCP

節點接收的位元組總數。

vendor_jgroups_udp_get_num_bytes_received

UDP

vendor_jgroups_tunnel_get_num_bytes_received

TUNNEL

vendor_jgroups_tcp_get_num_bytes_sent

TCP

節點傳送的位元組總數。

vendor_jgroups_tunnel_get_num_bytes_sent

UDP

vendor_jgroups_tunnel_get_num_bytes_sent

TUNNEL

執行緒集區

監控執行緒集區大小是一個很好的指標,可以顯示節點是否負載過重。接收到的所有請求都會新增到執行緒集區以進行處理,並且當執行緒集區已滿時,請求將被捨棄。重新傳輸機制可確保可靠的通訊,並增加資源使用量。

在健康的叢集中,執行緒集區絕不應接近其最大大小(預設情況下為 200 個執行緒)。
虛擬執行緒不提供執行緒集區指標。
指標名稱取決於正在使用的 JGroups 傳輸協定。
指標 協定 描述

vendor_jgroups_tcp_get_thread_pool_size

TCP

執行緒集區中的目前執行緒數。

vendor_jgroups_udp_get_thread_pool_size

UDP

vendor_jgroups_tunnel_get_thread_pool_size

TUNNEL

vendor_jgroups_tcp_get_largest_size

TCP

集區中曾經同時存在過的最大執行緒數。

vendor_jgroups_udp_get_largest_size

UDP

vendor_jgroups_tunnel_get_largest_size

TUNNEL

流量控制

流量控制負責將訊息傳送器的速率調整為一段時間內最慢接收器的速率。這是透過基於點數的系統來實作的,其中每個傳送器在傳送時會遞減其點數。當點數低於 0 時,傳送器會被封鎖,並且只有在接收器收到補充訊息時,才會繼續傳送訊息。

以下指標顯示封鎖訊息的數量和平均封鎖時間。當值不為零時,可能表示接收器過載,並可能降低叢集效能。

每個節點都有兩個獨立的流量控制協定,UFC 用於單點傳播訊息,MFC 用於多點傳播訊息。

健康的叢集會顯示所有指標的值為零。
指標 描述

vendor_jgroups_ufc_get_number_of_blockings

流量控制封鎖傳送器進行單點傳播訊息傳送的次數。

vendor_jgroups_ufc_get_average_time_blocked

嘗試傳送單點傳播訊息時,在流量控制中封鎖的平均時間 (以毫秒為單位)。

vendor_jgroups_mfc_get_number_of_blockings

流量控制封鎖傳送器進行多點傳播訊息傳送的次數。

vendor_jgroups_mfc_get_average_time_blocked

嘗試傳送多點傳播訊息時,在流量控制中封鎖的平均時間 (以毫秒為單位)。

重新傳輸

JGroups 提供可靠的訊息傳遞。當訊息在網路上被丟棄,或接收器無法處理訊息時,需要重新傳輸。重新傳輸會增加資源使用量,並且通常是系統過載的訊號。

隨機早期捨棄 (RED) 會監控傳送器佇列。當佇列幾乎已滿時,會捨棄訊息,並且必須進行重新傳輸。它可以防止執行緒被已滿的傳送器佇列封鎖。

健康的叢集會顯示所有指標的值為零。
指標 描述

vendor_jgroups_unicast3_get_num_xmits

重新傳輸的訊息數。

vendor_jgroups_red_get_dropped_messages

傳送器捨棄的訊息總數。

vendor_jgroups_red_get_drop_rate

傳送器捨棄的所有訊息的百分比。

網路分割

叢集大小

叢集大小指標會報告叢集中存在的節點數。如果它們不同,則可能表示節點正在加入、關機,或者在最糟糕的情況下,正在發生網路分割。

健康的叢集在所有節點中顯示相同的值。
指標 描述

vendor_cluster_size

叢集中的節點數。

跨站點狀態

跨站點狀態會報告與其他站點的連線狀態。如果線上則傳回值 1,如果離線則傳回 0。值 2 用於狀態未知的節點;並非所有節點都建立與遠端站點的連線,並且不包含此資訊。

健康的叢集顯示大於零的值。
指標 描述

vendor_jgroups_site_view_status

單一站點狀態 (如果線上則為 1)。

標籤

  • site=<名稱>:目的地站點的名稱。

網路分割事件

叢集中的網路分割可能會由於各種原因而發生。此指標無助於預測網路分割,但會發出已發生網路分割且已合併叢集的訊號。

健康的叢集會顯示此指標的值為零。
指標 描述

vendor_jgroups_merge3_get_num_merge_events

偵測並修復網路分割的次數。

Infinispan 快取

本節中的指標有助於監控 Infinispan 快取健全狀況和叢集複寫。

全域標籤

  • cache=<名稱>:快取名稱。

大小

使用這兩個指標監控快取中的項目數。如果快取已叢集化,則每個項目都有一個擁有者節點和零個或多個不同節點的備份複本。

將唯一條目大小指標加總,以取得叢集的條目總數。
指標 描述

vendor_statistics_approximate_entries

節點儲存的近似條目數量,包括備份副本。

vendor_statistics_approximate_entries_unique

節點儲存的近似條目數量,不包括備份副本。

資料存取

下列指標監控快取存取,例如讀取、寫入及其持續時間。

儲存

儲存操作是一種寫入操作,用於寫入或更新快取中儲存的值。

指標 描述

vendor_statistics_store_times_seconds_count

儲存請求的總數。

vendor_statistics_store_times_seconds_sum

所有儲存請求的總持續時間。

啟用直方圖時,可以使用百分位數儲存桶。這些對於建立熱圖很有用,但是,收集和公開百分位數儲存桶可能會對部署效能產生負面影響。

讀取

讀取操作會從快取中讀取一個值。它分為兩組,如果找到值則為命中,如果未找到則為未命中。

指標 描述

vendor_statistics_hit_times_seconds_count

讀取命中請求的總數。

vendor_statistics_hit_times_seconds_sum

所有讀取命中請求的總持續時間。

vendor_statistics_miss_times_seconds_count

讀取未命中請求的總數。

vendor_statistics_miss_times_seconds_sum

所有讀取未命中請求的總持續時間。

啟用直方圖時,可以使用百分位數儲存桶。這些對於建立熱圖很有用,但是,收集和公開百分位數儲存桶可能會對部署效能產生負面影響。

移除

移除操作會從快取中移除一個值。它分為兩組,如果值存在則為命中,如果值不存在則為未命中。

指標 描述

vendor_statistics_remove_hit_times_seconds_count

移除命中請求的總數。

vendor_statistics_remove_hit_times_seconds_sum

所有移除命中請求的總持續時間。

vendor_statistics_remove_miss_times_seconds_count

移除未命中請求的總數。

vendor_statistics_remove_miss_times_seconds_sum

所有移除未命中請求的總持續時間。

啟用直方圖時,可以使用百分位數儲存桶。這些對於建立熱圖很有用,但是,收集和公開百分位數儲存桶可能會對部署效能產生負面影響。