Tailnet 위에 보안 관측 메쉬로 Django, Nextcloud, Grafana, Loki 및 Prometheus 연결 (metrics & logs, dashboards).
발행: (2026년 2월 8일 오후 02:10 GMT+9)
3 분 소요
원문: Dev.to
Source: Dev.to
목표
아키텍처
스택 개요
- Prometheus → Django와 Nextcloud API 엔드포인트에서 메트릭을 스크랩
- Loki → 두 서비스의 로그를 수집
- Grafana → 메트릭과 로그를 함께 시각화
- Caddy → 모든 엔드포인트에 대해 신뢰된 TLS를 제공하는 리버스 프록시
- Tailnet (Tailscale) → 신원 기반 접근이 가능한 사설 네트워크
모든 통신이 안전하게 이루어집니다 — 노출된 포트가 없고, 암호화되지 않은 트래픽도 없습니다.
도전 과제
- Grafana에서 로그는 보이지만 메트릭이 표시되지 않음
- Prometheus에서 TLS 검증 문제 발생
- 서비스 간 라우팅 문제
설정 하이라이트
Prometheus 스크랩 설정 (YAML)
scrape_configs:
- job_name: "django"
metrics_path: /metrics
static_configs:
- targets: ["X.tail.ts.net:8000"]
- job_name: "nextcloud"
metrics_path: /metrics
static_configs:
- targets: ["X.tail.ts.net:8080"]
두 경로 모두 Caddy 뒤에 위치하며, Caddy는 신뢰된 Tailnet 인증서를 사용해 TLS 종료를 처리합니다.
결과
- 요청별 로그와 메트릭을 연관시킴
- 가동 시간 및 성능 추세를 추적
- 모든 노드에 걸친 분산 시스템 동작을 시각화
마치 자체 미니 제어 평면을 운영하는 느낌입니다 — 분산되고, 안전하며, 설명 가능한 구조입니다.
다음 단계
- 분산 추적 추가 (OpenTelemetry)
- 중요한 엔드포인트에 대한 Prometheus 알림 규칙 정의
- CI/CD를 통한 관측성 설정 자동화
핵심 교훈
관측성은 부가 기능이 아니라 인프라의 신경계입니다.
서버가 서로 이야기를 시작하면, 우리는 다르게 듣게 됩니다.