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)
- Milvus 모니터링 프레임워크 개요 — Prometheus 메트릭 이해
- Milvus 공식 문서 — 모니터링·운영 관련 자료