내가 Dokploy를 위한 One-Command Observability Stack을 구축한 방법

발행: (2026년 1월 6일 오후 12:26 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

Dokploy를 위한 원-커맨드 관측성 스택 구축 방법에 대한 표지 이미지

문제

적절한 관측성을 설정하는 것은 고통스럽습니다:

  • Grafana, Tempo, Loki 및 컬렉터마다 별도의 구성이 필요합니다.
  • 이들 간에 통신하도록 하려면 네트워킹 마법이 필요합니다.
  • OpenTelemetry 설정은 학습 곡선이 가파릅니다.
  • 대부분의 튜토리얼은 YAML 디버깅에 무한한 시간이 있다고 가정합니다.
  • Dokploy의 Docker 네트워크는 복잡성을 한 층 더 추가합니다.

솔루션: Dokploy Grafana Compose

사전 구성된 모니터링 스택으로 Dokploy 앱과 함께 배포됩니다. 네 개의 서비스, 하나의 docker compose up으로 완료됩니다.

# All four services on dokploy-network, pre‑wired
services:
  alloy:   # Collects traces, logs, metrics
  tempo:   # Stores traces
  loki:    # Stores logs
  grafana: # Visualizes everything

앱이 텔레메트리를 Alloy에 전송하면, 모든 것이 자동으로 올바른 위치로 흐릅니다.

작동 방식

  • Alloy가 데이터를 수신합니다 – 포트 4317/4318의 OTLP 수신기가 애플리케이션에서 전송되는 트레이스, 로그, 메트릭을 받아들입니다.
  • 데이터가 자동으로 라우팅됩니다 – 트레이스는 Tempo로, 로그는 Loki로, 메트릭은 Prometheus로 전송됩니다.
  • Grafana가 모든 것을 연관시킵니다 – 느린 요청이 보이시나요? 트레이스에서 관련 로그로 즉시 이동할 수 있습니다.
  • Faro가 프런트엔드를 캡처합니다 – 포트 12347에서 브라우저 측 실사용자 모니터링이 포함됩니다.

편집할 구성 파일이 없습니다. 그냥 배포하고 애플리케이션에 계측만 하면 됩니다.

30초 만에 시작하기

git clone https://github.com/quochuydev/dokploy-grafana-compose.git
cd dokploy-grafana-compose
docker compose up -d

이것은 다음을 배포합니다:

  • Grafana Alloy v1.11.3 – OTLP 및 Faro 수신기를 포함한 통합 텔레메트리 수집기.
  • Tempo v2.9.0 – 분산 추적 백엔드.
  • Loki v3.5.8 – 로그 집계 시스템.
  • Grafana v12.2.1 – 추적 및 로그용 사전 프로비저닝된 대시보드.

스택 구성 요소

서비스목적기능
Alloy데이터 수집OTLP (4317/4318) 및 Faro (12347) 텔레메트리를 수신
Tempo트레이스 저장분산 트레이스를 저장하고 TraceQL 쿼리를 가능하게 함
Loki로그 저장로그를 집계하고 LogQL 쿼리를 가능하게 함
Grafana시각화하나의 UI에서 트레이스, 로그, 메트릭을 연관시킴

앱 계측하기

저장소에는 Node.js 예제가 포함되어 있습니다. 주요 의존성:

pnpm add @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node \
  @opentelemetry/exporter-trace-otlp-http @opentelemetry/exporter-logs-otlp-http

Alloy를 가리키도록 SDK 초기화:

const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { OTLPLogExporter } = require('@opentelemetry/exporter-logs-otlp-http');

const traceExporter = new OTLPTraceExporter({ url: 'http://alloy:4318/v1/traces' });
const logExporter   = new OTLPLogExporter({   url: 'http://alloy:4318/v1/logs' });

예제 실행:

(cd examples/node && pnpm start)

왜 이것이 작동하는가

  • Zero configuration – 모든 서비스가 dokploy-network에 사전 연결되어 있어, 배포만 하면 됩니다.
  • Production versions – Grafana 생태계 도구들의 안정적인 릴리스를 사용합니다.
  • Auto‑restart – 컨테이너는 unless-stopped 재시작 정책을 사용합니다.
  • Standard protocols – OTLP 덕분에 OpenTelemetry와 호환되는 모든 앱이 작동합니다.
  • Frontend monitoring included – Faro 수신기가 브라우저 텔레메트리를 바로 캡처합니다.

시도해 보기

Dokploy를 실행 중이고 설정 번거로움 없이 가시성을 원한다면:

git clone https://github.com/quochuydev/dokploy-grafana-compose.git
cd dokploy-grafana-compose
docker compose up -d

Grafana를 http://localhost:3000에서 열고 Node.js 예제를 실행하여 트레이스가 흐르는 것을 확인하세요.

GitHub:
Docs: GrafanaOpenTelemetryDokploy

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...