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}")
이 옵션을 사용하기 위해선 --web.enable-admin-api가 활성화되어있어야함.
스냅샷은 “모든 현재 데이터”의 스냅샷을 TSDB의 데이터 디렉터리 아래에 snapshots/<datetime>-<rand>로 만들고 디렉터리를 응답으로 반환한다. 헤드 블록에만 있고 아직 디스크에 압축되지 않은 데이터는 스냅샷을 건너뛴다.
POST /api/v1/admin/tsdb/snapshot
PUT /api/v1/admin/tsdb/snapshot
$ curl -XPOST http://localhost:9090/api/v1/admin/tsdb/snapshot
{
"status": "success",
"data": {
"name": "20171210T211224Z-2be650b6d019eb54"
}
}
⇒ <data-dir>/snapshots/20171210T211224Z-2be650b6d019eb54에 스냅샷이 존재하게 된다.