Prometheus Agent 모드

Prometheus Agent 모드 (Prometheus Agent Mode)

Prometheus Agent는 Prometheus 바이너리에 내장된 운영 모드로, 같은 스크랩 API, 의미론, 구성, 디스커버리 메커니즘을 가져요. 다만 이 에이전트 모드는 Prometheus의 평소 기능(TSDB, 알림, 규칙 평가) 중 일부를 비활성화하고, 스크랩과 원격 위치로의 원격 쓰기에 바이너리를 최적화해요. 관측 데이터를 중앙 저장소로 그냥 전달하고 싶을 때 아주 유용한 모드예요.

에이전트 모드는 원격 쓰기 사용 사례에 맞춰 Prometheus를 최적화해요. 쿼리, 알림, 로컬 저장을 비활성화하고 커스텀 TSDB WAL로 대체해요. 나머지는 모두 동일해요: 스크랩 로직, 서비스 디스커버리, 관련 구성.

출처: 문서

본문

Prometheus Agent 모드 (Prometheus Agent Mode)

Prometheus Agent는 같은 스크랩 API, 의미론, 구성, 디스커버리 메커니즘을 가진 Prometheus 바이너리에 내장된 운영 모드예요. 이 에이전트 모드는 Prometheus의 평소 기능(TSDB, 알림, 규칙 평가) 일부를 비활성화하고, 원격 위치로의 스크랩과 원격 쓰기에 바이너리를 최적화해요.

Prometheus Remote Write 프로토콜은 Prometheus가 수집한 메트릭의 전부 또는 일부를 원격 위치로 전달(스트리밍)해요. Remote Write API를 지원하는 하나 이상의 위치로 일부 메트릭(원하면 모든 메타데이터와 exemplar까지!)을 전달하도록 Prometheus를 구성할 수 있어요.

Remote Write와 함께 Prometheus는 여전히 풀 모델을 사용해 애플리케이션에서 메트릭을 수집하는데, 이는 다양한 실패 모드를 이해하게 해 줘요. 그 후에 샘플과 시리즈를 배치하고 내보내며, 데이터를 Remote Write 엔드포인트로 복제(푸시)해, 중앙 지점이 가지는 모니터링 미지수(unknowns)의 수를 제한해요. 그런 스크래퍼의 데이터 스트리밍은 메트릭 데이터를 중앙 위치에 저장할 수 있게 함으로써 Global View 사용 사례를 가능하게 해요. 이것은 관심사의 분리(separation of concerns)를 활성화하는데, 서로 다른 팀이 애플리케이션과 옵저버빌리티/모니터링 파이프라인을 관리할 때 유용해요.

Agent 모드는 원격 쓰기 사용 사례를 위해 Prometheus를 최적화해요. 쿼리, 알림, 로컬 저장을 비활성화하고 커스텀 TSDB WAL로 대체해요. 다른 모든 것은 동일하게 유지돼요: 스크랩 로직, 서비스 디스커버리, 관련 구성. 데이터를 원격 Prometheus 서버나 다른 Remote-Write 호환 프로젝트로 그냥 전달하고 싶다면 Prometheus의 드롭인 대체품으로 사용할 수 있어요.

본질적으로 이렇게 생겼어요:

에이전트 모드의 이점 (Benefits of agent mode)

  • 향상된 효율성. 커스텀 Agent TSDB WAL은 성공적인 쓰기 직후 데이터를 제거해요. 원격 엔드포인트에 도달할 수 없으면 원격 엔드포인트가 다시 온라인이 될 때까지 데이터를 임시로 디스크에 영속화해요. 이것은 현재 비-에이전트 Prometheus와 유사하게 2시간 버퍼로만 제한돼요. 즉 쿼리 목적으로 메모리에 데이터 청크를 만들거나 전체 인덱스를 유지할 필요가 없어요. 본질적으로 Agent 모드는 비슷한 상황에서 일반 Prometheus 서버가 사용하는 리소스의 일부만 사용해요.

  • Agent 모드는 수집의 더 쉬운 수평 확장을 가능하게 해요.

에이전트 모드의 단점 (Downsides of agent mode)

  • 로컬 쿼리 없음. 로컬 Prometheus 인스턴스를 쿼리할 수 없어요.

  • 기록 규칙 불가. 원격 쓰기로 보내기 위해 데이터를 미리 요약할 수 없어요. 규칙은 원격에서 해야 해요.

  • 알림 없음. 모든 알림은 원격 시스템이 해야 해요.

Agent 모드 상세 사용법 (How to Use Agent Mode in Detail)

Prometheus의 도움말 출력(--help 플래그)을 보면 대략 다음과 같이 보일 거예요:

usage: prometheus []

The Prometheus monitoring server

Flags:
  -h, --help                     Show context-sensitive help (also try --help-long and --help-man).
      (... other flags)
      --storage.tsdb.path="data/"
                                 Base path for metrics storage. Use with server mode only.
      --storage.agent.path="data-agent/"
                                 Base path for metrics storage. Use with agent mode only.
      (... other flags)
      --[no-]agent               Run Prometheus in 'Agent mode'.

Prometheus를 Agent 모드로 실행하려면 --agent 플래그를 사용하세요. 나머지 플래그는 서버와 Agent 모두를 위한 것이거나 특정 모드만을 위한 것이에요. 플래그의 도움말 문자열 마지막 문장을 확인하면 어떤 모드를 위한 것인지 알 수 있어요. "Use with server mode only"는 서버 모드 전용이라는 뜻이에요. 이와 같은 언급이 없으면 플래그가 공유된다는 뜻이에요.

Agent 모드는 같은 디스커버리 옵션과 remote write 옵션을 가진 같은 스크랩 구성을 받아들여요. 또한 9095 포트에 웹 UI를 노출하는데, 쿼리 능력은 비활성화돼 있지만 일반 Prometheus 서버처럼 빌드 정보, 구성, 타깃, 서비스 디스커버리 정보를 보여 줘요.

더 알아보기 (Learn more)