我正在尝试将时间度量添加到我的spring-boot web应用程序中。现在,应用程序使用千分尺、普罗米修斯和Spring引导执行器。
我可以通过http://localhost:8080/acturet/prometheus连接到我的应用程序,并查看默认度量的列表,如:
# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the young generation memory pool after one GC to before the next
# TYPE jvm_gc_memory_allocated_bytes_total counter
jvm_gc_memory_allocated_bytes_total{application="my app",} 0.0
# HELP jvm_classes_loaded_classes The number of classes that are currently loaded in the Java virtual machine
# TYPE jvm_classes_loaded_classes gauge
jvm_classes_loaded_classes{application="my app",} 7581.0
...
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import io.micrometer.core.annotation.Timed;
@RestController
@Timed
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@GetMapping("/greeting")
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
doWork();
return buildResponse(name);
}
private void doWork() {
try {
Thread.sleep((long) (1000 * Math.random()));
} catch (InterruptedException e) {
}
}
private Greeting buildResponse(String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@Autowired
MeterRegistry meterRegistry;
@GetMapping("/greeting")
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
doWork();
return buildResponse(name);
}
private void doWork() {
Timer timer = meterRegistry.timer(this.getClass().getSimpleName() + ".doWork");
timer.record(() -> {
try {
Thread.sleep((long) (1000 * Math.random()));
} catch (InterruptedException e) {
}
});
}
private Greeting buildResponse(String name) {
AtomicReference<Greeting> response = new AtomicReference<>();
Timer timer = meterRegistry.timer(this.getClass().getSimpleName() + ".buildResponse");
timer.record(() -> {
response.set(new Greeting(counter.incrementAndGet(), String.format(template, name)));
});
return response.get();
}
}
但至少这让我得到了我想要的结果:
# HELP GreetingController_buildResponse_seconds
# TYPE GreetingController_buildResponse_seconds summary
GreetingController_buildResponse_seconds_count{application="my app",} 10.0
GreetingController_buildResponse_seconds_sum{application="my app",} 0.001531409
# HELP GreetingController_buildResponse_seconds_max
# TYPE GreetingController_buildResponse_seconds_max gauge
GreetingController_buildResponse_seconds_max{application="my app",} 2.52253E-4
# HELP GreetingController_doWork_seconds_max
# TYPE GreetingController_doWork_seconds_max gauge
GreetingController_doWork_seconds_max{application="my app",} 0.941169892
# HELP GreetingController_doWork_seconds
# TYPE GreetingController_doWork_seconds summary
GreetingController_doWork_seconds_count{application="my app",} 10.0
GreetingController_doWork_seconds_sum{application="my app",} 4.767700907
有没有更干净的方法?
将TimedAspect注册为configuration类中的bean:
@Bean
public TimedAspect timedAspect(MeterRegistry meterRegistry) {
return new TimedAspect(meterRegistry);
}
我试图在Spring Boot 2.0.0 .版本中使用Micrometer.io生成普罗米修斯指标 当我试图将列表的大小公开为Gauge时,它一直显示NaN。在留档中,它说; 你有责任对你用量规测量的状态对象保持强烈的引用。 我已经尝试了一些不同的方法,但我不能解决这个问题。这是我的代码和一些试验。 有人能帮忙解决这个问题吗?任何帮助都将不胜感激。
我将我的GKE API服务器升级到1.6,并正在将节点升级到1.6,但遇到了一个障碍... 我有一个prometheus服务器(版本1.5.2),运行在一个由Kubernetes部署管理的pod中,其中两个节点运行版本1.5.4Kubelet,一个新节点运行版本1.6。 但普罗米修斯仍然得到401。 更新:就像乔丹所说的kubernetes认证问题。在这里看到新的、更集中的问题;https://s
我的各种docker容器导出prometheus度量,但是我们的prometheus安装只需要从一个endpoint提取所有度量。不幸的是,这是无法改变的。因此,我需要在一个点上聚合所有度量,从普罗米修斯安装可以刮取度量。 此外,如果这个程序或脚本能够提供关于如何处理由不同endpoint导出的相同度量的额外逻辑,那就太好了。例如,如果我只是将不同的度量站点连接在一起,Prometheus在解释度
我正在建立一个监控PoC以备将来的需要。PoC是在我的电脑上本地开发的。我使用普罗米修斯和格拉法纳来监视度量。我想统计一下收到的文件数量和处理文件所花费的时间。为此,我需要创建自定义度量。 我使用的是Python2.7.5。现在我已经把普罗米修斯和目标联系起来了。我收到度量标准,但不知道如何创建我想要的度量标准。 我希望收到的文件和“计数收到的文件数”度量。处理一个文件所花费的时间(即2s)和处理
关于整合齐普金和普罗米修斯的可能性的小问题。 目前,我们已经有了一个完全可用的Zipkin实例,以及它的web UI。Zipkin超级酷,一切都很好。 我们能够让所有微服务向Zipkin发送跟踪信息,并让Zipkin汇总这些信息。 我们还可以在UI中搜索痕迹等等,超级酷。 另一方面,我们也有一个非常成熟的经过实战检验的Prometheus Grafana,其中已经包含了容器级指标、应用程序级指标和