Remote Read API
Remote Read API
프로메테우스에 저장된 시계열 데이터를 외부 시스템이 읽어갈 수 있게 해주는 원격 읽기(Remote Read) 프로토콜을 설명하는 문서예요. 스토리지 계층을 분리하거나, 롱텀 스토리지(Thanos, Cortex 같은)에 데이터를 보내고 다시 읽어올 때 이 인터페이스가 동작해요. HTTP API가 사람이 직접 쓰는 쿼리용이라면, 이건 프로그램 간에 데이터를 주고받는 저수준 프로토콜이라고 생각하면 돼요.
이 API는 snappy 압축을 기대합니다. 요청이 고정된 엔드포인트로 가고, 응답은 원시 샘플 목록이나 스트리밍 청크 형태로 옵니다. 프로토콜 정의 파일의 위치까지 함께 정리된 참고 자료예요.
출처: 문서
본문
참고: 이 API는 현재 안정 API로 간주되지 않으며, 프로메테우스의 비메이저 버전 릴리스 사이에도 변경될 수 있어요.
이 API는 프로메테우스에서 데이터 읽기 기능을 제공해요. 이 인터페이스는 snappy 압축을 기대해요. API 정의는 여기에 있어요. Protobuf 정의는 buf.build에서도 사용할 수 있어요.
요청은 다음 엔드포인트로 보내져요.
/api/v1/read
외부 레이블과 원격 읽기 (External labels and remote read)
global의 external_labels 설정은 양쪽에서 원격 읽기에 영향을 줘요:
- 원격 읽기 노출: 프로메테우스는
/api/v1/read를 통해 반환되는 모든 시계열에external_labels를 추가해요. 레이블은 TSDB에 저장되지 않고 응답 시점에 추가돼요. 외부 레이블과 일치하는 들어오는 등식 매처는 TSDB가 쿼리를 충족할 수 있도록 빈 문자열과 일치하도록 재작성돼요 - 원격 읽기 사용: 쿼리하는 프로메테우스는 요청에서 자신의
external_labels를 추가 등식 매처로 보내고, 응답에서 그것들을 제거해요
쿼리하는 프로메테우스가 원격 서버에 없거나 다른 external_labels를 가지고 있으면 매처가 일치하지 않아 쿼리가 결과를 반환하지 않을 수 있어요. 쿼리 측의 external_labels가 원격 측에 존재하는 레이블과 일관되는지 확인하세요.
샘플 (Samples)
요청된 쿼리와 일치하는 원시 샘플 목록을 포함하는 메시지를 반환해요.
스트리밍 청크 (Streamed Chunks)
이 스트리밍 청크는 Gorilla 압축에서 영감을 받은 XOR 알고리즘을 사용해 청크를 인코딩해요. 다만 초 대신 밀리초 단위 해상도를 제공해요.
더 알아보기 (Learn more)
- HTTP API — 사람이 쓰는 쿼리용 HTTP API
- 스토리지(Storage) — 데이터 저장 구조와 원격 읽기의 배경
- Remote Write 사양 — 쓰기 방향의 원격 프로토콜
- remote.proto 정의 — 프로토콜의 원본 정의