Print
카테고리: [ Miscellaneous ]
조회수: 3187

1. 개요

Prometheus는 로컬 디스크 기반 시계열 데이터베이스를 내장하고 있지만, 리모트 스토리지와 연결 가능한 옵션도 제공한다. 이 글에서는 스토리지 관련된 내용을 살펴본다.

2. 로컬 스토리지

2.1. 디스크 레이아웃

샘플은 2시간 단위로 그룹화된다. 각 2시간 단위의 블록은 하나 이상의 청크 파일이 포함된 디렉토리로 구성되어 있는데, 청크 파일은 메타 데이터 파일 및 인덱스 파일(청크 파일의 시계열에 대한 메트릭 이름 및 레이블을 색인화 함)뿐만 아니라 해당 시간 동안 모든 시계열 샘플을 포함하고 있다. API를 통해 시리즈를 삭제하면 삭제 레코드는 청크 파일에서 즉시 데이터를 삭제하는 대신 별도의 툼스톤(묘비) 파일에 저장된다. 

현재 들어오는 샘플의 블록은 메모리에 보관되며 아직 완전히 유지되지는 않는다. 충돌 후 Prometheus 서버가 다시 시작될 때 재생할 수있는 WAL(write-ahead-log)에 의해 충돌이 발생하지 않도록 보호된다. 미리 쓰기 로그 파일은 wal디렉토리에 128MB 세그먼트 로 저장된다. 이러한 파일에는 아직 압축되지 않은 원시 데이터가 포함되어 있으므로 일반 블록 파일보다 훨씬 크다. Prometheus는 최소 3 개의 미리 쓰기 로그 파일을 유지하지만 트래픽이 많은 서버는 최소 2 시간 분량의 원시 데이터를 유지해야하기 때문에 3 개 이상의 WAL 파일을 볼 수 있다.

2.2. 압축

초기 2 시간 블록은 결국 백그라운드에서 더 긴 블록으로 압축됩니다. 압축은 보존 시간의 최대 10 % 또는 31 일 중 더 작은 블록을 만듭니다.

3. 리모트 스토리지