我正在使用默认的 MicroMeter 活页夹,其中之一创建了 Gauage jvm.memory.used。问题在于它带有 2 个 availableTags:“area”和“id”。这实际上生成了我不感兴趣的 6 个仪表。
我能够做到这一点:
@Bean
public MeterRegistryCustomizer<MeterRegistry> metricsCustomizer() {
return registry -> {
registry.config().meterFilter(MeterFilter.ignoreTags("id"));
};
}
Run Code Online (Sandbox Code Playgroud)
但这将忽略带有此标签的所有仪表。
我怎么deny()只能jvm.memory.used用id标签?
谢谢!
编辑:
查看 globalRegistry:
Metrics.globalRegistry.getRegistries().iterator().next().meterMap
每次Meter的jvm.memory.used是以下结构:
"MeterId{name='jvm.memory.used', tags=[tag(area=nonheap),tag(id=Metaspace)]}"
所以我们不能只是过滤 getName().equals("jvm.memory.used") && getTag("id") != null
java spring-boot spring-boot-actuator micrometer spring-micrometer
尝试使用具有执行器依赖项的简单 Spring Boot 应用程序,但无法访问http://localhost:8080/actuator/beans
\n\n我可以使用以下输出访问http://localhost:8080/actuator :
\n\n{"_links":{"self":{"href":"http://localhost:8080/actuator","templated":false},"health-component-instance":{"href":"http://localhost:8080/actuator/health/{component}/{instance}","templated":true},"health-component":{"href":"http://localhost:8080/actuator/health/{component}","templated":true},"health":{"href":"http://localhost:8080/actuator/health","templated":false},"info":{"href":"http://localhost:8080/actuator/info","templated":false}}}\nRun Code Online (Sandbox Code Playgroud)\n\n另外,主要无法访问此处列出的以下网址
\n\n/auditevents \xe2\x80\x93 lists security audit-related events such as user login/logout. Also, we can filter by principal or type among others fields\n/beans \xe2\x80\x93 returns all available beans in our BeanFactory. Unlike \n/auditevents, it doesn\xe2\x80\x99t support filtering\n/conditions \xe2\x80\x93 formerly known as /autoconfig, builds a report of conditions around auto-configuration\n/configprops \xe2\x80\x93 allows us to fetch all @ConfigurationProperties beans\n/env \xe2\x80\x93 returns the current environment properties. Additionally, we can retrieve …Run Code Online (Sandbox Code Playgroud) java spring spring-boot spring-boot-actuator spring-micrometer
我们正在使用 Spring Boot 2.1.4 和micrometer-registry-prometheus依赖项来捕获指标。
我们有一个 Spring Boot 服务使用 RestTemplate 调用另一个服务的情况。此调用生成的指标包含 URI 中的实际值,而不是模板化值。
例如,在/actuator/prometheus端点中,我看到如下条目:
http_client_requests_seconds_count{clientName="someClient",method="GET",status="200",uri="/person/lookup?firstName=Tony&lastName=Soprano",} 1.0
根据文档,我希望看到变量名称而不是值,如下所示:
http_client_requests_seconds_count{clientName="someClient",method="GET",status="200",uri="/person/lookup?firstName={firstName}&lastName={lastName}",} 1.0
有没有办法获取默认http.client.requests指标值以使用 URI 标记的模板化值?
https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-metrics-http-clients 上的 Spring 文档说明了关于 uri 标签的内容:
如果可能,在变量替换之前请求的 URI 模板(例如,/api/person/{id})
我们如何使变量替换成为可能?
spring resttemplate spring-boot spring-boot-actuator spring-micrometer
这篇博文“Micrometer:Spring Boot 2 的新应用程序指标收集器”提到了“维度的重要性”。
但是,它没有包含如何在 Spring Boot 应用程序中设置关联标签的足够示例。
现在,我正在使用 Spring Boot 2 的 Micrometer 接口来提供 Prometheus 就绪的输出,而无需进行任何基于 Java 的配置。例如,设置“主机”标签是否需要我编写一些代码?那会是什么样子?
这是我的整个配置:
management:
metrics:
export:
prometheus:
enabled: true
endpoints:
web:
exposure:
include: info,health,metrics,prometheus
Run Code Online (Sandbox Code Playgroud) 我想通过千分尺将石墨指标添加到我的 Spring Boot 应用程序中。
我将其添加到我的 pom 中
<!-- https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-graphite -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-graphite</artifactId>
<version>1.5.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
并将注册表定义为:
@Configuration
public class MircoMeterConfig {
@Bean
MeterRegistryCustomizer meterRegistryCustomizer(MeterRegistry meterRegistry) {
return registry -> {
meterRegistry.config().commonTags("application", "name");
};
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行该应用程序时,我收到此错误:
io.micrometer.core.instrument.config.validate.Validated
Run Code Online (Sandbox Code Playgroud)
这是完整的堆栈跟踪。
2020-10-12 20:37:05.332 INFO 34747 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1243 ms
2020-10-12 20:37:05.343 ERROR 34747 --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating …Run Code Online (Sandbox Code Playgroud) graphite spring-boot spring-boot-actuator micrometer spring-micrometer
我想尝试在 Spring Boot 3 Kafka 生产者和消费者之间进行跟踪。我按照https://spring.io/blog/2022/10/12/observability-with-spring-boot-3中的示例进行操作 ,当我在生产者和消费者之间使用resttemplate进行API调用时,会自动添加traceID,但是卡夫卡消息不携带它们。我使用了以下依赖项
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-otel</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
卡夫卡生产者配置
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> configProps = new HashMap<>();
//typical properties
return new DefaultKafkaProducerFactory<>(configProps);
}
@Bean
public KafkaTemplate<String, String> kafkaTemplate(ProducerFactory<String, String> producerFactory) {
KafkaTemplate<String, String> stringStringKafkaTemplate = new KafkaTemplate<>(producerFactory);
stringStringKafkaTemplate.setObservationEnabled(true);//trying out with
return stringStringKafkaTemplate;
}
Run Code Online (Sandbox Code Playgroud)
发送消息
kafkaTemplate.send("topic-1" , "message");
Run Code Online (Sandbox Code Playgroud)
在消费者方面:
@KafkaListener(topics = "topic-1", groupId = "group1")
public void listenGroupFoo(String message) {
logger.info("Received Message in …Run Code Online (Sandbox Code Playgroud) spring-boot spring-kafka spring-micrometer micrometer-tracing
在 Dropwizard 中有类似meter的东西:
httpsmark() ://metrics.dropwizard.io/3.1.0/getting-started/#meters 它让我只需通过调用指标上的方法
来测量事件的发生率。
我怎样才能在千分尺中做到这一点?
我可以使用计时器,但我不想将Timer.Sample对象传递到需要调用stop()方法的任何地方。
与 Dropwizard 相比,Micrometer 中另一个缺少的东西是可以包含文本消息的度量,如 Dropwizard 中的量规。
我正在尝试为我的Spring Boot(2.1.0.RELEASE)应用程序收集指标。具体来说,我想知道
执行器/actuator/metrics端点提供了很多信息,但是我不确定这些信息是否对我的情况有用。另外,有人可以告诉@Timed(或任何其他现成的注释)是否可用于实现这些统计信息,或者我必须在每个控制器方法中使用类似以下的内容:
Timer timer = new SimpleMeterRegistry().timer("timer.name");
timer.record(() -> {
// all logic here
});
Run Code Online (Sandbox Code Playgroud)
我尝试在控制器方法上使用@Timed,但它没有向/actuator/metrics端点添加任何新响应。
我已经通过注入和增加计数在我的服务中实现了 Micrometer Prometheus 计数器,MeterRegistry如下所示,并且我还编写了一个测试用例,但是当我运行测试用例时,我得到:
“java.lang.NullPointerException:无法调用“io.micrometer.core.instrument.MeterRegistry.counter(String, String[])”,因为“this.meterRegistry”为空”。
服务文件:
@Autowired
private MeterRegistry meterRegistry;
public void counterIncrement() {
meterRegistry.counter("test_count").increment();
}
Run Code Online (Sandbox Code Playgroud)
测试用例文件:
@MockBean
private MeterRegistry registry;
@Test
void testCounter() {
// invoking counterIncrement();
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个 Micrometer 类,其中创建并递增计数器。如何为公共方法编写单元测试用例并避免向 Micrometer 注册或发送事件。
public class MicroMeter {
private static final MeterRegistry registry = Metrics.globalRegistry;
private Counter createCounter(final String meterName, Map<String, String> mp) {
List<Tag> tags = new ArrayList<>();
for (Map.Entry<String, String> entry : mp.entrySet()) {
tags.add(Tag.of(entry.getKey(), entry.getValue()));
}
return Counter
.builder(meterName)
.tags(tags)
.register(registry);
}
private void incrementCounter(Counter counter) {
counter.increment();
}
public static void createCounterAndIncrement(final String meterName, Map<String, String> mp){
MicroMeter microMeter = new MicroMeter();
Counter counter = microMeter.createCounter(meterName, dimensions);
microMeter.incrementCounter(counter);
}
Run Code Online (Sandbox Code Playgroud)
}
spring-boot ×8
micrometer ×5
java ×4
spring ×3
dropwizard ×1
graphite ×1
junit ×1
prometheus ×1
resttemplate ×1
spring-kafka ×1