네이버 엔지니어링 데이 2026에서 공개된 VictoriaMetrics 세션으로 핵심 아키텍처(Core Architecture) 분석을 제공함
수집(vmagent), 라우팅(vminsert), 저장(vmstorage), 쿼리(vmselect) 단계별 내부 구조와 원리를 상세히 설명함
대규모 분산 시스템 및 메트릭 인프라 운영 엔지니어를 대상으로 최적의 수집 구조 설계 방안을 제시함
VictoriaMetrics은 시계열 데이터(Time Series Data) 수집, 저장, 쿼리를 위한 고성능 오픈소스 솔루션으로, 네이버 엔지니어링 데이에서 발표된 세션은 이 시스템의 내부 작동 방식을 깊이 있게 다룬다.
수집(vmagent): Prometheus Remote Write 프로토콜을 지원하며, 효율적인 데이터 스크래핑(Scraping) 및 전송을 담당한다.
라우팅/삽입(vminsert): 수집된 데이터를 최적의 vmstorage 노드로 분산시켜 저장 효율성을 높인다.
저장(vmstorage): 압축률이 높은 독자적인 스토리지 포맷을 사용하여 디스크 공간을 절약하고 빠른 데이터 접근을 지원한다.
쿼리(vmselect): 분산된 데이터에서 효율적으로 메트릭을 검색하고 집계하는 역할을 수행한다.
이러한 모듈식 설계는 확장성(Scalability)과 유연성(Flexibility)을 극대화한다.
vmagent는 VictoriaMetrics의 데이터 수집(Data Ingestion) 게이트웨이로서, Prometheus의 스크래핑 기능과 Remote Write API를 활용한다.
스크래핑(Scraping): 설정된 타겟으로부터 주기적으로 메트릭을 수집하며, 병렬 스크래핑(Parallel Scraping)을 통해 처리량을 높인다.
Remote Write: 수집된 메트릭을 vminsert로 효율적으로 전송하며, 배치 처리(Batch Processing)와 재시도 로직을 통해 데이터 유실을 최소화한다.
필터링 및 라벨 관리: 수집 단계에서 불필요한 메트릭을 필터링하고 라벨을 재구성하여 저장 공간 및 쿼리 성능을 최적화할 수 있다.
이러한 구조는 대규모 환경에서의 메트릭 수집 병목 현상(Bottleneck)을 완화하는 데 기여한다.
vminsert는 수집된 시계열 데이터를 분산 저장소(Distributed Storage)인 vmstorage 노드에 효율적으로 분배하는 핵심 컴포넌트다.
리던던트 데이터 삽입(Redundant Data Insertion): 여러 vmstorage 노드에 동일한 데이터를 저장하여 데이터 가용성(Data Availability) 및 내결함성(Fault Tolerance)을 보장한다.
데이터 분산 알고리즘: 수집된 메트릭의 라벨(Label)을 기반으로 해싱(Hashing) 또는 라운드 로빈(Round Robin) 방식을 사용하여 데이터를 여러 vmstorage 노드에 고르게 분산시킨다.
쓰기 경로 최적화(Write Path Optimization): 데이터 압축 및 직렬화(Serialization)를 통해 네트워크 대역폭(Bandwidth) 사용량을 줄이고 삽입 속도를 향상시킨다.
이 파이프라인은 대용량 쓰기 작업(High-Volume Writes)에서도 안정적인 성능을 유지하도록 설계되었다.
vmstorage는 VictoriaMetrics의 핵심 저장소 엔진으로, 뛰어난 압축률과 빠른 쿼리 성능을 제공한다.
독자적인 스토리지 포맷: 시계열 데이터의 특성을 고려한 컬럼 기반(Columnar) 스토리지와 고도의 압축 알고리즘을 사용하여 디스크 사용량을 획기적으로 줄인다.
데이터 파티셔닝(Data Partitioning): 시간 기반 및 라벨 기반으로 데이터를 분할하여 저장함으로써 쿼리 시 불필요한 데이터 스캔을 최소화한다.
메모리 캐싱(Memory Caching): 자주 접근되는 데이터나 인덱스 정보를 메모리에 캐싱하여 쿼리 응답 속도를 향상시킨다.
이러한 데이터 저장 최적화(Data Storage Optimization)는 대규모 메트릭 인프라 운영 비용을 절감하는 데 크게 기여한다.
vmselect는 분산된 vmstorage 노드에 저장된 시계열 데이터를 대상으로 효율적인 쿼리 실행을 담당한다.
분산 쿼리 처리: 클라이언트의 쿼리 요청을 받아 모든 관련 vmstorage 노드에 쿼리를 분산시키고, 결과를 취합하여 반환한다.
쿼리 최적화: 인덱스 활용, 데이터 필터링, 집계 함수 최적화 등을 통해 복잡한 쿼리도 빠르게 처리할 수 있도록 설계되었다.
PromQL 호환성: Prometheus의 쿼리 언어인 PromQL을 완벽하게 지원하여 기존 Prometheus 사용자들의 마이그레이션 장벽을 낮춘다.
이 엔진은 대규모 데이터셋에 대한 복잡한 분석 쿼리(Analytical Queries) 성능을 보장한다.
VictoriaMetrics의 성능은 사용 사례와 구성 방식에 따라 크게 달라질 수 있다.
Best Case: 고성능 디스크(NVMe SSD), 충분한 메모리, 최적화된 네트워크 환경에서 대량의 메트릭을 낮은 지연 시간으로 처리할 때 최고의 성능을 발휘한다. 특히 vmagent의 Remote Write 배치 크기 최적화가 중요하다.
Worst Case: 저사양 하드웨어, 느린 디스크 I/O, 비효율적인 쿼리 패턴(예: 전체 데이터 범위 스캔)은 심각한 성능 저하를 야기할 수 있다. 또한, 과도한 라벨 수(Cardinality)는 vmstorage의 메모리 사용량을 급증시켜 병목 현상을 초래할 수 있다.
따라서 적절한 하드웨어 선택과 쿼리 패턴 설계가 VictoriaMetrics의 성공적인 운영에 필수적이다.