使用Prometheus监控API

本文介绍了一种使用Python和Prometheus_Client库构建的exporter,用于监控后端API状态及响应时间的方法。通过集成Prometheus并配置告警,实现对后端服务健康状况的实时监测。
该文章已生成可运行项目,

[可以使用新的方案: 拨测API接口+监控方案_一直学下去的博客-优快云博客]

写在最前面

  我心里也打鼓,是不是应该把这个文章写出来,因为这个项目里面的代码不能拿来就用,需要做修改(其实后端API监控本来就和业务相关,应该没有一个成品可以做到对每一个业务的API都能监控).其次文章里面涉及的知识点比较多,Prometheus,Prometheus-Operator,K8S,Python ,如果你已经具备这些基础,也愿意花时间来读这篇文章,请继续。如果按照步骤做了有问题,可以留言,我会回复的。

简介:

目前公司有一个项目,使用前后端分离。前端采样VUE,后端使用Java Spring全家桶,后端的接口为Restful API.为了能第一时间发现后端服务的故障和检测后端API的响应时间,自己使用Python+Prometheus_Client(python sdk) 写了一个exporter,然后对接prometheus,并配置告警。后端有故障的时候,可以第一时间发现,而不是等用户有感觉来才发现。 

后端项目的接口认证采用在header中附加token的形式,用户第一次登录的时候会返回token。

PS: 前端项目运行在nginx容器中,已经使用blackbox的http模块监控

实施步骤:

1. 将代码克隆到本地,或者使用pycharm导入

git clone https://gitee.com/kevinliu_CQ/api-monitoring.git

2. 修改代码中的配置

   a. 修改config_dir 下面的app.yaml文件。里面的域名和接口地址都需要修改,以我的项目为例,请查看描述信息

config:
     testset: 'APP API monitoring'  #描述性信息,代码中未使用
     timeout: 15 #调用API的超时时间
     scrape_interval: 15 #检测API的时间间隔,单位为秒
     base_url: 'https://app.×××.com/app' #API接口的URL,我的项目是微服务,这个app是微服务的url前缀
token:
     base_url: 'https://app.××××.com/app' #获取token的URL地址
     url: '/login/pwdLogin' #获取token的接口地址
     method: "POST" #获取接口的HTTP方法
     body: '' #获取接口时在post请求的payload内容
     params: {"mobile": "17320491234","pwd": "your_password"} #这个是在请求的URL中
本文章已经生成可运行项目
Prometheus是一款开源的监控解决方案,它提供了一套灵活的API来查询和获取监控指标数据。要监控API的响应时间,我们可以使用Prometheus提供的指标类型和查询语言。 首先,我们需要定义一个新的指标来表示API的响应时间。这个指标可以是一个Histogram类型,用于记录请求的响应时间分布;也可以是一个Summary类型,用于记录请求的响应时间的总和、计数和求和。 接下来,我们在应用程序中的接口中添加一个记录响应时间的逻辑。当请求到达时,我们可以在处理请求的代码块中计算响应时间,并将其记录到Prometheus指标中。 然后,我们可以使用PromQL(Prometheus查询语言)来查询和分析这个指标。可以使用range vector selectors来选择特定时间范围内的数据,然后计算最大、最小、平均响应时间或者进行其他数学操作。 举个例子,如果我们想要获取过去5分钟内的平均响应时间,我们可以使用以下PromQL查询: ``` avg_over_time(api_response_time[5m]) ``` 最后,我们可以将监控数据可视化,通过Grafana等工具将查询结果进行图表展示,以便更直观地监控API的响应时间。我们可以设置阈值警报,当响应时间超过预设的阈值时,可以及时发出警报以便进行处理。 通过以上步骤,我们可以使用Prometheus监控API的响应时间,并根据需要进行分析和可视化,从而快速发现问题并做出相应的优化和改进。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值