Prometheus의 Http SD

Hansu Kim·2022년 5월 6일
0

Prometheus에는 Service Discovery라는 기능이 있다.
해당 기능은 scrape할 타겟의 리스트들을 변경하는 기능이다.

SD 기반 방식은 아래와 같이 있다.

  • DNS 기반 SD
    • DNS에 query 결과를 기반으로 타겟들을 정의하여 scrape
  • File 기반 SD
    • inotify 기반으로 동작하므로 타겟 변경시 변경 이벤트 기반으로 즉시 적용 가능
  • HTTP 기반 SD

inotify: 파일 시스템 이벤트 통보 기능을 제공해주는 리눅스 커널 서브 시스템

HTTP Service Discovery

HTTP endpoint로 Target을 검색할 수 있는 방법으로, 파일 File based service discovery 방식의 대안이다.

HTTP 기반 Service discovery 방식은 아래 특징이 있다.

  • 지정된 interval마다 타겟리스트를 받아옴.
  • 수신된 target list들은 캐시되며, 1분 간격으로 프로메테우스의 scrape에 적용
    • 갱신시, HTTP로 수신한 리스트에 에러가 있으면 기존 리스트를 그대로 사용.
    • 갱신 실패시, prometheus_sd_http_failures_total에 저장됨
  • 캐시된 타겟들은 prometheus 재시작시 저장되지 않음
  • 타겟 추가시에도 전체 타겟들을 포함해서 http endpoint로 다시 보내줘야함
  • HTTP Header의 Content-Type: application/json 필수이며, body의 데이터는 반드시 json 형식이어야 한다.
  • Response는 200 code와 함께 Request에서 포함된 target json list가 그대로 회신됨

참고자료: https://prometheus.io/docs/prometheus/latest/http_sd/

0개의 댓글