Prometheus实现API监控实施方法

一、 概述

前言

在建设接口管理平台,需要对所有接口的连通性进行检测,监测平台接口情况,进行统计和预警,因接口数量众多,且后续可能也会进行可视化展示和分析,决定使用prometheus监控体系进行监测。前后调研和实验最终决定方案如下,进行记录和分享

架构示意图

在这里插入图片描述

blackbox_exporter模块

blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的监控数据采集,可用于检测接口连通性

Consul 实现target动态化

因 Prometheus添加 target默认使用文件方式进行配置,只适用于固定target方式,针对需要动态新增检测目标的情况,官方提供了多种目标发现的支持,考虑到可以使用API进行灵活添加数据,选用Consul作为服务发现中间件。

二、安装和配置

安装Consul

下载地址:https://www.consul.io/downloads

下载后进行解压
启动

./consul agent -dev -ui -node=consul-dev -client=192.168.119.128 -advertise 192.168.119.128

随后访问 http://ip:8500/ 可以进入web管理界面

通过API方式管理服务

我新增一个 http://10.10.3.27:81服务用于测试

curl -X PUT -d 
'{
"id":"testnode",
"name":"test",
"address":"10.10.3.27",
"port":81,"tags":["prometheus-target"],
"checks":[{"http":"10.10.3.27:81","interval":"15s"}]
}'
http://192.168.119.128:8500/v1/agent/service/register

删除服务的请求为

curl -X PUT http://192.168.119.128:8500/v1/agent/service/deregister/{id}

也可在Consul web看到服务情况

在这里插入图片描述

安装blackbox_exporter

下载地址: https://prometheus.io/download/
下载后解压,进入文件夹后 直接运行 ./blackbox_exporter
默认监听端口为9115

编辑prometheus.yml 加入blackbox_exporter配置

  - job_name: 'blackbox_http_2xx' # 配置get请求检测
    scrape_interval: 30s
    metrics_path: /probe
    params:
      module: [http_2xx]
    consul_sd_configs:
    #consul 地址
      - server: '192.168.119.128:8500'
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 192.168.119.128:9115

注意:172.19.155.133:9115 为blackbox_exporter的服务地址

重启prometheus

访问http://ip:9990/api/v1/query?query=probe_success
返回如下:

{
    "status": "success",
    "data": {
        "resultType": "vector",
        "result": [
            {
                "metric": {
                    "__name__": "probe_success",
                    "instance": "10.10.3.27:81",
                    "job": "blackbox_http_2xx"
                },
                "value": [
                    1650266997.219,
                    "1"
                ]
            },
            {
                "metric": {
                    "__name__": "probe_success",
                    "instance": "192.168.119.128:8300",
                    "job": "blackbox_http_2xx"
                },
                "value": [
                    1650266997.219,
                    "0"
                ]
            }
        ]
    }
}

得到 instance 10.10.3.27:81的连接状态 为 “1”,处于活动状态

可以安装grafana后进行数据可视化监控

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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的响应时间,并根据需要进行分析和可视化,从而快速发现问题并做出相应的优化和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值