How to ingest data from Prometheus?

SquidEngineer·2024년 4월 23일

Prometheus

목록 보기
5/5

Expression Queries

Instant queries

  • 단일 시점의 instant query
GET /api/v1/query
POST /api/v1/query
  • query

  • time=<rfc3339 | unix_timestamp> : Optional.

    code

    import requests
    import pandas as pd
    from datetime import datetime, timedelta
    import os
    import json
    
    PROMETHEUS_URL = 'http://{Prometheus_URL}:{Port}'
    
    def query_prometheus(query, start_date=None, end_date=None, step='1m'):
        if start_date is None:
            start_date = datetime.now() - timedelta(days=1)
        if end_date is None:
            end_date = datetime.now()
    
        start_timestamp = int(datetime.timestamp(start_date))
        end_timestamp = int(datetime.timestamp(end_date))
    
        response = requests.get(f"{PROMETHEUS_URL}/api/v1/query_range", params={
            'query': query,
            'start': start_timestamp,
            'end': end_timestamp,
            'step': step
        })
    
        if response.status_code == 200:
            return parse_response(response.json())
        else:
            raise Exception(f"Error querying Prometheus: {response.status_code} - {response.content}")

TSDB Admin APIs

이 옵션을 사용하기 위해선 --web.enable-admin-api가 활성화되어있어야함.

Snapshot

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

POST /api/v1/admin/tsdb/snapshot
PUT /api/v1/admin/tsdb/snapshot
  • skip_head= : Optional. 헤드 블록의 데이터를 건너뜀.
$ curl -XPOST http://localhost:9090/api/v1/admin/tsdb/snapshot
{
  "status": "success",
  "data": {
    "name": "20171210T211224Z-2be650b6d019eb54"
  }
}

<data-dir>/snapshots/20171210T211224Z-2be650b6d019eb54에 스냅샷이 존재하게 된다.

profile
유연한 사고의 데이터 엔지니어입니다

0개의 댓글