Prometheus 문서/쿼리/HTTP API

Jmnote (토론 | 기여)님의 2025년 2월 3일 (월) 17:17 판 (→‎포맷 개요)

1 개요

HTTP API

현재 안정적 HTTP API는 Prometheus 서버의 /api/v1아래에서 접근할 수 있습니다. 비단절적 추가사항이 있다면 해당 엔드포인트에 추가됩니다.

2 포맷 개요

API 응답 형식은 JSON입니다. 모든 성공적인 API 요청은 2xx 상태 코드를 반환합니다.

API 핸들러에 도달하는 잘못된 요청은 JSON 오류 개체와 다음 HTTP 응답 코드 중 하나를 반환합니다.

  • 400 Bad Request 매개변수가 누락되었거나 올바르지 않은 경우.
  • 422 Unprocessable Entity 표현식을 실행할 수 없는 경우( RFC4918 ).
  • 503 Service Unavailable 쿼리가 시간 초과되거나 중단될 때.

API 엔드포인트에 도달하기 전에 발생한 오류의 경우 2xx 외 다른 코드가 반환될 수 있습니다.

요청 실행을 방해하지 않는 오류가 있는 경우 경고 배열이 반환될 수 있습니다. 거짓 양성일 수도 있고 아닐 수도 있는 잠재적인 쿼리 문제에 대해 정보 수준 주석의 추가 배열이 반환될 수 있습니다. 성공적으로 수집된 모든 데이터는 데이터 필드에 반환됩니다.

JSON 응답 봉투 포맷은 다음과 같습니다.

{
  "status": "success" | "error",
  "data": <data>,

  // Only set if status is "error". The data field may still hold
  // additional data.
  "errorType": "<string>",
  "error": "<string>",

  // Only set if there were warnings while executing the request.
  // There will still be data in the data field.
  "warnings": ["<string>"],
  // Only set if there were info-level annnotations while executing the request.
  "infos": ["<string>"]
}

3 표현식 쿼리

3.1 인스턴트 쿼리

3.2 범위 쿼리

4 쿼리 표현식 포맷팅

5 메타데이터 쿼리하기

5.1 레이블 매처로 시리즈 찾기

5.2 레이블 이름 얻기

5.3 레이블 값 쿼리하기

6 이그젬플러 쿼리

7 표현식 쿼리 결과 포맷

7.1 범위 벡터

7.2 인스턴트 벡터

7.3 스칼라

7.4 문자열

7.5 네이티브 히스토그램

8 타겟

9 규칙

10 경보

11 타겟 메타데이터 쿼리하기

12 메트릭 메타데이터 쿼리하기

13 경보매니저

14 상태

14.1 설정

14.2 플래그

14.3 런타임 정보

14.4 빌드 정보

14.5 TSDB 통계

다음 엔드포인트는 Prometheus TSDB에 대한 다양한 카디널리티 통계를 반환합니다.

GET /api/v1/status/tsdb

URL 쿼리 파라미터: - limit=<number>: 반환된 항목 수를 각 통계 세트에 대해 지정된 수로 제한합니다. 기본적으로 10개의 항목이 반환됩니다.

data 쿼리 결과 섹션은 다음으로 구성됩니다.

  • headStats: TSDB의 헤드 블록에 대한 다음 데이터를 제공합니다.
  • numSeries: 시리즈 수입니다.
  • chunkCount: 청크의 개수입니다.
  • minTime: 현재 최소 타임스탬프(밀리초)입니다.
  • maxTime: 현재 최대 타임스탬프(밀리초)입니다.
  • seriesCountByMetricName: 지표 이름 및 해당 계열 수 목록을 제공합니다.
  • labelValueCountByLabelName: 레이블 이름과 해당 값 개수 목록을 제공합니다.
  • memoryInBytesByLabelName: 바이트 단위로 사용되는 레이블 이름 및 메모리 목록을 제공합니다. 메모리 사용량은 지정된 레이블 이름에 대한 모든 값의 길이를 더하여 계산됩니다.
  • seriesCountByLabelPair: 레이블 값 쌍 및 해당 계열 수 목록을 제공합니다.
$ 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
      }
    ]
  }
}

14.6 WAL 리플레이 통계

15 TSDB 어드민 API

이는 고급 사용자를 위한 데이터베이스 기능을 제공하는 API입니다. 이 API는 --web.enable-admin-api가 세팅되지 않으면 활성화되지 않습니다.

15.1 스냅샷

스냅샷은 모든 현재 데이터의 스냅샷을 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": "20171210T211224Z-2be650b6d019eb54"
  }
}

이제 스냅샷은 <data-dir>/snapshots/20171210T211224Z-2be650b6d019eb54에 있습니다.

15.2 시리즈 삭제

15.3 툼스톤 청소

16 원격 쓰기 수신기

17 OTLP 수신기

18 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}