首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要什么配置才能使带弹簧引导的千分尺输出jvm_info{}量具?

需要什么配置才能使带弹簧引导的千分尺输出jvm_info{}量具?
EN

Stack Overflow用户
提问于 2019-03-29 02:44:17
回答 2查看 420关注 0票数 3

我有许多非spring-boot服务,它们使用io.prometheus simpleclient_hotspot自动生成JVM指标。

我正在尝试获得这些指标和我的spring-boot服务生成的JVM指标的奇偶性,这些指标使用的是测微仪的默认设置。

是否有一些额外的配置,我需要测微计,以便它生成指标,如:

代码语言:javascript
运行
复制
# 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中将特别有用。

EN

回答 2

Stack Overflow用户

发布于 2019-05-21 09:24:16

我建议您查看在微米核心库中找到的NamingConvention。有几个使用它将名称转换为不同监控系统的示例(查找实现NamingConvention的类)。例如,如果您使用的是普罗米修斯(看起来可能是这样),您可以将PrometheusNamingConvention作为一个示例。看起来您会对实现/覆盖public String name(String name, Meter.Type type, @Nullable String baseUnit)方法感兴趣。

票数 0
EN

Stack Overflow用户

发布于 2020-10-22 06:40:36

回答我自己的问题

  1. 我最终为JVM实现了这个版本信息:

代码语言:javascript
运行
复制
    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);
        }
    } 

  1. 我最终为操作系统版本信息:

实现了这一点

代码语言:javascript
运行
复制
    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库的混合来跟踪服务中的这些详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55404811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档