VictoriaMetrics 내부 구조 완벽 분석

by DD
1일 전
조회수 14

네이버 엔지니어링 데이 2026에서 공개된 VictoriaMetrics 세션으로 핵심 아키텍처(Core Architecture) 분석을 제공함

수집(vmagent), 라우팅(vminsert), 저장(vmstorage), 쿼리(vmselect) 단계별 내부 구조와 원리를 상세히 설명함

대규모 분산 시스템 및 메트릭 인프라 운영 엔지니어를 대상으로 최적의 수집 구조 설계 방안을 제시함

VictoriaMetrics 아키텍처 개요

VictoriaMetrics은 시계열 데이터(Time Series Data) 수집, 저장, 쿼리를 위한 고성능 오픈소스 솔루션으로, 네이버 엔지니어링 데이에서 발표된 세션은 이 시스템의 내부 작동 방식을 깊이 있게 다룬다.

수집(vmagent): Prometheus Remote Write 프로토콜을 지원하며, 효율적인 데이터 스크래핑(Scraping) 및 전송을 담당한다.

라우팅/삽입(vminsert): 수집된 데이터를 최적의 vmstorage 노드로 분산시켜 저장 효율성을 높인다.

저장(vmstorage): 압축률이 높은 독자적인 스토리지 포맷을 사용하여 디스크 공간을 절약하고 빠른 데이터 접근을 지원한다.

쿼리(vmselect): 분산된 데이터에서 효율적으로 메트릭을 검색하고 집계하는 역할을 수행한다.

이러한 모듈식 설계는 확장성(Scalability)과 유연성(Flexibility)을 극대화한다.

vmagent: 효율적인 메트릭 수집 전략

vmagent는 VictoriaMetrics의 데이터 수집(Data Ingestion) 게이트웨이로서, Prometheus의 스크래핑 기능과 Remote Write API를 활용한다.

스크래핑(Scraping): 설정된 타겟으로부터 주기적으로 메트릭을 수집하며, 병렬 스크래핑(Parallel Scraping)을 통해 처리량을 높인다.

Remote Write: 수집된 메트릭을 vminsert로 효율적으로 전송하며, 배치 처리(Batch Processing)와 재시도 로직을 통해 데이터 유실을 최소화한다.

필터링 및 라벨 관리: 수집 단계에서 불필요한 메트릭을 필터링하고 라벨을 재구성하여 저장 공간 및 쿼리 성능을 최적화할 수 있다.

이러한 구조는 대규모 환경에서의 메트릭 수집 병목 현상(Bottleneck)을 완화하는 데 기여한다.

vminsert: 데이터 삽입 파이프라인 최적화

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: 고효율 시계열 데이터 저장

vmstorage는 VictoriaMetrics의 핵심 저장소 엔진으로, 뛰어난 압축률과 빠른 쿼리 성능을 제공한다.

독자적인 스토리지 포맷: 시계열 데이터의 특성을 고려한 컬럼 기반(Columnar) 스토리지와 고도의 압축 알고리즘을 사용하여 디스크 사용량을 획기적으로 줄인다.

데이터 파티셔닝(Data Partitioning): 시간 기반 및 라벨 기반으로 데이터를 분할하여 저장함으로써 쿼리 시 불필요한 데이터 스캔을 최소화한다.

메모리 캐싱(Memory Caching): 자주 접근되는 데이터나 인덱스 정보를 메모리에 캐싱하여 쿼리 응답 속도를 향상시킨다.

이러한 데이터 저장 최적화(Data Storage Optimization)는 대규모 메트릭 인프라 운영 비용을 절감하는 데 크게 기여한다.

vmselect: 분산 쿼리 실행 엔진

vmselect는 분산된 vmstorage 노드에 저장된 시계열 데이터를 대상으로 효율적인 쿼리 실행을 담당한다.

분산 쿼리 처리: 클라이언트의 쿼리 요청을 받아 모든 관련 vmstorage 노드에 쿼리를 분산시키고, 결과를 취합하여 반환한다.

쿼리 최적화: 인덱스 활용, 데이터 필터링, 집계 함수 최적화 등을 통해 복잡한 쿼리도 빠르게 처리할 수 있도록 설계되었다.

PromQL 호환성: Prometheus의 쿼리 언어인 PromQL을 완벽하게 지원하여 기존 Prometheus 사용자들의 마이그레이션 장벽을 낮춘다.

이 엔진은 대규모 데이터셋에 대한 복잡한 분석 쿼리(Analytical Queries) 성능을 보장한다.

Best Case vs Worst Case 시나리오 분석

VictoriaMetrics의 성능은 사용 사례와 구성 방식에 따라 크게 달라질 수 있다.

Best Case: 고성능 디스크(NVMe SSD), 충분한 메모리, 최적화된 네트워크 환경에서 대량의 메트릭을 낮은 지연 시간으로 처리할 때 최고의 성능을 발휘한다. 특히 vmagent의 Remote Write 배치 크기 최적화가 중요하다.

Worst Case: 저사양 하드웨어, 느린 디스크 I/O, 비효율적인 쿼리 패턴(예: 전체 데이터 범위 스캔)은 심각한 성능 저하를 야기할 수 있다. 또한, 과도한 라벨 수(Cardinality)는 vmstorage의 메모리 사용량을 급증시켜 병목 현상을 초래할 수 있다.

따라서 적절한 하드웨어 선택과 쿼리 패턴 설계가 VictoriaMetrics의 성공적인 운영에 필수적이다.

Inside VictoriaMetrics