본문 바로가기
ETC DB

prometheus TSDB 관리 API

by 타마마임팩트_쫀 2021. 7. 21.

고급 사용자를 위해 데이터베이스 관리 기능을 하는 API입니다.
이 API는이 --web.enable-admin-api 설정되어 있지 않으면 사용할 수 없습니다.

 

1. snapshot

snapshot은 현재 모든 데이터의 snapshot을 TSDB의 데이터 디렉터리 아래 snapshots/<datetime>-<rand> 에 만들고 응답으로 디렉터리를 반환합니다.
헤드 블록에만 있고 아직 디스크에 압축되지 않은 스냅 샷 데이터를 선택적으로 건너 뜁니다.

POST /api/v1/admin/tsdb/snapshot
PUT /api/v1/admin/tsdb/snapshot

 

URL 쿼리 매개 변수 :

skip_head=<bool> : 헤드 블록에 있는 데이터를 건너 뜁니다. (옵션)

$ curl -XPOST http://localhost:9090/api/v1/admin/tsdb/snapshot
{
  "status": "success",
  "data": {
    "name": "20201014T211224Z-2be650b6d019eb54"
  }
}

이제 스냅 샷이 <data-dir>/snapshots/20201014T211224Z-2be650b6d019eb54 생성 되었습니다.

 

 

2. series 삭제

delete_series는 시간 범위에서 선택한 series에 대한 데이터를 삭제합니다.
실제 데이터는 여전히 디스크에 존재하며 향후 압축시 정리되거나 tombstones endpoint를 명시적으로 정리할 수 있습니다.

성공하면 204가 반환된다.

POST /api/v1/admin/tsdb/delete_series
PUT /api/v1/admin/tsdb/delete_series

 

URL 쿼리 매개 변수 :
match[]=<series_selector> : 삭제할 series를 선택하는 반복 라벨 매치 인수다. 하나 이상의 match[] 인수를 제공해야 합니다.
start=<rfc3339 | unix_timestamp> : 시작 타임 스탬프를. 선택 사항이며 가능한 최소 시간이 기본값 입니다.
end=<rfc3339 | unix_timestamp> : 종료 타임 스탬프. 선택 사항이며 기본값은 가능한 최대 시간 입니다.
시작 및 종료 시간을 모두 언급하지 않으면 데이터베이스에서 일치하는 시리즈의 모든 데이터가 지워 집니다.

$ curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]=up&match[]=process_start_time_seconds{job="prometheus"}'


$ curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={__name__="up"}&start="2020-10-14T11:00:00Z"&end="2020-10-14T11:02:00Z"'
RFC 3339 Date Formats :
ISO8601을 인터넷 프로토콜로 어떻게 다룰 것인지를 규정한 RFC 입니다.
ISO8601과 거의 비슷하며, 약간의 차이만 있을 뿐입니다.
예를 들면, RFC 3339에서는 'T'의 생략을 허용하지 않고, 날짜와 시간 사이의 공백을 허용합니다.
대부분의 경우, 이 둘을 상세하게 분리해서 생각하지 않아도 됩니다.

 

 

3. clean tombstones

clean_tombstones는 디스크에서 삭제 된 데이터를 제거하고 기존 삭제 표시를 정리합니다.
시리즈를 삭제 한 후 공간을 확보하기 위해 사용할 수 있습니다.

성공하면 204가 반환 됩니다.

POST /api/v1/admin/tsdb/clean_tombstones
PUT /api/v1/admin/tsdb/clean_tombstones

 

매개 변수 나 본문이 필요하지 않습니다.

$ curl -XPOST http://localhost:9090/api/v1/admin/tsdb/clean_tombstones

 

4. TSDB 통계

Prometheus TSDB에 대한 다양한 카디널리티 통계를 반환 합니다.

GET /api/v1/status/tsdb


 - headStats : TSDB의 헤드 블록에 대한 데이터.
 - numSeries : 시리즈 수.
 - chunkCount : 청크 수.
 - minTime : 현재 최소 타임 스탬프 (밀리 초).
 - maxTime : 현재 최대 타임 스탬프 (밀리 초).
 - seriesCountByMetricName : 메트릭 이름 및 시리즈 수 목록.
 - labelValueCountByLabelName : 레이블 이름 및 값 개수 목록.
 - memoryInBytesByLabelName : 레이블 이름과 사용 된 메모리의 목록 (바이트 단위). 메모리 사용량은 지정된 레이블 이름에 대한 모든 값의 길이를 더하여 계산 됩니다.
 - seriesCountByLabelValuePair : 레이블 값 쌍 목록과 해당 시리즈 수를 제공.

$ curl http://localhost:9090/api/v1/status/tsdb
{
  "status": "success",
  "data": {
    "headStats": {
      "numSeries": 508,
      "chunkCount": 937,
      "minTime": 1591516800000,
      "maxTime": 1598896800143,
    },
    "seriesCountByMetricName": [
      {
        "name": "net_conntrack_dialer_conn_failed_total",
        "value": 20
      },
      {
        "name": "prometheus_http_request_duration_seconds_bucket",
        "value": 20
      }
    ],
    "labelValueCountByLabelName": [
      {
        "name": "__name__",
        "value": 211
      },
      {
        "name": "event",
        "value": 3
      }
    ],
    "memoryInBytesByLabelName": [
      {
        "name": "__name__",
        "value": 8266
      },
      {
        "name": "instance",
        "value": 28
      }
    ],
    "seriesCountByLabelValuePair": [
      {
        "name": "job=prometheus",
        "value": 425
      },
      {
        "name": "instance=localhost:9090",
        "value": 425
      }
    ]
  }
}

'ETC DB' 카테고리의 다른 글

prometheus 실행  (0) 2021.07.22
prometheus TSDB format  (0) 2021.07.21
prometheus disk storage  (0) 2021.07.21
prometheus 데이터 구조  (2) 2021.07.21
prometheus 개요  (0) 2021.07.21