[TIL] Spring Actuator, Prometheus

Soeng_dev·2024년 12월 20일

Spring Actuator 메트릭스 모니터링

  • Spring Actuator는 애플리케이션 메트릭을 제공하며, Micrometer를 통해 Prometheus 같은 모니터링 시스템과 통합 가능.
  • /actuator/metrics에서 기본 메트릭 확인 가능.
  • 추가 설정으로 필요한 엔드포인트를 활성화해야 활용 범위가 넓어짐.

Groovy와 Gradle의 관계

  • Gradle은 빌드 스크립트 기본 언어로 Groovy DSL을 사용.
  • Groovy는 간결한 선언형 문법과 패턴화된 구조로 빌드 작업 최적화.
  • Kotlin DSL도 지원하지만 Groovy는 기본적으로 Gradle에서 널리 사용됨.

Prometheus와 SoundCloud/CNCF

  • Prometheus는 SoundCloud에서 내부 모니터링 도구로 시작, CNCF에 기여됨.
  • CNCF(Cloud Native Computing Foundation)는 Kubernetes 등 클라우드 네이티브 기술 관리 재단.
  • SoundCloud의 인디 음악 플랫폼에서 시작한 기술이 글로벌 모니터링 도구로 성장한 사례.

Exporter 역할

  • Exporter는 Prometheus가 이해할 수 있는 메트릭 형식으로 변환.
  • 예: Node Exporter(서버 메트릭), PostgreSQL Exporter(데이터베이스 메트릭).
  • Prometheus는 범용 플랫폼으로 설계되어, 필요한 Exporter는 사용자가 추가 설정.

Pushgateway

  • 짧은 수명의 작업(배치, 스크립트)에서 메트릭을 Push 방식으로 Prometheus에 전달.
  • Prometheus는 기본적으로 Pull 방식이며, Pushgateway는 예외적인 상황에서 보완 역할.

Prometheus 서버 다운 대비책

  1. 고가용성(HA): 여러 Prometheus 인스턴스 운영.
  2. 원격 스토리지: Thanos, Cortex 등과 연동하여 데이터 복구 가능.
  3. Alertmanager HA: 알림 연속성 유지.
  4. 스냅샷 백업: 주기적으로 데이터 저장.

Prometheus 설정 파일 위치

  • 일반적으로 /etc/prometheus/prometheus.yml에 저장.
  • Spring 프로젝트 내부에서는 src/main/resources/etc/prometheus/prometheus.yml에 두는 것도 가능.
  • 실행 시 --config.file 옵션으로 경로 지정.

Prometheus 수집 대상 설정

정적설정

  • Prometheus가 정적으로 설정된 대상에서 메트릭을 수집.
  • 예:
    static_configs:
      - targets: ['localhost:8080']

동적설정

  • 쿠버네티스에서 동적 모니터링 설정
    Kubernetes Pod에서 라벨 기반으로 필터링하여 대상 탐색 가능.
  • yml 예시:
kubernetes_sd_configs:
  - role: pod
relabel_configs:
  - source_labels: [__meta_kubernetes_pod_label_app]
    action: keep
    regex: 'my-app'
profile
Software Engineer

0개의 댓글