2023年12月14日木曜日

Promethues の API を requests でコールする

Promethues の API を requests でコールする

概要

過去にライブラリを使った方法を紹介しました
今回は requests だけでコールしてみました

環境

  • Python 3.11.3
  • requests 2.31.0

サンプルコード

API は query_range を使います

from datetime import datetime, timedelta, timezone

import requests

proxies = {"http": "192.168.100.2:3128"}
# 30分前から現在時刻まで取得
now = datetime.now(timezone.utc)
end = now.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
start = (now - timedelta(minutes=30)).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
params = {
    "query": 'instance:node_filesystem_avail:ratio{mountpoint="/var/opt/gitlab"}',
    "start": start,
    "end": end,
    "step": "60s",
}
schema = "http"
hostname = "192.168.100.1"
port = "9090"
path = "/api/v1/query_range"
url = f"{schema}://{hostname}:{port}{path}"

res = requests.get(url, params=params, proxies=proxies)
print(res.json())

注意事項

step=60s にしていますが query_range API の場合、取得できる最大プロットの数が 11,000 になるのでそれを超えなければ更に短い時間でも OK です
query API であれば制限はないようです
一週間取得する場合には 60s からでないと取得できません
また Prometheus はデフォルトだと 15 日間しかデータを保存していません

最後に

メトリックを取得するだけならかなり簡単にコールできるので専用のライブラリはいらないかもです

参考サイト

0 件のコメント:

コメントを投稿