Http接口请求耗时、返回码、QPS监控

1、安装必要的库

yum -y install python3
yum -y install epel-release
yum -y install python3-pip
pip3 install prometheus_client requests

2、编写脚本

vim prometheus_http.py

from prometheus_client import start_http_server, Summary, Counter, Gauge
import requests
import time

# Prometheus 指标
REQUEST_TIME = Summary('http_request_duration_seconds', 'HTTP请求处理时间')
REQUEST_COUNT = Counter('http_requests_total', '总的HTTP请求数', ['status_code'])
QPS = Gauge('http_requests_per_second', '每秒HTTP请求数')

# 需要监控的HTTP接口
URL = "http://www.test.com/"

def track_metrics():
    """监控HTTP接口请求的耗时、状态码和QPS"""
    while True:
        start_time = time.time()
        try:
            response = requests.get(URL)
            duration = time.time() - start_time

            # 记录请求耗时
            REQUEST_TIME.observe(duration)

            # 记录返回状态码
            REQUEST_COUNT.labels(status_code=response.status_code).inc()

        except requests.exceptions.RequestException:
            # 如果请求失败,记录状态码为500
            REQUEST_COUNT.labels(status_code=500).inc()

        # 计算QPS
        QPS.set(1 / duration if duration > 0 else 0)

        # 休眠一秒钟,模拟持续监控
        time.sleep(1)

if __name__ == '__main__':
    # 启动一个HTTP服务器,监听8002端口,用于Prometheus抓取数据
    start_http_server(8002)

    # 开始监控HTTP请求的耗时、状态码和QPS
    track_metrics()

3、脚本说明:

  • REQUEST_TIME:记录HTTP请求的耗时。
  • REQUEST_COUNT:记录每个状态码的请求总数。
  • QPS:记录每秒请求数。
  • start_http_server(8002):启动HTTP服务器,在8002端口暴露Prometheus的 /metrics 接口。
  • track_metrics():在一个循环中持续发送HTTP请求,记录指标。

4、运行脚本

#前台运行
python3 prometheus_http.py
#后台运行
nohup python3 prometheus_http.py > /home/work/logs/applogs/prometheus_http.log 2>&1 &
#测试是否采集到数据
curl http://10.156.44.62:8002/metrics

5、grafana面板配置

在Grafana中,先设置创建一个dashboard,然后进入这个dashboard,再创建新的面板,在面板的左下方数据源中选择Prometheus为数据源,然后进行promQL语法进行数据查询过滤展示即可,语法如下:

5.1 QPS(每秒请求数)

Prometheus中的QPS指标是通过 Gauge 类型记录的。你可以通过以下PromQL查询实时显示每秒的请求数:

rate(http_requests_total[1m])

rate函数计算在过去1分钟内每秒的平均请求数(即QPS)。

5.2 请求耗时

REQUEST_TIME指标是通过 Summary 类型记录的请求耗时。你可以使用以下PromQL查询来显示不同百分位数的请求耗时(例如P99、P95等):

histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[1m])) by (le))

histogram_quantile 函数计算某个百分位的请求耗时,0.99 表示99%请求的耗时。

5.3 请求返回状态码

可以统计不同HTTP状态码的请求数量,以下是查询2xx、4xx、5xx请求数量的PromQL语句:

sum(rate(http_requests_total{status_code=~"2.."}[1m])) # 成功请求
sum(rate(http_requests_total{status_code=~"4.."}[1m])) # 客户端错误
sum(rate(http_requests_total{status_code=~"5.."}[1m])) # 服务端错误

5.4 面板设置建议:

  • QPS:使用 Graph 面板展示QPS变化趋势;也可以用 Stat 来显示当前的QPS值。
  • 请求耗时:用 Graph 展示不同百分位的耗时(P99、P95等)。
  • 返回状态码:使用 Bar gaugeStat 面板显示不同状态码的请求数量分布。

通过这些查询和面板模板,可以在Grafana中直观地看到HTTP接口的实时性能数据。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹏linux

感谢老板,老板大气

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值