콘텐츠로 이동

Vector - 고성능 관찰성 데이터 파이프라인 치트시트

Vector - 고성능 관찰성 데이터 파이프라인 치트시트

Vector (Datadog, 오픈소스)는 Rust로 작성된 고성능 관찰성 데이터 파이프라인입니다. 로그, 메트릭, 트레이스를 모든 소스에서 수집하고 변환을 통해 재형성한 후 모든 싱크로 전달합니다. 모두 공급 업체 무관이므로 재계측 없이 백엔드를 전환할 수 있습니다. 일반적으로 노드마다 에이전트가 실행될 때 중요한 Logstash 또는 Fluentd의 CPU 및 메모리 일부만 사용합니다.

설치

방법명령
설치 스크립트`curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.vector.dev
Debian/UbuntuVector 릴리스의 .deb
macOS (Homebrew)brew install vectordotdev/brew/vector
Dockerdocker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine
확인vector --version

모델: 소스 → 변환 → 싱크

# vector.yaml
sources:
  app_logs:
    type: file
    include: ["/var/log/app/*.log"]

transforms:
  parse:
    type: remap
    inputs: ["app_logs"]
    source: |
      . = parse_json!(.message)
      .env = "production"
      del(.password)

sinks:
  out:
    type: elasticsearch
    inputs: ["parse"]
    endpoints: ["http://es:9200"]
단계목적
sources데이터가 어디서 나오는지
transforms파싱, 필터링, 강화, 수정, 집계
sinks데이터가 어디로 가는지
inputs구성요소를 DAG에 연결

일반적인 소스

소스수집
file로그 파일 (테일링)
journaldsystemd 저널
kubernetes_logsk8s 메타데이터가 있는 Pod 로그
docker_logs컨테이너 로그
http_serverPush 엔드포인트
syslogTCP/UDP를 통한 Syslog
prometheus_scrape메트릭 엔드포인트 스크래핑
opentelemetryOTLP 수집

일반적인 싱크

싱크전송
elasticsearchElasticsearch/OpenSearch
lokiGrafana Loki
clickhouseClickHouse
aws_s3S3 (보관)
prometheus_exporter스크래핑을 위한 메트릭 노출
datadog_logs / splunk_hec공급 업체 백엔드
consolestdout (디버깅)
blackhole버림 (테스팅)

VRL (Vector Remap Language)

remap 변환은 대부분의 작업이 일어나는 곳입니다.

# 파싱, 강화, 수정, 노이즈 제거
. = parse_json!(.message)
.timestamp = parse_timestamp!(.ts, "%+")
.service = "checkout"
del(.credit_card)
if .level == "debug" { abort }
VRL 함수목적
parse_json!, parse_regex!, parse_grok!원본 텍스트 구조화
del(.field)필드 제거 (PII 수정)
to_int!, to_float!타입 강제변환
abort이벤트 드롭
merge, flatten객체 재형성

유용한 변환

변환수행
remapVRL 기반 재형성 (주력)
filter조건과 일치하는 이벤트 유지
route스트림을 명명된 분기로 분할
aggregate간격에 따라 메트릭 롤업
throttle시끄러운 이벤트 속도 제한
dedupe중복 제거
sample이벤트의 백분율 유지

Vector 운영

명령설명
vector --config vector.yaml구성으로 실행
vector validate배포 전 구성 확인
vector test구성에서 정의한 단위 테스트 실행
vector top구성요소당 처리량의 라이브 TUI
vector tap <component>구성요소를 통해 흐르는 이벤트 스트림
--watch-config구성 변경 시 핫 리로드
# 변환이 실제로 무엇을 내보내는지 디버그
vector tap parse

신뢰성

기능참고
디스크 버퍼재시작/백프레셔 생존 (buffer.type: disk)
승인엔드-투-엔드 전달 보장
적응형 동시성싱크 요청 속도 자동 조정
상태 검사도달 불가능한 싱크에 빠른 실패

Vector vs 대안

측면VectorFluent BitLogstash
언어RustCJRuby/JVM
리소스 사용매우 낮음매우 낮음높음
변환 언어VRL (풍부)Lua/필터Ruby/grok
데이터 타입로그, 메트릭, 트레이스로그, 메트릭로그
최적 용도공급 업체 무관 파이프라인초경량 엣지 에이전트레거시 ELK 스택

OpenObserve, Loki, Elasticsearch와 같은 싱크를 공급합니다; Fluentd와 비교합니다.

리소스