prometheus API

import requests

"""
官网位置
https://prometheus.io/docs/prometheus/latest/querying/api/

1、 表达式查询
# 在单个时刻或者一定时间范围内查询

1.1、 即时查询
# 单个时间点内查询
GET /api/v1/query
POST /api/v1/query
curl 'http://localhost:9090/api/v1/query?query=up&time=2023-01-30T20:10:51.781Z'

1.2、范围查询
# 一段时间内的表达式查询
GET /api/v1/query_range
POST /api/v1/query_range
curl 'http://localhost:9090/api/v1/query_range?query=up&start=2023-01-30T20:10:30.781Z&end=2023-01-30T20:11:00.781Z&step=15s'

2、设置查询表达式的格式
# 美化的方式设置ProQL表达式的格式
GET /api/v1/format_query
POST /api/v1/format_query
curl 'http://localhost:9090/api/v1/format_query?query=foo/bar'

3、查询元数据
# 查询有关系统及其标签的元数据

3.1、通过标签匹配器查找系列
GET /api/v1/series
POST /api/v1/series
$ curl -g 'http://localhost:9090/api/v1/series?' --data-urlencode 'match[]=up' --data-urlencode 'match[]=process_start_time_seconds{job="prometheus"}'

3.2、获取标签名称
# 返回标签名称列表
GET /api/v1/labels
POST /api/v1/labels
curl 'localhost:9090/api/v1/labels'

3.3、查询标签值
# 返回提供的标签名称的标签值列表
GET /api/v1/label//values
curl http://localhost:9090/api/v1/label/job/values

4、查询示例
# 实验性的接口
# 返回特定时间范围内的有效的PromQL查询的示例列表
GET /api/v1/query_exemplars
POST /api/v1/query_exemplars
curl -g 'http://localhost:9090/api/v1/query_exemplars?query=test_exemplar_metric_total&start=2023-01-30T15:22:25.479Z&end=2023-01-30T15:23:25.479Z'

5、目标
# 返回发现的标签
curl http://localhost:9090/api/v1/targets
curl 'http://localhost:9090/api/v1/targets?state=active'    # state=activestate=droppedstate=any

6、规则
# 返回警报喝记录规则的列表
GET /api/v1/rules
curl http://localhost:9090/api/v1/rules    # type=alert|recordtype=alerttype=record

7、警报
# 返回所有活动警报的列表
GET /api/v1/alerts
curl http://localhost:9090/api/v1/alerts

8、查询目标元数据
# 实验性指标
# 返回有关当前从目标抓取的指标的元数据
GET /api/v1/targets/metadata
curl -G http://localhost:9091/api/v1/targets/metadata \
    --data-urlencode 'metric=go_goroutines' \
    --data-urlencode 'match_target={job="prometheus"}' \
    --data-urlencode 'limit=2'
curl -G http://localhost:9091/api/v1/targets/metadata \
    --data-urlencode 'match_target={instance="127.0.0.1:9090"}'
curl -G http://localhost:9091/api/v1/targets/metadata

9、查询指标元数据
# 实验性指标
# 返回有关当前从目标抓取的指标的元数据
GET /api/v1/metadata
curl -G http://localhost:9090/api/v1/metadata?limit=2
curl -G http://localhost:9090/api/v1/metadata?metric=http_requests_total

10、警报管理器
# 返回活动和丢弃的警报
GET /api/v1/alertmanagers
curl http://localhost:9090/api/v1/alertmanagers

11、状态
# 返回当前的配置

11.1、配置
# 返回当前加载的配置文件
GET /api/v1/status/config
curl http://localhost:9090/api/v1/status/config

11.2、标签
# 返回配置的标签值
GET /api/v1/status/flags
curl http://localhost:9090/api/v1/status/flags

11.3、运行时信息
# 返回有关服务器的各种运行时信息属性
GET /api/v1/status/runtimeinfo
curl http://localhost:9090/api/v1/status/runtimeinfo

11.4、构建信息
# 返回有关服务器的各种生成信息属性
GET /api/v1/status/buildinfo
curl http://localhost:9090/api/v1/status/buildinfo

11.5、TSDB统计
# 返回有关 TSDB 的各种基数统计信息
GET /api/v1/status/tsdb
curl http://localhost:9090/api/v1/status/tsdb

11.6、WAL 回放数据
# 返回 WAL 重复的信息
GET /api/v1/status/walreplay
curl http://localhost:9090/api/v1/status/walreplay

12、TSDB 管理接口
# 为高级用户公开数据库功能的API,设置 --web.enable-admin-api

12.1、快照
# 将所有当前数据的快照创建到TSDB的数据目录下
# 并返回该目录作为响应
POST /api/v1/admin/tsdb/snapshot
PUT /api/v1/admin/tsdb/snapshot
curl -XPOST http://localhost:9090/api/v1/admin/tsdb/snapshot

12.2、删除系列
# 删除某个时间范围内所选序列的数据
POST /api/v1/admin/tsdb/delete_series
PUT /api/v1/admin/tsdb/delete_series
curl -X POST \
  -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]=up&match[]=process_start_time_seconds{job="prometheus"}'

12.3、清理逻辑删除
# 从磁盘中删除已经删除的数据并清理现有的逻辑删除,
# 可以在删除系列后使用以释放空间
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

"""


usr = "http://192.168.73.222:40090"

# 基础 API 构建
def getQueryValue(requestMethod,query,params):
    inquire = usr + query
    response = requests.request(requestMethod, inquire,params=params)
    if response.status_code == 200:
        # print(response.json())
        result = response.json()
        return result
    else:
        return None

def getQueryValueGet(requestMethod,query,params):
    h = {
        "Accept-Encoding": "gzip",
        "Accept-Language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7"
    }
    r = requests.get(usr+query, headers=h, params=params).json()
    return r

# 1、 表达式查询
# 在单个时刻或者一定时间范围内查询
# 1.1、 即时查询
# 单个时间点内即时查询
# GET | POST
def expressionQueriesValue():
    query = '/api/v1/query?query=up&time=2023-01-30T20:10:51.781Z'
    result = getQueryValue('GET',query,"")
    return result

# 1.2、范围查询
# 一段时间内的表达式查询
# GET | POST
def rangeQueriesValue():
    query = '/api/v1/query_range?query=up&start=2023-01-30T20:10:30.781Z&end=2023-01-30T20:11:00.781Z&step=15s'
    result = getQueryValue('GET',query,"")
    return result

# 2、设置查询表达式的格式
# 美化的方式设置ProQL表达式的格式
# GET | POST
def formattingQueryExpressionsValue():
    query = '/api/v1/format_query?query=foo/bar'
    result = getQueryValue('GET',query,"")
    return result

# 3、查询元数据
# 查询有关系统及其标签的元数据
# 3.1、通过标签匹配器查找系列
# GET | POST
def findingSeriesByLabelMatchersValues():
    query = '/api/v1/series?'
    params = {
        'match[]': 'up',
    }
    result = getQueryValueGet('GET',query,params)
    return result

# 3.2、获取标签名称
# 返回标签名称列表
# GET | POST
def gettingLabelNamesValue():
    query = '/api/v1/labels'
    result = getQueryValue('GET',query,"")
    return result

# 3.3、查询标签值
# 返回提供的标签名称的标签值列表
# GET
def queryingLabelValues():
    query = '/api/v1/label/job/values'
    result = getQueryValue('GET',query,"")
    return result

# 4、查询示例
# 实验性的接口
# 返回特定时间范围内的有效的PromQL查询的示例列表
# GET | POST
def queryingExemplarsValue():
    query = '/api/v1/query_exemplars?query=test_exemplar_metric_total&start=2023-01-30T15:22:25.479Z&end=2023-01-30T15:23:25.479Z'
    result = getQueryValue('GET',query,"")
    return result

# 5、目标
# 返回发现的标签
# GET
def targetsValue():
    query = '/api/v1/targets'
    query = '/api/v1/targets?state=active'    # state=activestate=droppedstate=any
    result = getQueryValue('GET',query,"")
    return result

# 6、规则
# 返回警报喝记录规则的列表
# GET
def rulesValue():
    query = '/api/v1/rules'    # type=alert|recordtype=alerttype=record
    result = getQueryValue('GET',query,"")
    return result

# 7、警报
# 返回所有活动警报的列表
# GET
def alertsValue():
    query = '/api/v1/alerts'
    result = getQueryValue('GET',query,"")
    return result

# 8、查询目标元数据
# 实验性指标
# 返回有关当前从目标抓取的指标的元数据
# GET
def queringTargetMetadataValue():
    query1 = '/api/v1/targets/metadata'
    params1 = {
        'metric': 'go_goroutines',
        'match_target': '{job="prometheus"}',
        'limit': '2'
    }
    query2 = '/api/v1/targets/metadata'
    params2 = {
        'match_target': '{instance="127.0.0.1:9090"}'
    }
    query3 = '/api/v1/targets/metadata'
    result = getQueryValueGet('GET',query1,params1)
    return result

# 9、查询指标元数据
# 实验性指标
# 返回有关当前从目标抓取的指标的元数据
# GET
def queringMetricMetadataValue():
    query = '/api/v1/metadata?limit=2'
    query = '/api/v1/metadata?metric=http_requests_total'
    result = getQueryValue('GET',query,"")
    return result

# 10、警报管理器
# 返回活动和丢弃的警报
# GET
def alertmanagersValue():
    query = '/api/v1/alertmanagers'
    result = getQueryValue('GET',query,"")
    return result

# 11、状态
# 返回当前的配置
# 11.1、配置
# 返回当前加载的配置文件
# GET
def configValue():
    query = '/api/v1/status/config'
    result = getQueryValue('GET',query,"")
    return result

# 11.2、标签
# 返回配置的标签值
# GET
def flagsValue():
    query = '/api/v1/status/flags'
    result = getQueryValue('GET',query,"")
    return result

# 11.3、运行时信息
# 返回有关服务器的各种运行时信息属性
# GET
def runtimeInformationValue():
    query = '/api/v1/status/runtimeinfo'
    result = getQueryValue('GET',query,"")
    return result

# 11.4、构建信息
# 返回有关服务器的各种生成信息属性
# GET
def buildInformantionValue():
    query = '/api/v1/status/buildinfo'
    result = getQueryValue('GET',query,"")
    return result

# 11.5、TSDB统计
# 返回有关 TSDB 的各种基数统计信息
# GET
def tsdbStatsValue():
    query = '/api/v1/status/tsdb'
    result = getQueryValue('GET',query,"")
    return result

# 11.6、WAL 回放数据
# 返回 WAL 重复的信息
# GET
def valReplayStatsValue():
    query = '/api/v1/status/walreplay'
    result = getQueryValue('GET',query,"")
    return result

# 12、TSDB 管理接口
# 为高级用户公开数据库功能的API,设置 --web.enable-admin-api
# 12.1、快照
# 将所有当前数据的快照创建到TSDB的数据目录下
# 并返回该目录作为响应
def snapshotValue():
    query = '/api/v1/admin/tsdb/snapshot'
    result = getQueryValue('GET',query,"")
    return result

# 12.2、删除系列
# 删除某个时间范围内所选序列的数据
# POST | PUT
def deleteSeriesValue():
    query = '/api/v1/admin/tsdb/delete_series?match[]=up&match[]=process_start_time_seconds{job="prometheus"}'
    result = getQueryValue('POST',query,"")
    return result

# 12.3、清理逻辑删除
# 从磁盘中删除已经删除的数据并清理现有的逻辑删除,
# 可以在删除系列后使用以释放空间
# POST | PUT
def cleanTombstonesValue():
    query = '/api/v1/admin/tsdb/clean_tombstones'
    result = getQueryValue('POST',query,"")
    return result

# 函数调用
dd = queringTargetMetadataValue()
print("dd",dd)

ee = buildInformantionValue()
print("ee",ee)


你可能感兴趣的:(python,linux)