본문 바로가기
WIKI 기술 지식 베이스

Milvus 메트릭 대시보드 (Milvus Metrics Dashboard)

원문 보기 위키 갱신

Milvus는 런타임 중에 상세한 시계열 메트릭 목록을 출력해요. Prometheus와 Grafana를 사용해 이 메트릭들을 시각화할 수 있어요. 이 주제는 Grafana Milvus Dashboard에 표시되는 모니터링 메트릭을 소개해요.

이 주제에서 시간 단위는 밀리초예요. 그리고 여기서 "99번째 백분위수(99th percentile)"는 시간 통계의 99퍼센트가 특정 값 안에 통제된다는 것을 의미해요.

먼저 Milvus 모니터링 프레임워크 개요를 읽어 Prometheus 메트릭을 이해하는 것을 권장해요.

출처: Milvus 문서

본문

Proxy

패널 패널 설명 PromQL (Prometheus query language) 사용된 Milvus 메트릭 Milvus 메트릭 설명
Search Vector Count Rate 지난 2분 동안 각 proxy가 초당 쿼리한 벡터의 평균 수 sum(increase(milvus_proxy_search_vectors_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id) milvus_proxy_search_vectors_count 쿼리된 벡터의 누적 수
Insert Vector Count Rate 지난 2분 동안 각 proxy가 초당 삽입한 벡터의 평균 수 sum(increase(milvus_proxy_insert_vectors_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id) milvus_proxy_insert_vectors_count 삽입된 벡터의 누적 수
Search Latency 지난 2분 동안 각 proxy가 수신한 검색·쿼리 요청 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_sq_latency_sum{...}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_latency_count{...}[2m])) by (pod, node_id, query_type)
milvus_proxy_sq_latency 검색·쿼리 요청의 지연
Collection Search Latency 지난 2분 동안 각 proxy가 특정 컬렉션에 대한 검색·쿼리 요청을 수신한 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_collection_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])))
avg:
sum(increase(milvus_proxy_collection_sq_latency_sum{...}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_collection_sq_latency_count{...}[2m])) by (pod, node_id, query_type)
milvus_proxy_collection_sq_latency_sum 특정 컬렉션에 대한 검색·쿼리 요청의 지연
Mutation Latency 지난 2분 동안 각 proxy가 변형(mutation) 요청을 수신한 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_mutation_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_mutation_latency_sum{...}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_mutation_latency_count{...}[2m])) by (pod, node_id, msg_type)
milvus_proxy_mutation_latency_sum 변형 요청의 지연
Collection Mutation Latency 지난 2분 동안 각 proxy가 특정 컬렉션에 대한 변형 요청을 수신한 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_collection_sq_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_collection_sq_latency_sum{...}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_collection_sq_latency_count{...}[2m])) by (pod, node_id, query_type)
milvus_proxy_collection_sq_latency_sum 특정 컬렉션에 대한 변형 요청의 지연
Wait Search Result Latency 지난 2분 동안 proxy가 검색·쿼리 요청을 보낸 뒤 결과를 받기까지의 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_wait_result_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_sq_wait_result_latency_sum{...}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_wait_result_latency_count{...}[2m])) by (pod, node_id, query_type)
milvus_proxy_sq_wait_result_latency 검색·쿼리 요청을 보내고 결과를 받을 때까지의 지연
Reduce Search Result Latency 지난 2분 동안 proxy가 검색·쿼리 결과를 집계하는 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_reduce_result_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_sq_reduce_result_latency_sum{...}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_reduce_result_latency_count{...}[2m])) by (pod, node_id, query_type)
milvus_proxy_sq_reduce_result_latency 각 쿼리 노드가 반환한 검색·쿼리 결과를 집계하는 지연
Decode Search Result Latency 지난 2분 동안 proxy가 검색·쿼리 결과를 디코딩하는 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_decode_result_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_sq_decode_result_latency_sum{...}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_decode_resultlatency_count{...}[2m])) by (pod, node_id, query_type)
milvus_proxy_sq_decode_result_latency 각 검색·쿼리 결과를 디코딩하는 지연
Msg Stream Object Num 지난 2분 동안 각 proxy가 해당 물리 토픽에 만든 msgstream 객체 수의 평균, 최대, 최소 avg(milvus_proxy_msgstream_obj_num{...}) by (pod, node_id) max(...) by (pod, node_id) min(...) by (pod, node_id) milvus_proxy_msgstream_obj_num 각 물리 토픽에 생성된 msgstream 객체 수
Mutation Send Latency 지난 2분 동안 각 proxy가 삽입 또는 삭제 요청을 보내는 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_mutation_send_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_mutation_send_latency_sum{...}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_mutation_send_latency_count{...}[2m])) by (pod, node_id, msg_type)
milvus_proxy_mutation_send_latency 삽입 또는 삭제 요청을 보내는 지연
Cache Hit Rate 지난 2분 동안 GeCollectionID, GetCollectionInfo, GetCollectionSchema를 포함한 연산의 초당 평균 캐시 적중률 sum(increase(milvus_proxy_cache_hit_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", cache_state=\"hit\"}[2m])/120) by(cache_name, pod, node_id) / sum(increase(milvus_proxy_cache_hit_count{...}[2m])/120) by(cache_name, pod, node_id) milvus_proxy_cache_hit_count 각 캐시 읽기 연산의 적중·실패율 통계
Cache Update Latency 지난 2분 동안 proxy의 캐시 업데이트 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_cache_update_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_cache_update_latency_sum{...}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_cache_update_latency_count{...}[2m])) by (pod, node_id)
milvus_proxy_cache_update_latency 매번 캐시를 업데이트하는 지연
Sync Time 각 proxy가 해당 물리 채널에서 동기화한 epoch 시간의 평균, 최대, 최소 avg(milvus_proxy_sync_epoch_time{...}) by (pod, node_id) max(...) by (pod, node_id) min(...) by (pod, node_id) milvus_proxy_sync_epoch_time 각 물리 채널의 epoch 시간(1970년 1월 1일 이후 경과한 밀리초, Unix 시간).
물리 채널 외에 기본 ChannelName이 하나 있다.
Apply PK Latency 지난 2분 동안 각 proxy의 기본 키 적용 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_apply_pk_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_apply_pk_latency_sum{...}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_apply_pk_latency_count{...}[2m])) by (pod, node_id)
milvus_proxy_apply_pk_latency 기본 키를 적용하는 지연
Apply Timestamp Latency 지난 2분 동안 각 proxy의 타임스탬프 적용 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_apply_timestamp_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_apply_timestamp_latency_sum{...}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_apply_timestamp_latency_count{...}[2m])) by (pod, node_id)
milvus_proxy_apply_timestamp_latency 타임스탬프를 적용하는 지연
Request Success Rate 각 proxy가 초당 수신한 요청 중 성공한 요청 수와 각 요청 유형별 상세 분류. 가능한 요청 유형은 DescribeCollection, DescribeIndex, GetCollectionStatistics, HasCollection, Search, Query, ShowPartitions, Insert 등이에요. sum(increase(milvus_proxy_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"success\"}[2m])/120) by(function_name, pod, node_id) milvus_proxy_req_count 수신한 모든 유형의 요청 수
Request Failed Rate 각 proxy가 초당 수신한 요청 중 실패한 요청 수와 각 요청 유형별 상세 분류. 가능한 요청 유형은 DescribeCollection, DescribeIndex, GetCollectionStatistics, HasCollection, Search, Query, ShowPartitions, Insert 등이에요. sum(increase(milvus_proxy_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"fail\"}[2m])/120) by(function_name, pod, node_id) milvus_proxy_req_count 수신한 모든 유형의 요청 수
Request Latency 각 proxy가 수신한 모든 유형의 요청 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id, function_name) (rate(milvus_proxy_req_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_proxy_req_latency_sum{...}[2m])) by (pod, node_id, function_name) / sum(increase(milvus_proxy_req_latency_count{...}[2m])) by (pod, node_id, function_name)
milvus_proxy_req_latency 수신한 모든 유형의 요청 지연
Insert/Delete Request Byte Rate 지난 2분 동안 proxy가 초당 수신한 삽입·삭제 요청의 바이트 수 sum(increase(milvus_proxy_receive_bytes_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by(pod, node_id) milvus_proxy_receive_bytes_count 삽입·삭제 요청 수
Send Byte Rate 지난 2분 동안 각 proxy가 검색·쿼리 요청에 응답하면서 클라이언트로 초당 보낸 바이트 수 sum(increase(milvus_proxy_send_bytes_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by(pod, node_id) milvus_proxy_send_bytes_count 각 proxy가 검색·쿼리 요청에 응답하면서 클라이언트로 보낸 바이트 수

참고: 각 패널의 PromQL에서 실제 쿼리는 라벨 {app_kubernetes_io_instance=~"$instance", app_kubernetes_io_name="$app_name", namespace="$namespace"}를 포함하며, 위 표에서는 지면상 {...}로 축약했어요. 정확한 전체 식은 Milvus 문서 원문을 참고하세요.

Root coordinator

패널 패널 설명 PromQL 사용된 Milvus 메트릭 Milvus 메트릭 설명
Proxy Node Num 생성된 proxy 수 sum(milvus_rootcoord_proxy_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance) milvus_rootcoord_proxy_num proxy 수
Sync Time 각 root coord가 각 물리 채널(PChannel)에서 동기화한 epoch 시간의 평균, 최대, 최소 avg(milvus_rootcoord_sync_epoch_time{...}) by (app_kubernetes_io_instance) max(...) by (app_kubernetes_io_instance) min(...) by (app_kubernetes_io_instance) milvus_rootcoord_sync_epoch_time 각 물리 채널의 epoch 시간(1970년 1월 1일 이후 경과한 밀리초, Unix 시간)
DDL Request Rate 지난 2분 동안 초당 DDL 요청의 상태와 수 sum(increase(milvus_rootcoord_ddl_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, function_name) milvus_rootcoord_ddl_req_count CreateCollection, DescribeCollection, DescribeSegments, HasCollection, ShowCollections, ShowPartitions, ShowSegments를 포함한 DDL 요청의 총 수
DDL Request Latency 지난 2분 동안 DDL 요청 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, function_name) (rate(milvus_rootcoord_ddl_req_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_rootcoord_ddl_req_latency_sum{...}[2m])) by (function_name) / sum(increase(milvus_rootcoord_ddl_req_latency_count{...}[2m])) by (function_name)
milvus_rootcoord_ddl_req_latency 모든 유형의 DDL 요청 지연
Sync Timetick Latency 지난 2분 동안 root coord가 모든 타임스탬프를 PChannel에 동기화하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le) (rate(milvus_rootcoord_sync_timetick_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_rootcoord_sync_timetick_latency_sum{...}[2m])) / sum(increase(milvus_rootcoord_sync_timetick_latency_count{...}[2m]))
milvus_rootcoord_sync_timetick_latency root coord가 모든 타임스탬프를 pchannel에 동기화하는 데 소요한 시간
ID Alloc Rate 지난 2분 동안 root coord가 초당 할당한 ID 수 sum(increase(milvus_rootcoord_id_alloc_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) milvus_rootcoord_id_alloc_count root coord가 할당한 ID의 누적 수
Timestamp root coord의 최신 타임스탬프 milvus_rootcoord_timestamp{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"} milvus_rootcoord_timestamp root coord의 최신 타임스탬프
Timestamp Saved root coord가 메타 저장소에 저장하는 사전 할당된 타임스탬프 milvus_rootcoord_timestamp_saved{...} milvus_rootcoord_timestamp_saved root coord가 메타 저장소에 저장하는 사전 할당된 타임스탬프.
타임스탬프는 3초 전에 할당돼요. 그리고 50밀리초마다 업데이트되어 메타 저장소에 저장돼요.
Collection Num 컬렉션 총 수 sum(milvus_rootcoord_collection_num{...}) by (app_kubernetes_io_instance) milvus_rootcoord_collection_num 현재 Milvus에 존재하는 컬렉션의 총 수
Partition Num 파티션 총 수 sum(milvus_rootcoord_partition_num{...}) by (app_kubernetes_io_instance) milvus_rootcoord_partition_num 현재 Milvus에 존재하는 파티션의 총 수
DML Channel Num DML 채널 총 수 sum(milvus_rootcoord_dml_channel_num{...}) by (app_kubernetes_io_instance) milvus_rootcoord_dml_channel_num 현재 Milvus에 존재하는 DML 채널의 총 수
Msgstream Num msgstream 총 수 sum(milvus_rootcoord_msgstream_obj_num{...}) by (app_kubernetes_io_instance) milvus_rootcoord_msgstream_obj_num 현재 Milvus의 msgstream 총 수
Credential Num 자격 증명 총 수 sum(milvus_rootcoord_credential_num{...}) by (app_kubernetes_io_instance) milvus_rootcoord_credential_num 현재 Milvus의 자격 증명 총 수
Time Tick Delay 모든 DataNode와 QueryNode의 플로우 그래프 최대 time tick 지연의 합 sum(milvus_rootcoord_time_tick_delay{...}) by (app_kubernetes_io_instance) milvus_rootcoord_time_tick_delay 각 DataNode와 QueryNode의 플로우 그래프 최대 time tick 지연

Query coordinator

패널 패널 설명 PromQL 사용된 Milvus 메트릭 Milvus 메트릭 설명
Collection Loaded Num 현재 메모리에 로드된 컬렉션 수 sum(milvus_querycoord_collection_num{...}) by (app_kubernetes_io_instance) milvus_querycoord_collection_num 현재 Milvus가 로드한 컬렉션 수
Entity Loaded Num 현재 메모리에 로드된 엔티티 수 sum(milvus_querycoord_entity_num{...}) by (app_kubernetes_io_instance) milvus_querycoord_entitiy_num 현재 Milvus가 로드한 엔티티 수
Load Request Rate 지난 2분 동안 초당 로드 요청 수 sum(increase(milvus_querycoord_load_req_count{...}[2m])120) by (status) milvus_querycoord_load_req_count 로드 요청의 누적 수
Release Request Rate 지난 2분 동안 초당 릴리스 요청 수 sum(increase(milvus_querycoord_release_req_count{...}[2m])/120) by (status) milvus_querycoord_release_req_count 릴리스 요청의 누적 수
Load Request Latency 지난 2분 동안 로드 요청 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le) (rate(milvus_querycoord_load_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querycoord_load_latency_sum{...}[2m])) / sum(increase(milvus_querycoord_load_latency_count{...}[2m]))
milvus_querycoord_load_latency 로드 요청을 완료하는 데 소요된 시간
Release Request Latency 지난 2분 동안 릴리스 요청 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le) (rate(milvus_querycoord_release_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querycoord_release_latency_sum{...}[2m])) / sum(increase(milvus_querycoord_release_latency_count{...}[2m]))
milvus_querycoord_release_latency 릴리스 요청을 완료하는 데 소요된 시간
Sub-Load Task 서브 로드 작업 수 sum(milvus_querycoord_child_task_num{...}) by (app_kubernetes_io_instance) milvus_querycoord_child_task_num 서브 로드 작업 수.
쿼리 coord는 로드 요청을 여러 서브 로드 작업으로 나눠요.
Parent Load Task 부모 로드 작업 수 sum(milvus_querycoord_parent_task_num{...}) by (app_kubernetes_io_instance) milvus_querycoord_parent_task_num 서브 로드 작업 수.
각 로드 요청은 작업 큐의 부모 작업에 해당해요.
Sub-Load Task Latency 지난 2분 동안 서브 로드 작업 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le) (rate(milvus_querycoord_child_task_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querycoord_child_task_latency_sum{...}[2m])) / sum(increase(milvus_querycoord_child_task_latency_count{...}[2m]))
milvus_querycoord_child_task_latency 서브 로드 작업을 완료하는 지연
Query Node Num 쿼리 coord가 관리하는 쿼리 노드 수 sum(milvus_querycoord_querynode_num{...}) by (app_kubernetes_io_instance) milvus_querycoord_querynode_num 쿼리 coord가 관리하는 쿼리 노드 수

Query node

패널 패널 설명 PromQL 사용된 Milvus 메트릭 Milvus 메트릭 설명
Collection Loaded Num 각 쿼리 노드가 메모리에 로드한 컬렉션 수 sum(milvus_querynode_collection_num{...}) by (pod, node_id) milvus_querynode_collection_num 각 쿼리 노드가 로드한 컬렉션 수
Partition Loaded Num 각 쿼리 노드가 메모리에 로드한 파티션 수 sum(milvus_querynode_partition_num{...}) by (pod, node_id) milvus_querynode_partition_num 각 쿼리 노드가 로드한 파티션 수
Segment Loaded Num 각 쿼리 노드가 메모리에 로드한 세그먼트 수 sum(milvus_querynode_segment_num{...}) by (pod, node_id) milvus_querynode_segment_num 각 쿼리 노드가 로드한 세그먼트 수
Queryable Entity Num 각 쿼리 노드의 쿼리·검색 가능한 엔티티 수 sum(milvus_querynode_entity_num{...}) by (pod, node_id) milvus_querynode_entity_num 각 쿼리 노드의 쿼리·검색 가능한 엔티티 수
DML Virtual Channel 각 쿼리 노드가 감시하는 DML 가상 채널 수 sum(milvus_querynode_dml_vchannel_num{...}) by (pod, node_id) milvus_querynode_dml_vchannel_num 각 쿼리 노드가 감시하는 DML 가상 채널 수
Delta Virtual Channel 각 쿼리 노드가 감시하는 델타 채널 수 sum(milvus_querynode_delta_vchannel_num{...}) by (pod, node_id) milvus_querynode_delta_vchannel_num 각 쿼리 노드가 감시하는 델타 채널 수
Consumer Num 각 쿼리 노드의 소비자 수 sum(milvus_querynode_consumer_num{...}) by (pod, node_id) milvus_querynode_consumer_num 각 쿼리 노드의 소비자 수
Search Request Rate 지난 2분 동안 각 쿼리 노드가 초당 수신한 검색·쿼리 요청 총 수와 성공한 검색·쿼리 요청 수 sum(increase(milvus_querynode_sq_req_count{...}[2m])/120) by (query_type, status, pod, node_id) milvus_querynode_sq_req_count 검색·쿼리 요청의 누적 수
Search Request Latency 지난 2분 동안 각 쿼리 노드가 검색·쿼리 요청에 소요한 시간의 평균과 99번째 백분위수.
이 패널은 상태가 "success" 또는 "total"인 검색·쿼리 요청의 지연을 표시해요.
p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_sq_req_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_sq_req_latency_sum{...}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_req_latency_count{...}[2m])) by(pod, node_id, query_type)
milvus_querynode_sq_req_latency 쿼리 노드의 검색 요청 지연
Search in Queue Latency 지난 2분 동안 검색·쿼리 요청이 큐에서 대기한 지연의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_queue_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_sq_queue_latency_sum{...}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_queue_latency_count{...}[2m])) by(pod, node_id, query_type)
milvus_querynode_sq_queue_latency 쿼리 노드가 수신한 검색·쿼리 요청의 큐 대기 지연
Search Segment Latency 지난 2분 동안 각 쿼리 노드가 세그먼트 하나를 검색·쿼리하는 데 소요한 시간의 평균과 99번째 백분위수.
세그먼트 상태는 sealed 또는 growing이 될 수 있어요.
p99:
histogram_quantile(0.99, sum by (le, query_type, segment_state, pod, node_id) (rate(milvus_querynode_sq_segment_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_sq_segment_latency_sum{...}[2m])) by(pod, node_id, query_type, segment_state) / sum(increase(milvus_querynode_sq_segment_latency_count{...}[2m])) by(pod, node_id, query_type, segment_state)
milvus_querynode_sq_segment_latency 각 쿼리 노드가 각 세그먼트를 검색·쿼리하는 데 소요한 시간
Segcore Request Latency 지난 2분 동안 각 쿼리 노드가 segcore에서 검색·쿼리하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_querynode_sq_core_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_sq_core_latency_sum{...}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_core_latency_count{...}[2m])) by(pod, node_id, query_type)
milvus_querynode_sq_core_latency 각 쿼리 노드가 segcore에서 검색·쿼리하는 데 소요한 시간
Search Reduce Latency 지난 2분 동안 각 쿼리 노드가 검색·쿼리의 reduce 단계에서 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_reduce_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_sq_reduce_latency_sum{...}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_reduce_latency_count{...}[2m])) by(pod, node_id, query_type)
milvus_querynode_sq_reduce_latency 각 쿼리가 reduce 단계에서 소요한 시간
Load Segment Latency 지난 2분 동안 각 쿼리 노드가 세그먼트를 로드하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_load_segment_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_load_segment_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_load_segment_latency_count{...}[2m])) by(pod, node_id)
milvus_querynode_load_segment_latency_bucket 각 쿼리 노드가 세그먼트를 로드하는 데 소요한 시간
Flowgraph Num 각 쿼리 노드의 플로우그래프 수 sum(milvus_querynode_flowgraph_num{...}) by (pod, node_id) milvus_querynode_flowgraph_num 각 쿼리 노드의 플로우그래프 수
Unsolved Read Task Length 각 쿼리 노드의 미해결 읽기 요청 큐 길이 sum(milvus_querynode_read_task_unsolved_len{...}) by (pod, node_id) milvus_querynode_read_task_unsolved_len 미해결 읽기 요청 큐의 길이
Ready Read Task Length 각 쿼리 노드에서 실행할 준비가 된 읽기 요청 큐 길이 sum(milvus_querynode_read_task_ready_len{...}) by (pod, node_id) milvus_querynode_read_task_ready_len 실행할 준비가 된 읽기 요청 큐의 길이
Parallel Read Task Num 각 쿼리 노드에서 현재 실행 중인 동시 읽기 요청 수 sum(milvus_querynode_read_task_concurrency{...}) by (pod, node_id) milvus_querynode_read_task_concurrency 현재 실행 중인 동시 읽기 요청 수
Estimate CPU Usage 스케줄러가 추정한 각 쿼리 노드의 CPU 사용량 sum(milvus_querynode_estimate_cpu_usage{...}) by (pod, node_id) milvus_querynode_estimate_cpu_usage 스케줄러가 추정한 각 쿼리 노드의 CPU 사용량.
값이 100이면 vCPU(가상 CPU) 한 개 전체가 사용된 것을 의미해요.
Search Group Size 지난 2분 동안 검색 그룹 크기(각 쿼리 노드가 실행한 결합된 검색 요청 안의 원래 검색 요청 총 수)의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_size_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_search_group_size_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_size_count{...}[2m])) by(pod, node_id)
milvus_querynode_load_segment_latency_bucket 다른 버킷의 결합된 검색 작업 중 원래 검색 작업 수(즉 검색 그룹 크기)
Search NQ 지난 2분 동안 각 쿼리 노드가 검색 요청을 실행하면서 수행한 쿼리 수(NQ)의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_size_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_search_group_size_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_size_count{...}[2m])) by(pod, node_id)
milvus_querynode_load_segment_latency_bucket 검색 요청의 쿼리 수(NQ)
Search Group NQ 지난 2분 동안 각 쿼리 노드가 결합·실행한 검색 요청의 NQ 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_nq_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_search_group_nq_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_nq_count{...}[2m])) by(pod, node_id)
milvus_querynode_load_segment_latency_bucket 다른 버킷에서 결합된 검색 요청의 NQ
Search Top_K 지난 2분 동안 각 쿼리 노드가 실행한 검색 요청의 Top_K 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_topk_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_search_topk_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_topk_count{...}[2m])) by(pod, node_id)
milvus_querynode_load_segment_latency_bucket 검색 요청의 Top_K
Search Group Top_K 지난 2분 동안 각 쿼리 노드가 결합·실행한 검색 요청의 Top_K 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_topk_bucket{...}[2m])))
avg:
sum(increase(milvus_querynode_search_group_topk_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_topk_count{...}[2m])) by(pod, node_id)
milvus_querynode_load_segment_latency_bucket 다른 버킷에서 결합된 검색 요청의 Top_K
Evicted Read Requests Rate 지난 2분 동안 각 쿼리 노드가 초당 축출한 읽기 요청 수 sum(increase(milvus_querynode_read_evicted_count{...}[2m])/120) by (pod, node_id) milvus_querynode_sq_req_count 트래픽 제한으로 쿼리 노드가 축출한 읽기 요청의 누적 수

Data coordinator

패널 패널 설명 PromQL 사용된 Milvus 메트릭 Milvus 메트릭 설명
Data Node Num data coord가 관리하는 데이터 노드 수 sum(milvus_datacoord_datanode_num{...}) by (app_kubernetes_io_instance) milvus_datacoord_datanode_num data coord가 관리하는 데이터 노드 수
Segment Num data coord가 메타데이터에 기록한 모든 유형의 세그먼트 수 sum(milvus_datacoord_segment_num{...}) by (segment_state) milvus_datacoord_segment_num data coord가 메타데이터에 기록한 모든 유형의 세그먼트 수.
세그먼트 유형에는 dropped, flushed, flushing, growing, sealed가 있어요.
Collection Num data coord가 메타데이터에 기록한 컬렉션 수 sum(milvus_datacoord_collection_num{...}) by (app_kubernetes_io_instance) milvus_datacoord_collection_num data coord가 메타데이터에 기록한 컬렉션 수
Stored Rows data coord의 유효하고 플러시된 데이터의 누적 행 수 sum(milvus_datacoord_stored_rows_num{...}) by (app_kubernetes_io_instance) milvus_datacoord_stored_rows_num data coord의 유효하고 플러시된 데이터의 누적 행 수
Stored Rows Rate 지난 2분 동안 초당 플러시된 평균 행 수 sum(increase(milvus_datacoord_stored_rows_count{...}[2m])/120) by (pod, node_id) milvus_datacoord_stored_rows_count data coord가 플러시한 누적 행 수
Sync Time data coord가 각 물리 채널에서 동기화한 epoch 시간의 평균, 최대, 최소 avg(milvus_datacoord_sync_epoch_time{...}) by (app_kubernetes_io_instance) max(...) by (app_kubernetes_io_instance) min(...) by (app_kubernetes_io_instance) milvus_datacoord_sync_epoch_time 각 물리 채널의 epoch 시간(1970년 1월 1일 이후 경과한 밀리초, Unix 시간)
Stored Binlog Size 저장된 binlog의 총 크기 sum(milvus_datacoord_stored_binlog_size{...}) by (app_kubernetes_io_instance) milvus_datacoord_stored_binlog_size Milvus에 저장된 binlog의 총 크기

Data node

패널 패널 설명 PromQL 사용된 Milvus 메트릭 Milvus 메트릭 설명
Flowgraph Num 각 데이터 노드에 해당하는 플로우그래프 객체 수 sum(milvus_datanode_flowgraph_num{...}) by (pod, node_id) milvus_datanode_flowgraph_num 플로우그래프 객체 수.
컬렉션의 각 샤드는 플로우그래프 객체 하나에 해당해요.
Msg Rows Consume Rate 지난 2분 동안 각 데이터 노드가 초당 소비한 스트리밍 메시지의 행 수 sum(increase(milvus_datanode_msg_rows_count{...}[2m])/120) by (msg_type, pod, node_id) milvus_datanode_msg_rows_count 소비된 스트리밍 메시지의 행 수.
현재 데이터 노드가 집계하는 스트리밍 메시지는 삽입과 삭제 메시지만 포함해요.
Flush Data Size Rate 지난 2분 동안 각 데이터 노드가 초당 기록한 각 플러시된 메시지의 크기 sum(increase(milvus_datanode_flushed_data_size{...}[2m])/120) by (msg_type, pod, node_id) milvus_datanode_flushed_data_size 각 플러시된 메시지의 크기.
현재 데이터 노드가 집계하는 스트리밍 메시지는 삽입과 삭제 메시지만 포함해요.
Consumer Num 각 데이터 노드에 생성된 소비자 수 sum(milvus_datanode_consumer_num{...}) by (pod, node_id) milvus_datanode_consumer_num 각 데이터 노드에 생성된 소비자 수.
각 플로우그래프는 소비자 하나에 해당해요.
Producer Num 각 데이터 노드에 생성된 프로듀서 수 sum(milvus_datanode_producer_num{...}) by (pod, node_id) milvus_datanode_producer_num 각 데이터 노드에 생성된 소비자 수.
컬렉션의 각 샤드는 델타 채널 프로듀서와 timetick 채널 프로듀서 하나에 해당해요.
Sync Time 각 데이터 노드가 모든 물리 토픽에서 동기화한 epoch 시간의 평균, 최대, 최소 avg(milvus_datanode_sync_epoch_time{...}) by (pod, node_id) max(...) by (pod, node_id) min(...) by (pod, node_id) milvus_datanode_sync_epoch_time 데이터 노드의 각 물리 토픽의 epoch 시간(1970년 1월 1일 이후 경과한 밀리초, Unix 시간)
Unflushed Segment Num 각 데이터 노드에 생성된 플러시되지 않은 세그먼트 수 sum(milvus_datanode_unflushed_segment_num{...}) by (pod, node_id) milvus_datanode_unflushed_segment_num 각 데이터 노드에 생성된 플러시되지 않은 세그먼트 수
Encode Buffer Latency 지난 2분 동안 각 데이터 노드가 버퍼를 인코딩하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_encode_buffer_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_datanode_encode_buffer_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_encode_buffer_latency_count{...}[2m])) by(pod, node_id)
milvus_datanode_encode_buffer_latency 각 데이터 노드가 버퍼를 인코딩하는 데 소요한 시간
Save Data Latency 지난 2분 동안 각 데이터 노드가 버퍼를 스토리지 레이어에 쓰는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_save_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_datanode_save_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_save_latency_count{...}[2m])) by(pod, node_id)
milvus_datanode_save_latency 각 데이터 노드가 버퍼를 스토리지 레이어에 쓰는 데 소요한 시간
Flush Operate Rate 지난 2분 동안 각 데이터 노드가 초당 버퍼를 플러시한 횟수 sum(increase(milvus_datanode_flush_buffer_op_count{...}[2m])/120) by (status, pod, node_id) milvus_datanode_flush_buffer_op_count 데이터 노드가 버퍼를 플러시한 누적 횟수
Autoflush Operate Rate 지난 2분 동안 각 데이터 노드가 초당 버퍼를 자동 플러시한 횟수 sum(increase(milvus_datanode_autoflush_buffer_op_count{...}[2m])/120) by (status, pod, node_id) milvus_datanode_autoflush_buffer_op_count 데이터 노드가 버퍼를 자동 플러시한 누적 횟수
Flush Request Rate 지난 2분 동안 각 데이터 노드가 초당 버퍼 플러시 요청을 수신한 횟수 sum(increase(milvus_datanode_flush_req_count{...}[2m])/120) by (status, pod, node_id) milvus_datanode_flush_req_count 데이터 노드가 data coord로부터 플러시 요청을 수신한 누적 횟수
Compaction Latency 지난 2분 동안 각 데이터 노드가 컴팩션 작업을 실행하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_compaction_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_datanode_compaction_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_compaction_latency_count{...}[2m])) by(pod, node_id)
milvus_datanode_compaction_latency 각 데이터 노드가 컴팩션 작업을 실행하는 데 소요한 시간

Index coordinator

패널 패널 설명 PromQL 사용된 Milvus 메트릭 Milvus 메트릭 설명
Index Request Rate 지난 2분 동안 초당 수신한 인덱스 구축 요청의 평균 수 sum(increase(milvus_indexcoord_indexreq_count{...}[2m])/120) by (status) milvus_indexcoord_indexreq_count 수신한 인덱스 구축 요청 수
Index Task Count 인덱스 메타데이터에 기록된 모든 인덱싱 작업 수 sum(milvus_indexcoord_indextask_count{...}) by (index_task_status) milvus_indexcoord_indextask_count 인덱스 메타데이터에 기록된 모든 인덱싱 작업 수
Index Node Num 관리되는 인덱스 노드 수 sum(milvus_indexcoord_indexnode_num{...}) by (app_kubernetes_io_instance) milvus_indexcoord_indexnode_num 관리되는 인덱스 노드 수

Index node

패널 패널 설명 PromQL 사용된 Milvus 메트릭 Milvus 메트릭 설명
Index Task Rate 지난 2분 동안 각 인덱스 노드가 초당 수신한 인덱스 구축 작업의 평균 수 sum(increase(milvus_indexnode_index_task_count{...}[2m])/120) by (status, pod, node_id) milvus_indexnode_index_task_count 수신한 인덱스 구축 작업 수
Load Field Latency 지난 2분 동안 각 인덱스 노드가 매번 세그먼트 필드 데이터를 로드하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_load_field_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_indexnode_load_field_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_load_field_latency_count{...}[2m])) by(pod, node_id)
milvus_indexnode_load_field_latency 인덱스 노드가 세그먼트 필드 데이터를 로드하는 데 소요한 시간
Decode Field Latency 지난 2분 동안 각 인덱스 노드가 매번 필드 데이터를 인코딩하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_decode_field_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_indexnode_decode_field_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_decode_field_latency_count{...}[2m])) by(pod, node_id)
milvus_indexnode_decode_field_latency 필드 데이터를 디코딩하는 데 소요한 시간
Build Index Latency 지난 2분 동안 각 인덱스 노드가 인덱스를 구축하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_build_index_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_indexnode_build_index_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_build_index_latency_count{...}[2m])) by(pod, node_id)
milvus_indexnode_build_index_latency 인덱스를 구축하는 데 소요한 시간
Encode Index Latency 지난 2분 동안 각 인덱스 노드가 인덱스 파일을 인코딩하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_encode_index_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_indexnode_encode_index_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_encode_index_latency_count{...}[2m])) by(pod, node_id)
milvus_indexnode_encode_index_latency 인덱스 파일을 인코딩하는 데 소요한 시간
Save Index Latency 지난 2분 동안 각 인덱스 노드가 인덱스 파일을 저장하는 데 소요한 시간의 평균과 99번째 백분위수 p99:
histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_save_index_latency_bucket{...}[2m])))
avg:
sum(increase(milvus_indexnode_save_index_latency_sum{...}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_save_index_latency_count{...}[2m])) by(pod, node_id)
milvus_indexnode_save_index_latency 인덱스 파일을 저장하는 데 소요한 시간

더 알아보기 (Learn more)