python全栈,  系统运维

python prometheus client 使用

1. 安装依赖包

pip3 install requests
pip3 install prometheus-client

脚本

import time

from prometheus_client import start_http_server, Gauge
import random
import requests
import json
import os
from datetime import datetime
from random import randint

g1 = Gauge('idc_blackbox',
           'Idc Automated Testing vlue 1/normal,2/request token timeout,3/request pri timeout,4/max retries ',
           ["idc_request", ])
g2 = Gauge('idc_response_time', 'Idc Automated Testing response time,unit second', ["request_time"])

uc_timeout = 3

# 获取当前时间
def now_time():
    return str(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

# 写日志到文本
def uc_log(text):
    dirname = os.path.dirname(__file__) or '.'
    log_file = dirname + "/uc.log"
    print(log_file)
    with open(log_file, 'a') as file:
        file.write(text + '\n')

def uc():
    os.environ['NO_PROXY'] = 'uc.65535.fun'
    url1 = "http://uc.65535.fun/api/app/access_token?app_id=65535803cc393021dd31b&app_secret=65535307fd9d44d69f36537e325b3368"
    headers = {
        'Content-Type': 'application/json; charset=UTF-8',
        'Accept': 'application/json; charset=UTF-8',
        'User-Agent': '65535-idc-monitor'
    }
    try:
        r1 = requests.get(url1, headers=headers, timeout=uc_timeout)

        token = json.loads(r1.text)['data']['access_token']
        print(token)
        url2 = "https://uc.65535.fun/api/app/permission/65535-91f7-4475-a916-adaeac485e8e/access_module"
        params = {"access_token": token}
        try:
            r2 = requests.get(url2, params=params, headers=headers, timeout=uc_timeout)
            rt = r2.elapsed.total_seconds()
            uc_log(now_time() + ': ' + "请求正常~" + ' 响应时间: ' + str(rt) + 's')
            print(r2.text)
            return 1, rt

        except requests.exceptions.ReadTimeout as e:
            uc_log(now_time() + ': ' + "权限获取超时~")
            return 3, -1

        except requests.exceptions.ConnectTimeout as e:
            uc_log(now_time() + ': ' + "Max retries")
            return 4, -1

    except requests.exceptions.ReadTimeout as e:

        uc_log(now_time() + ': ' + "token获取超时~")
        return 2, -1

    except requests.exceptions.ConnectTimeout as e:
        uc_log(now_time() + ': ' + "Max retries")
        return 4, -1

if __name__ == '__main__':
    # 启动http服务
    start_http_server(8000)
    # 采集指标
    while True:
        st, rt = uc()
        g1.labels(idc_request='idc_request_uc').set(st)
        g2.labels(request_time='rt_uc').set(rt)
        time.sleep(randint(1, 3))

留言

您的电子邮箱地址不会被公开。 必填项已用*标注

闽ICP备20008591号-1