Exporter

Exporter는 "Prometheus가 무엇을 수집할 수 있는가"를 결정하는 존재다. PromQL 문법이나 Alert rule을 먼저 설계하는 대신, 어떤 Exporter를 어떤 네트워크에 붙일 것인가를 먼저 정하면 자연스럽게 scrape_configs target 목록과 검증 절차가 따라온다는 관점에서 보면, Exporter 선택은 곧 "모니터링 스택이 다루는 가시성 영역의 경계"를 정하는 일이다.

수집 대상마다 다른 Exporter를 쓴다

Exporter는 Prometheus가 pull할 수 있도록 텍스트 포맷의 /metrics 엔드포인트를 노출하는 사이드카/에이전트다. 대상 종류에 따라 노출하는 정보와 구성이 다르다.

Exporter 수집 대상 주요 메트릭 기본 포트
node-exporter 호스트 OS CPU, RAM, 디스크, 네트워크, 온도 9100
cAdvisor Docker 컨테이너 컨테이너별 CPU, 메모리, I/O, 파일시스템, 재시작 수 8080
blackbox-exporter HTTP/TCP/ICMP 프로브 가용성, 응답 지연, 인증서 만료 9115
mysqld_exporter MySQL 연결 수, QPS, 슬로우 쿼리, 핸들러 카운터 9104
redis_exporter Redis 연결 수, 메모리, evicted keys, AOF/RDB 상태 9121

node-exporter와 cAdvisor는 관측 대상 자신의 metric을 노출하지만, blackbox-exporter는 외부 target을 probe한 결과를 노출한다는 점에서 다른 세 Exporter와 역할이 다르다.

공통 컨벤션: monitoring_net과 서비스명:포트

모든 Exporter는 같은 컨벤션을 따른다 — monitoring_net에 붙이고, Prometheus scrape_configs에 서비스명:포트 기준으로 target을 등록한다. 검증은 컨테이너 내부/네트워크에서 curl http://<container>:<port>/metrics로 확인한다.[6]

보안 팁으로는 외부 포트 노출을 최소화하고, node-exporter의 호스트 마운트는 read-only로 유지하며, 자격증명은 .env 대신 Docker secrets를 사용하는 것을 권장한다.[7]

Blackbox relabel_configs 패턴

blackbox-exporter는 일반 scrape와 달리 metrics_path: /probe + relabel_configs 패턴이 필수다.[8] 설정 예시를 읽은 이 page의 해석으로는, __address__를 실제 probe 대상(__param_target)으로 보내고 Prometheus가 scrape하는 주소를 blackbox:9115로 교체해야 하기 때문이다.[9]

- job_name: 'api-probe'
  metrics_path: /probe
  params:
    module: [http_2xx]
  static_configs:
    - targets:
      - http://app:3000/health
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - target_label: instance
      replacement: api
    - target_label: __address__
      replacement: blackbox:9115

설정 예시의 경계

실패 모드

관련

출처

테스트 질문


  1. Exporter.md — 1) node-exporter 개념 요약, "호스트(도커 호스트)의 메트릭을 /metrics에 노출", "텍스트파일 컬렉터로 커스텀 메트릭 추가 가능" ↩︎

  2. Exporter.md — 2) cAdvisor 개념 요약, "최신 Docker/커널 일부 환경에서 필요" (privileged: true) ↩︎

  3. Exporter.md — 3) blackbox-exporter 개념 요약, "프로브 대상을 파라미터로 받아 가용성 체크" ↩︎

  4. Exporter.md — 4) mysqld_exporter 개념 요약, DSN 형식, MySQL 권한 최소 예시 ↩︎

  5. Exporter.md — 5) redis_exporter 개념 요약, REDIS_ADDR/REDIS_PASSWORD ↩︎

  6. Exporter.md — 0) 공통 컨벤션 ↩︎

  7. Exporter.md — 6) 보안/권한 팁 ↩︎

  8. PromQL.md — "Blackbox는 metrics_path: /probe + relabel_configs 패턴 필수"(L352) ↩︎

  9. Exporter.md — 3) Prometheus 타깃(HTTP 헬스체크 예시) relabel_configs(L183-189: source_labels: [__address__] → target_label: __param_target, target_label: __address__ → replacement: blackbox:9115) ↩︎