监控插件(二)prometheus(2)API Counter&&Gauge

综述

一、Counter

错误写法

Counter.builder("api_request_total")
                    .description("Total number of API requests")
                    .tag("uri", request.getRequestURI())
                    .tag("method", request.getMethod())
                    .tag("status", String.valueOf(responseWrapper.getStatus()))
                    .register(meterRegistry)
                    .increment();

jakarta.servlet.ServletException: Request processing failed: java.lang.IllegalArgumentException: Failed to register Collector of type MicrometerCollector: repository_method_list_elements_sum is already in use by another Collector of type MicrometerCollector
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1022) ~[spring-webmvc-6.1.5.jar:6.1.5]
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.1.5.jar:6.1.5]
 

不应该重复注册,正确写法:

 Counter requestCounter = meterRegistry.find("api_request_total")
                    .tag("uri", request.getRequestURI())
                    .tag("method", request.getMethod())
                    .tag("status", String.valueOf(responseWrapper.getStatus()))
                    .counter();
            if (requestCounter == null) {
                requestCounter = Counter.builder("api_request_total")
                        .description("Total number of API requests")
                        .tag("uri", request.getRequestURI())
                        .tag("method", request.getMethod())
                        .tag("status", String.valueOf(responseWrapper.getStatus()))
                        .register(meterRegistry);
            }
            requestCounter.increment();

二、Gauge

Prometheus 是一个开源的监控系统,它专注于收集并存储基于时间序列的数据,常用于监控服务器、应用程序和基础设施的性能指标。Prometheus 提供了强大的查询语言 PromQL,使得用户能够灵活地查询和可视化监控数据。 在 Prometheus 中,监控项(也称为度量或 metrics)主要包括以下几个关键元素: 1. **指标(Metrics)**: 这是 Promethues 中最基本的监控单元,通常表示一个系统的某种度量,如 CPU 使用率、内存占用、网络流量等。每个指标都有一个唯一的名称(metric name),并附带标签(label)来提供更详细的上下文信息。 2. **标签示例(Label Examples)**: 每个指标都包含一组预定义的标签,这些标签提供了关于指标值来源或性质的信息,比如服务实例名称、主机名、时间戳等。 3. **度量类型(Value Types)**: 包括 gauge(随时间变化的值)、counter(累计计数)、summary(统计信息,如均值、95%分位数)、histogram(时间间隔内的计数值分布)等。 4. **采集器(Collectors)**: Prometheus 通过各种插件(collectors)来获取指标数据,这些插件可以是内建的(如 Node Exporter 对操作系统的监控),也可以是自定义的(用户编写的脚本或第三方服务提供的 API)。 5. **查询和告警(Querying and Alerting)**: 用户可以使用 PromQL 来查询指标历史数据,设置阈值以触发告警,当指标超出预设范围时,系统会发送通知或执行其他自动化操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

w_t_y_y

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值