Grafana Alloy 개념 정리

choi·2026년 3월 22일
post-thumbnail

데이터 파이프라인 에이전트 — 어디서든 데이터를 받아서, 필요하면 가공하고, 어디든 보낼 수 있는 범용 수집기


핵심 개념

Alloy는 컴포넌트를 연결하는 방식으로 동작함.

[소스 컴포넌트] → [처리 컴포넌트] → [목적지 컴포넌트]
     (input)          (process)          (output)

설정 파일(.alloy)에서 컴포넌트를 선언하고 연결하면, Alloy가 그 흐름대로 데이터를 처리함.


역할 1: 수집 (Producer)

앱 서버에 에이전트로 설치되어 로그/메트릭을 읽어서 Kafka 등으로 전송.

파일 로그, stdout, 메트릭
    → Alloy (읽기 + 변환)
        → Kafka
loki.source.file "app" {
  targets    = [{ __path__ = "/var/log/app.log" }]
  forward_to = [otelcol.exporter.kafka.default.input]
}

otelcol.exporter.kafka "default" {
  brokers  = ["kafka:9092"]
  topic    = "logs"
  encoding = "otlp_proto"
}

역할 2: 소비 (Consumer)

Kafka 토픽의 메시지를 읽어서 ClickHouse / Loki 등 백엔드로 적재.

Kafka 토픽
    → Alloy (소비 + 변환)
        → ClickHouse / Loki
otelcol.receiver.kafka "default" {
  brokers  = ["kafka:9092"]
  topic    = "logs"
  encoding = "otlp_proto"

  output {
    logs = [otelcol.exporter.otlphttp.clickhouse.input]
  }
}

지원 입출력

입력 (받을 수 있는 것)

  • 파일 로그 (/var/log/...)
  • Docker / Kubernetes 컨테이너 로그
  • OpenTelemetry (traces, metrics, logs)
  • Prometheus metrics
  • Kafka 메시지

출력 (보낼 수 있는 것)

  • Kafka
  • Loki (로그)
  • Tempo (트레이스)
  • Prometheus / Mimir (메트릭)
  • ClickHouse (OTel exporter 경유)
  • OpenTelemetry 호환 백엔드 전반

Kafka + ClickHouse 조합에서의 구조

Alloy 없이

앱 서버 ──(직접 produce)──→ Kafka ──→ ClickHouse
  • 앱 코드에 Kafka producer 로직 직접 구현 필요
  • 포맷 변경 시 앱 코드 수정 필요

Alloy 추가 후

앱 서버
    → Alloy (에이전트, 각 서버에 설치)
        → Kafka
            → Alloy (게이트웨이, 중앙 서버)
                → ClickHouse

앱은 로그만 쓰고, 수집/변환/적재는 Alloy가 담당.


장단점

장점

항목설명
수집 분리앱 코드에서 Kafka 의존성 제거
변환/정규화포맷 통일, 불필요한 필드 제거를 파이프라인에서 처리
멀티 소스 통합파일, stdout, OTel 등 다양한 소스를 하나로 수렴
라우팅로그 종류에 따라 다른 토픽/백엔드로 분기 가능
표준화모든 서버에 Alloy만 설치하면 수집 파이프라인 일원화

단점

항목설명
추가 홉앱 → Alloy → Kafka → ClickHouse로 레이턴시 소폭 증가
운영 복잡도관리할 컴포넌트가 늘어남
Alloy 장애Alloy가 죽으면 수집 중단 (로컬 버퍼로 일부 완화 가능)
오버엔지니어링앱이 적고 구조가 단순하면 직접 produce가 더 나을 수 있음

언제 쓸지 판단 기준

앱 코드를 건드리기 싫다          → Alloy 유용
여러 소스를 통합 수집해야 한다    → Alloy 유용
Kafka 전송 전에 변환이 필요하다   → Alloy 유용

앱이 1~2개이고 포맷이 단순하다    → 앱에서 직접 Kafka producer 써도 충분
profile
늦게나마 정신을 차리려고 하는 개발 뭐시기하는 사람

0개의 댓글