我有许多非spring-boot服务,它们使用io.prometheus
simpleclient_hotspot
自动生成JVM指标。
我正在尝试获得这些指标和我的spring-boot服务生成的JVM指标的奇偶性,这些指标使用的是测微仪的默认设置。
是否有一些额外的配置,我需要测微计,以便它生成指标,如:
# TYPE jvm_info gauge
jvm_info{version="
...
jvm_memory_bytes_used
jvm_memory_pool_bytes_max
etc...
我喜欢micrometer开箱即用的logging:jvm_memory_used_bytes
,它与simpleclient_hotspot中相同指标的名称不匹配:(
如果可能的话,我希望实现一致性,而jvm_info
在微米/spring-boot中将特别有用。
发布于 2019-05-21 09:24:16
我建议您查看在微米核心库中找到的NamingConvention
。有几个使用它将名称转换为不同监控系统的示例(查找实现NamingConvention
的类)。例如,如果您使用的是普罗米修斯(看起来可能是这样),您可以将PrometheusNamingConvention
作为一个示例。看起来您会对实现/覆盖public String name(String name, Meter.Type type, @Nullable String baseUnit)
方法感兴趣。
发布于 2020-10-22 06:40:36
回答我自己的问题
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* Migrated From simpleclient_hotspot/src/main/java/io/prometheus/client/hotspot/VersionInfoExports.java
* Because its not included in Micrometer.
*/
@Component
public class JvmVersionInfoExports {
private static final Logger LOGGER = LoggerFactory.getLogger(JvmVersionInfoExports.class);
public JvmVersionInfoExports(MeterRegistry meterRegistry) {
LOGGER.info("Adding JVM Metrics");
Gauge.builder("jvm_info", () -> 1L)
.description("JVM version info")
.tag("version", System.getProperty("java.runtime.version", "unknown"))
.tag("vendor", System.getProperty("java.vm.vendor", "unknown"))
.tag("runtime", System.getProperty("java.runtime.name", "unknown"))
.register(meterRegistry);
}
}
实现了这一点
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class OsVersionInfoExports {
private static final Logger LOGGER = LoggerFactory.getLogger(OsVersionInfoExports.class);
public OsVersionInfoExports(MeterRegistry meterRegistry) {
LOGGER.info("Adding OS Metrics");
Gauge.builder("os_info", () -> 1L)
.description("OS version info")
.tag("version", System.getProperty("os.version", "unknown"))
.tag("arch", System.getProperty("os.arch", "unknown"))
.tag("name", System.getProperty("os.name", "unknown"))
.register(meterRegistry);
}
}
尽管这些工具滥用了千分尺,但它们为我提供了兼容性,我需要使用微米和普罗米修斯HotSpot库的混合来跟踪服务中的这些详细信息。
https://stackoverflow.com/questions/55404811
复制相似问题