统计
概览
集群管理器有一个以 cluster_manager. 为根的统计树。以下列出统计数据。统计名称中的任何 :
字符将被替换为 _
。统计数据包含集群管理器管理的所有集群,包括用于数据平面上游的集群和控制平面 xDS 集群。
名称 |
类型 |
描述 |
---|---|---|
cluster_added |
计数器 |
已添加的总集群数(通过静态配置或 CDS 添加) |
cluster_modified |
计数器 |
已修改的总集群数(通过 CDS 修改) |
cluster_removed |
计数器 |
已移除的总集群数(通过 CDS 移除) |
cluster_updated |
计数器 |
总集群更新数 |
cluster_updated_via_merge |
计数器 |
作为合并更新应用的总集群更新数 |
update_merge_cancelled |
计数器 |
被取消并提前交付的合并更新总数 |
update_out_of_merge_window |
计数器 |
超出合并窗口的更新总数 |
active_clusters |
仪表盘 |
当前活动(已预热)集群的数量 |
warming_clusters |
仪表盘 |
当前正在预热(不活跃)的集群数量 |
除了集群管理器统计数据之外,每个工作线程还有以 thread_local_cluster_manager.<worker_id>. 为根的本地集群管理器统计树。以下列出统计数据。
名称 |
类型 |
描述 |
---|---|---|
clusters_inflated |
仪表盘 |
工作线程已初始化的集群数。如果使用集群延迟,则此数字应 <= (cluster_added - clusters_removed)。 |
每个集群都有一个以 cluster.<name>. 为根的统计树。以下列出统计数据
名称 |
类型 |
描述 |
---|---|---|
upstream_cx_total |
计数器 |
连接总数 |
upstream_cx_active |
仪表盘 |
活动连接总数 |
upstream_cx_http1_total |
计数器 |
HTTP/1.1 连接总数 |
upstream_cx_http2_total |
计数器 |
HTTP/2 连接总数 |
upstream_cx_http3_total |
计数器 |
HTTP/3 连接总数 |
upstream_cx_connect_fail |
计数器 |
连接失败总数 |
upstream_cx_connect_timeout |
计数器 |
连接连接超时总数 |
upstream_cx_connect_with_0_rtt |
计数器 |
能够发送 0-rtt 请求(提前数据)的连接总数。 |
upstream_cx_idle_timeout |
计数器 |
连接空闲超时总数 |
upstream_cx_max_duration_reached |
计数器 |
由于达到最大持续时间而关闭的连接总数 |
upstream_cx_connect_attempts_exceeded |
计数器 |
连续连接失败次数超过配置的连接尝试次数 |
upstream_cx_overflow |
计数器 |
集群的连接断路器溢出的次数 |
upstream_cx_connect_ms |
直方图 |
连接建立毫秒数 |
upstream_cx_length_ms |
直方图 |
连接持续毫秒数 |
upstream_cx_destroy |
计数器 |
已销毁的连接总数 |
upstream_cx_destroy_local |
计数器 |
在本地销毁的连接总数 |
upstream_cx_destroy_remote |
计数器 |
在远程销毁的连接总数 |
upstream_cx_destroy_with_active_rq |
计数器 |
已销毁的连接总数,这些连接具有 1 个或更多个活动请求 |
upstream_cx_destroy_local_with_active_rq |
计数器 |
在本地销毁的连接总数,这些连接具有 1 个或更多个活动请求 |
upstream_cx_destroy_remote_with_active_rq |
计数器 |
在远程销毁的连接总数,这些连接具有 1 个或更多个活动请求 |
upstream_cx_close_notify |
计数器 |
通过 HTTP/1.1 连接关闭标头或 HTTP/2 或 HTTP/3 GOAWAY 关闭的连接总数 |
upstream_cx_rx_bytes_total |
计数器 |
接收的连接字节总数 |
upstream_cx_rx_bytes_buffered |
仪表盘 |
当前缓冲的接收连接字节数 |
upstream_cx_tx_bytes_total |
计数器 |
发送的连接字节总数 |
upstream_cx_tx_bytes_buffered |
仪表盘 |
当前缓冲的发送连接字节数 |
upstream_cx_pool_overflow |
计数器 |
集群的连接池断路器溢出的次数 |
upstream_cx_protocol_error |
计数器 |
连接协议错误总数 |
upstream_cx_max_requests |
计数器 |
由于达到最大请求数而关闭的连接总数 |
upstream_cx_none_healthy |
计数器 |
由于没有健康的宿主机而无法建立连接的次数 |
upstream_rq_total |
计数器 |
请求总数 |
upstream_rq_active |
仪表盘 |
活动请求总数 |
upstream_rq_pending_total |
计数器 |
等待连接池连接的请求总数 |
upstream_rq_pending_overflow |
计数器 |
溢出连接池或请求(主要针对 HTTP/2 及以上)断路器并失败的请求总数 |
upstream_rq_pending_failure_eject |
计数器 |
由于连接池连接失败或远程连接终止而失败的请求总数 |
upstream_rq_pending_active |
仪表盘 |
等待连接池连接的活动请求总数 |
upstream_rq_cancelled |
计数器 |
在获得连接池连接之前取消的请求总数 |
upstream_rq_maintenance_mode |
计数器 |
由于 维护模式 而导致立即返回 503 的请求总数 |
upstream_rq_timeout |
计数器 |
等待响应超时请求总数 |
upstream_rq_max_duration_reached |
计数器 |
由于达到最大持续时间而关闭的请求总数 |
upstream_rq_per_try_timeout |
计数器 |
达到每次尝试超时的请求总数(请求对冲启用时除外) |
upstream_rq_rx_reset |
计数器 |
远程重置的请求总数 |
upstream_rq_tx_reset |
计数器 |
在本地重置的请求总数 |
upstream_rq_retry |
计数器 |
请求重试总数 |
upstream_rq_retry_backoff_exponential |
计数器 |
使用指数退避策略的重试总数 |
upstream_rq_retry_backoff_ratelimited |
计数器 |
使用速率限制退避策略的重试总数 |
upstream_rq_retry_limit_exceeded |
计数器 |
由于超过 配置的最大重试次数 而未重试的请求总数 |
upstream_rq_retry_success |
计数器 |
请求重试成功的总数 |
upstream_rq_retry_overflow |
计数器 |
由于断路器或超过 重试预算 而未重试的请求总数 |
upstream_flow_control_paused_reading_total |
计数器 |
流量控制暂停从上游读取的总次数 |
upstream_flow_control_resumed_reading_total |
计数器 |
流量控制恢复从上游读取的总次数 |
upstream_flow_control_backed_up_total |
计数器 |
上游连接备份并暂停从下游读取的总次数 |
upstream_flow_control_drained_total |
计数器 |
上游连接清空并恢复从下游读取的总次数 |
upstream_internal_redirect_failed_total |
计数器 |
内部重定向失败导致重定向传递到下游的总次数。 |
upstream_internal_redirect_succeeded_total |
计数器 |
内部重定向导致第二个上游请求的总次数。 |
membership_change |
计数器 |
集群成员资格更改总数 |
membership_healthy |
仪表盘 |
当前集群健康总数(包括健康检查和异常检测) |
membership_degraded |
仪表盘 |
当前集群 降级 总数 |
membership_excluded |
仪表盘 |
当前集群 排除 总数 |
membership_total |
仪表盘 |
当前集群成员资格总数 |
retry_or_shadow_abandoned |
计数器 |
由于缓冲区限制而取消阴影或重试缓冲的总次数 |
config_reload |
计数器 |
由于不同的配置而导致配置重新加载的 API 获取总数 |
update_attempt |
计数器 |
服务发现尝试的集群成员资格更新总数 |
update_success |
计数器 |
服务发现成功更新的集群成员资格总数 |
update_failure |
计数器 |
服务发现失败更新的集群成员资格总数 |
update_duration |
直方图 |
花费在更新配置上的时间 |
update_empty |
计数器 |
以空集群负载分配结束并继续使用先前配置的集群成员资格更新总数 |
update_no_rebuild |
计数器 |
没有导致任何集群负载均衡结构重建的成功集群成员资格更新总数 |
version |
仪表盘 |
上次成功 API 获取的內容哈希 |
warming_state |
仪表盘 |
当前集群预热状态 |
max_host_weight |
仪表盘 |
集群中任何宿主机最大权重 |
bind_errors |
计数器 |
将套接字绑定到配置的源地址的总错误数 |
assignment_timeout_received |
计数器 |
收到的具有端点租约信息的分配总数。 |
assignment_stale |
计数器 |
收到分配在新的分配到达之前变为陈旧的次数。 |
HTTP/3 协议统计
HTTP/3 协议统计是全局的,以下列出统计数据
名称 |
类型 |
描述 |
---|---|---|
upstream.<tx/rx>.quic_connection_close_error_code_<error_code> |
计数器 |
延迟初始化以记录每个 QUIC 连接关闭错误代码的一组计数器。 |
upstream.<tx/rx>.quic_reset_stream_error_code_<error_code> |
计数器 |
延迟初始化以记录每个 QUIC 流重置错误代码的一组计数器。 |
健康检查统计
如果配置了健康检查,则集群将有一个以 cluster.<name>.health_check. 为根的额外统计树。以下列出统计数据
名称 |
类型 |
描述 |
---|---|---|
attempt |
计数器 |
健康检查次数 |
success |
计数器 |
成功健康检查次数 |
failure |
计数器 |
立即失败的健康检查次数(例如 HTTP 503)以及网络故障次数 |
passive_failure |
计数器 |
由于被动事件(例如 x-envoy-immediate-health-check-fail)导致的健康检查失败次数 |
network_failure |
计数器 |
由于网络错误导致的健康检查失败次数 |
verify_cluster |
计数器 |
尝试集群名称验证的健康检查次数 |
healthy |
仪表盘 |
健康成员数量 |
异常检测统计
如果为集群配置了 异常值检测,统计信息将以 cluster.<name>.outlier_detection. 为根,并包含以下内容
名称 |
类型 |
描述 |
---|---|---|
ejections_enforced_total |
计数器 |
由于任何异常值类型而强制执行的剔除次数 |
ejections_active |
仪表盘 |
当前剔除的主机数量 |
ejections_overflow |
计数器 |
由于最大剔除百分比而中止的剔除次数 |
ejections_enforced_consecutive_5xx |
计数器 |
强制执行的连续 5xx 剔除次数 |
ejections_detected_consecutive_5xx |
计数器 |
检测到的连续 5xx 剔除次数(即使未强制执行) |
ejections_enforced_success_rate |
计数器 |
强制执行的成功率异常值剔除次数。此计数器的确切含义取决于 outlier_detection.split_external_local_origin_errors 配置项。有关详细信息,请参阅 异常值检测文档。 |
ejections_detected_success_rate |
计数器 |
检测到的成功率异常值剔除次数(即使未强制执行)。此计数器的确切含义取决于 outlier_detection.split_external_local_origin_errors 配置项。有关详细信息,请参阅 异常值检测文档。 |
ejections_enforced_consecutive_gateway_failure |
计数器 |
强制执行的连续网关故障剔除次数 |
ejections_detected_consecutive_gateway_failure |
计数器 |
检测到的连续网关故障剔除次数(即使未强制执行) |
ejections_enforced_consecutive_local_origin_failure |
计数器 |
强制执行的连续本地来源故障剔除次数 |
ejections_detected_consecutive_local_origin_failure |
计数器 |
检测到的连续本地来源故障剔除次数(即使未强制执行) |
ejections_enforced_local_origin_success_rate |
计数器 |
针对本地来源的故障强制执行的成功率异常值剔除次数 |
ejections_detected_local_origin_success_rate |
计数器 |
针对本地来源的故障检测到的成功率异常值剔除次数(即使未强制执行) |
ejections_enforced_failure_percentage |
计数器 |
强制执行的失败百分比异常值剔除次数。此计数器的确切含义取决于 outlier_detection.split_external_local_origin_errors 配置项。有关详细信息,请参阅 异常值检测文档。 |
ejections_detected_failure_percentage |
计数器 |
检测到的失败百分比异常值剔除次数(即使未强制执行)。此计数器的确切含义取决于 outlier_detection.split_external_local_origin_errors 配置项。有关详细信息,请参阅 异常值检测文档。 |
ejections_enforced_failure_percentage_local_origin |
计数器 |
针对本地来源的故障强制执行的失败百分比异常值剔除次数 |
ejections_detected_failure_percentage_local_origin |
计数器 |
针对本地来源的故障检测到的失败百分比异常值剔除次数(即使未强制执行) |
ejections_total |
计数器 |
已弃用。由于任何异常值类型(即使未强制执行)而剔除的次数 |
ejections_consecutive_5xx |
计数器 |
已弃用。连续 5xx 剔除的次数(即使未强制执行) |
断路器统计信息
断路器统计信息将以 cluster.<name>.circuit_breakers.<priority>. 为根,并包含以下内容
名称 |
类型 |
描述 |
---|---|---|
cx_open |
仪表盘 |
连接断路器是否在其并发限制内(0)或已达到容量且不再允许(1) |
cx_pool_open |
仪表盘 |
连接池断路器是否在其并发限制内(0)或已达到容量且不再允许(1) |
rq_pending_open |
仪表盘 |
挂起请求断路器是否在其并发限制内(0)或已达到容量且不再允许(1) |
rq_open |
仪表盘 |
请求断路器是否在其并发限制内(0)或已达到容量且不再允许(1) |
rq_retry_open |
仪表盘 |
重试断路器是否在其并发限制内(0)或已达到容量且不再允许(1) |
remaining_cx |
仪表盘 |
断路器达到其并发限制之前剩余的连接数 |
remaining_pending |
仪表盘 |
断路器达到其并发限制之前剩余的挂起请求数 |
remaining_rq |
仪表盘 |
断路器达到其并发限制之前剩余的请求数 |
remaining_retries |
仪表盘 |
断路器达到其并发限制之前剩余的重试次数 |
注意
以 remaining_
为前缀的指标默认情况下不会生成。若要跟踪断路器打开之前剩余的资源数量,请在断路器配置中将参数 track_remaining 设置为 true。
超时预算统计信息
如果启用了 超时预算统计信息跟踪,统计信息将添加到 cluster.<name> 中,并包含以下内容
名称 |
类型 |
描述 |
---|---|---|
upstream_rq_timeout_budget_percent_used |
直方图 |
用于等待响应的全局超时的百分比 |
upstream_rq_timeout_budget_per_try_percent_used |
直方图 |
用于等待响应的每次尝试超时的百分比 |
动态 HTTP 统计信息
如果使用 HTTP,还提供动态 HTTP 响应代码统计信息。这些由各种内部系统以及一些过滤器(如 路由器过滤器 和 速率限制过滤器)发出。它们的根目录为 cluster.<name>.,并包含以下统计信息
名称 |
类型 |
描述 |
---|---|---|
upstream_rq_completed |
计数器 |
完成的总上游请求数 |
upstream_rq_<*xx> |
计数器 |
汇总的 HTTP 响应代码(例如,2xx、3xx 等) |
upstream_rq_<*> |
计数器 |
特定的 HTTP 响应代码(例如,201、302 等) |
upstream_rq_time |
直方图 |
请求时间(毫秒) |
canary.upstream_rq_completed |
计数器 |
完成的总上游金丝雀请求数 |
canary.upstream_rq_<*xx> |
计数器 |
上游金丝雀汇总的 HTTP 响应代码 |
canary.upstream_rq_<*> |
计数器 |
上游金丝雀特定的 HTTP 响应代码 |
canary.upstream_rq_time |
直方图 |
上游金丝雀请求时间(毫秒) |
internal.upstream_rq_completed |
计数器 |
完成的总内部来源请求数 |
internal.upstream_rq_<*xx> |
计数器 |
内部来源汇总的 HTTP 响应代码 |
internal.upstream_rq_<*> |
计数器 |
内部来源特定的 HTTP 响应代码 |
internal.upstream_rq_time |
直方图 |
内部来源请求时间(毫秒) |
external.upstream_rq_completed |
计数器 |
完成的总外部来源请求数 |
external.upstream_rq_<*xx> |
计数器 |
外部来源汇总的 HTTP 响应代码 |
external.upstream_rq_<*> |
计数器 |
外部来源特定的 HTTP 响应代码 |
external.upstream_rq_time |
直方图 |
外部来源请求时间(毫秒) |
TLS 统计信息
如果集群使用 TLS,则以下统计信息将以 cluster.<name>.ssl. 为根
名称 |
类型 |
描述 |
---|---|---|
connection_error |
计数器 |
总 TLS 连接错误(不包括证书验证失败) |
handshake |
计数器 |
总 TLS 连接握手成功次数 |
session_reused |
计数器 |
总 TLS 会话恢复成功次数 |
no_certificate |
计数器 |
总 TLS 连接(没有客户端证书)成功次数 |
fail_verify_no_cert |
计数器 |
由于缺少客户端证书而导致的 TLS 连接失败总次数 |
fail_verify_error |
计数器 |
由于 CA 验证失败而导致的 TLS 连接失败总次数 |
fail_verify_san |
计数器 |
由于 SAN 验证失败而导致的 TLS 连接失败总次数 |
fail_verify_cert_hash |
计数器 |
由于证书固定验证失败而导致的 TLS 连接失败总次数 |
ocsp_staple_failed |
计数器 |
由于不符合 OCSP 策略而导致的 TLS 连接失败总次数 |
ocsp_staple_omitted |
计数器 |
没有将 OCSP 响应进行固定而成功建立的 TLS 连接总次数 |
ocsp_staple_responses |
计数器 |
总 TLS 连接(有效的 OCSP 响应可用)(无论客户端是否请求固定) |
ocsp_staple_requests |
计数器 |
客户端请求 OCSP 固定时建立的 TLS 连接总次数 |
ciphers.<cipher> |
计数器 |
使用密码 <cipher> 成功建立的 TLS 连接总次数 |
curves.<curve> |
计数器 |
使用 ECDHE 曲线 <curve> 成功建立的 TLS 连接总次数 |
sigalgs.<sigalg> |
计数器 |
使用签名算法 <sigalg> 成功建立的 TLS 连接总次数 |
versions.<version> |
计数器 |
使用协议版本 <version> 成功建立的 TLS 连接总次数 |
was_key_usage_invalid |
计数器 |
使用 无效 keyUsage 扩展 成功建立的 TLS 连接总次数。(此功能在 BoringSSL FIPS 中尚不可用,因为存在 问题 #28246) |
TCP 统计信息
以下 TCP 统计信息在使用 TCP 统计信息传输套接字 时可用,其根目录为 cluster.<name>.tcp_stats.
注意
这些指标由操作系统提供。由于操作系统指标可用性和测量方法的不同,这些值可能在不同操作系统或同一操作系统的不同版本之间不一致。
名称 |
类型 |
描述 |
---|---|---|
cx_tx_segments |
计数器 |
总 TCP 传输段数 |
cx_rx_segments |
计数器 |
总 TCP 接收段数 |
cx_tx_data_segments |
计数器 |
总 TCP 传输段数(数据长度非零) |
cx_rx_data_segments |
计数器 |
总 TCP 接收段数(数据长度非零) |
cx_tx_retransmitted_segments |
计数器 |
总 TCP 重传段数 |
cx_rx_bytes_received |
计数器 |
总有效负载字节数(已为其发送 TCP 确认) |
cx_tx_bytes_sent |
计数器 |
总有效负载字节数(包括重传字节) |
cx_tx_unsent_bytes |
仪表盘 |
Envoy 已发送给操作系统但尚未发送的字节数 |
cx_tx_unacked_segments |
仪表盘 |
已传输但尚未确认的段数 |
cx_tx_percent_retransmitted_segments |
直方图 |
连接上重传段数的百分比 |
cx_rtt_us |
直方图 |
平滑的往返时间估计值(微秒) |
cx_rtt_variance_us |
直方图 |
往返时间(RTT)的估计方差,单位为微秒。较高的值表示更大的可变性。 |
备用树动态 HTTP 统计信息
如果配置了备用树统计信息,它们将出现在 cluster.<name>.<alt name>. 命名空间中。生成的统计信息与动态 HTTP 统计信息部分中记录的相同 以上.
每个服务区域的动态 HTTP 统计信息
如果服务区域可用于本地服务(通过 --service-zone
)和 上游集群,Envoy 将在 cluster.<name>.zone.<from_zone>.<to_zone>. 命名空间中跟踪以下统计信息。
名称 |
类型 |
描述 |
---|---|---|
upstream_rq_<*xx> |
计数器 |
汇总的 HTTP 响应代码(例如,2xx、3xx 等) |
upstream_rq_<*> |
计数器 |
特定的 HTTP 响应代码(例如,201、302 等) |
upstream_rq_time |
直方图 |
请求时间(毫秒) |
负载均衡器统计信息
用于监控负载均衡器决策的统计信息。统计信息以 cluster.<name>. 为根,并包含以下统计信息
名称 |
类型 |
描述 |
---|---|---|
lb_recalculate_zone_structures |
计数器 |
为上游区域选择快速决策而重新生成的区域感知路由结构的次数 |
lb_healthy_panic |
计数器 |
负载均衡器处于恐慌模式下的总请求数 |
lb_zone_cluster_too_small |
计数器 |
由于上游集群规模较小,没有区域感知路由 |
lb_zone_routing_all_directly |
计数器 |
将所有请求直接发送到同一个区域 |
lb_zone_routing_sampled |
计数器 |
将一些请求发送到同一个区域 |
lb_zone_routing_cross_zone |
计数器 |
区域感知路由模式,但必须发送跨区域请求 |
lb_local_cluster_not_ok |
计数器 |
本地主机集未设置或本地集群处于恐慌模式 |
lb_zone_number_differs |
计数器 |
由于功能标志被禁用并且本地集群和上游集群中的区域数量不同,因此没有区域感知路由 |
lb_zone_no_capacity_left |
计数器 |
由于舍入误差,最终使用随机区域选择时的总次数 |
original_dst_host_invalid |
计数器 |
传递到原始目标负载均衡器的无效主机的总数 |
负载均衡器子集统计信息
用于监控 负载均衡器子集 决策的统计信息。统计信息以 cluster.<name>. 为根,并包含以下统计信息
名称 |
类型 |
描述 |
---|---|---|
lb_subsets_active |
仪表盘 |
当前可用子集的数量 |
lb_subsets_created |
计数器 |
创建的子集数量 |
lb_subsets_removed |
计数器 |
由于没有主机而删除的子集数量 |
lb_subsets_selected |
计数器 |
负载均衡选择任何子集时的次数 |
lb_subsets_fallback |
计数器 |
调用回退策略的次数 |
lb_subsets_fallback_panic |
计数器 |
子集恐慌模式触发的次数 |
lb_subsets_single_host_per_subset_duplicate |
仪表盘 |
使用 single_host_per_subset 时重复(未使用)的主机的数量 |
环形哈希负载均衡器统计信息
用于监控使用 环形哈希负载均衡器 时哈希的大小和有效分布的统计信息。统计信息以 cluster.<name>.ring_hash_lb. 为根,并包含以下统计信息
名称 |
类型 |
描述 |
---|---|---|
size |
仪表盘 |
环上主机哈希的总数 |
min_hashes_per_host |
仪表盘 |
单个主机的最小哈希数 |
max_hashes_per_host |
仪表盘 |
单个主机的最大哈希数 |
Maglev 负载均衡器统计信息
用于监控使用 Maglev 负载均衡器 时有效主机权重的统计信息。统计信息以 cluster.<name>.maglev_lb. 为根,并包含以下统计信息
名称 |
类型 |
描述 |
---|---|---|
min_entries_per_host |
仪表盘 |
单个主机的最小条目数 |
max_entries_per_host |
仪表盘 |
单个主机的最大条目数 |
请求响应大小统计信息
如果 请求响应大小统计信息 被跟踪,统计信息将被添加到 cluster.<name> 中,并包含以下内容
名称 |
类型 |
描述 |
---|---|---|
upstream_rq_headers_size |
直方图 |
每个上游的请求头大小,以字节为单位 |
upstream_rq_body_size |
直方图 |
每个上游的请求体大小,以字节为单位 |
upstream_rs_headers_size |
直方图 |
每个上游的响应头大小,以字节为单位 |
upstream_rs_body_size |
直方图 |
每个上游的响应体大小,以字节为单位 |