mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
feat: improve admin performance analysis
This commit is contained in:
@@ -453,6 +453,14 @@ export interface ProviderPerformanceSummary {
|
||||
avg_output_tps: number | null
|
||||
avg_first_byte_time_ms: number | null
|
||||
avg_response_time_ms: number | null
|
||||
p90_response_time_ms?: number | null
|
||||
p99_response_time_ms?: number | null
|
||||
p90_first_byte_time_ms?: number | null
|
||||
p99_first_byte_time_ms?: number | null
|
||||
tps_sample_count?: number
|
||||
response_time_sample_count?: number
|
||||
first_byte_sample_count?: number
|
||||
slow_request_count?: number
|
||||
}
|
||||
|
||||
export interface ProviderPerformanceItem {
|
||||
@@ -467,9 +475,13 @@ export interface ProviderPerformanceItem {
|
||||
avg_first_byte_time_ms: number | null
|
||||
avg_response_time_ms: number | null
|
||||
p90_response_time_ms: number | null
|
||||
p99_response_time_ms?: number | null
|
||||
p90_first_byte_time_ms: number | null
|
||||
p99_first_byte_time_ms?: number | null
|
||||
tps_sample_count: number
|
||||
response_time_sample_count?: number
|
||||
first_byte_sample_count: number
|
||||
slow_request_count?: number
|
||||
}
|
||||
|
||||
export interface ProviderPerformanceTimelineItem {
|
||||
@@ -482,6 +494,7 @@ export interface ProviderPerformanceTimelineItem {
|
||||
avg_first_byte_time_ms: number | null
|
||||
avg_response_time_ms: number | null
|
||||
success_rate: number
|
||||
slow_request_count?: number
|
||||
}
|
||||
|
||||
export interface ProviderPerformanceResponse {
|
||||
@@ -983,6 +996,13 @@ export const adminApi = {
|
||||
tz_offset_minutes?: number
|
||||
granularity?: 'day' | 'hour'
|
||||
limit?: number
|
||||
provider_id?: string
|
||||
model?: string
|
||||
api_format?: string
|
||||
endpoint_kind?: string
|
||||
is_stream?: boolean
|
||||
has_format_conversion?: boolean
|
||||
slow_threshold_ms?: number
|
||||
}): Promise<ProviderPerformanceResponse> {
|
||||
const cacheKey = buildCacheKey('admin:stats:performance:providers', params)
|
||||
return cachedRequest(
|
||||
|
||||
@@ -118,8 +118,21 @@ export interface GatewayMetricsSummary {
|
||||
distributed: GatewayGateMetrics
|
||||
tunnel: {
|
||||
proxyConnections: number | null
|
||||
availableProxyConnections: number | null
|
||||
closingProxyConnections: number | null
|
||||
drainingProxyConnections: number | null
|
||||
softAvoidProxyConnections: number | null
|
||||
nodes: number | null
|
||||
activeStreams: number | null
|
||||
outboundQueueDepthTotal: number | null
|
||||
outboundQueueDepthMax: number | null
|
||||
outboundQueueCapacityTotal: number | null
|
||||
outboundQueueRejectedFullTotal: number | null
|
||||
outboundQueueRejectedClosedTotal: number | null
|
||||
proxyConnectionCongestedTotal: number | null
|
||||
softAvoidSelectionTotal: number | null
|
||||
selectionRetryTotal: number | null
|
||||
selectionUnavailableTotal: number | null
|
||||
}
|
||||
fallbackTotal: number
|
||||
fallbacks: GatewayFallbackMetricSummary[]
|
||||
@@ -159,8 +172,21 @@ export function buildGatewayMetricsSummary(text: string): GatewayMetricsSummary
|
||||
distributed: buildGateMetrics(samples, 'gateway_requests_distributed'),
|
||||
tunnel: {
|
||||
proxyConnections: findMetricValueNumber(samples, 'tunnel_proxy_connections'),
|
||||
availableProxyConnections: findMetricValueNumber(samples, 'tunnel_proxy_connections_available'),
|
||||
closingProxyConnections: findMetricValueNumber(samples, 'tunnel_proxy_connections_closing'),
|
||||
drainingProxyConnections: findMetricValueNumber(samples, 'tunnel_proxy_connections_draining'),
|
||||
softAvoidProxyConnections: findMetricValueNumber(samples, 'tunnel_proxy_connections_soft_avoid'),
|
||||
nodes: findMetricValueNumber(samples, 'tunnel_nodes'),
|
||||
activeStreams: findMetricValueNumber(samples, 'tunnel_active_streams'),
|
||||
outboundQueueDepthTotal: findMetricValueNumber(samples, 'tunnel_proxy_outbound_queue_depth_total'),
|
||||
outboundQueueDepthMax: findMetricValueNumber(samples, 'tunnel_proxy_outbound_queue_depth_max'),
|
||||
outboundQueueCapacityTotal: findMetricValueNumber(samples, 'tunnel_proxy_outbound_queue_capacity_total'),
|
||||
outboundQueueRejectedFullTotal: findMetricValueNumber(samples, 'tunnel_proxy_outbound_queue_rejected_full_total'),
|
||||
outboundQueueRejectedClosedTotal: findMetricValueNumber(samples, 'tunnel_proxy_outbound_queue_rejected_closed_total'),
|
||||
proxyConnectionCongestedTotal: findMetricValueNumber(samples, 'tunnel_proxy_connection_congested_total'),
|
||||
softAvoidSelectionTotal: findMetricValueNumber(samples, 'tunnel_proxy_soft_avoid_selection_total'),
|
||||
selectionRetryTotal: findMetricValueNumber(samples, 'tunnel_proxy_selection_retry_total'),
|
||||
selectionUnavailableTotal: findMetricValueNumber(samples, 'tunnel_proxy_selection_unavailable_total'),
|
||||
},
|
||||
fallbackTotal: fallbacks.reduce((total, item) => total + item.total, 0),
|
||||
fallbacks,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user