【问题标题】:Is it possible to expose Dropwizard metrics in logs是否可以在日志中公开 Dropwizard 指标
【发布时间】:2019-03-08 01:25:13
【问题描述】:

我正在尝试在应用程序中设置日志记录方案,以在 Dropwizard 中显示线程计数。当我转到 8081 上的管理端口时,我可以看到 Dropwizard 为应用程序提供的指标。例如,在 Gauges 下,您可以看到 jvm.memory.total.used 以及值。我想设置 slf4j 日志以在我的一些请求中显示这一点。因此,例如,我的 GET 请求可能如下所示:

@GET
@TIME
@Produces(MediaType.Application_JSON)
public List<String> getNames {
    List<String> nameList = dao.getList();
    log.info("Memory used: {}", /*the value for jvm.memory.total.used*/)
    return nameList;
}

但是,我一直无法以这种方式公开指标。这是否可能,如果可以,是否可行?

更新:

我设法在 GET 服务中公开了胎面状态的指标,所以现在我正在尝试尝试将结果放入日志语句中。到目前为止,这是我的代码:

@Path("metrics")
@Produces(MediaType.APPLICATION_JSON)
public class GetStuff {
    private static final Logger log = LoggerFactory.getLogger(GetStuff.class);

    @GET
    @Path("/metrics")
    public MetricRegistry provideMetrics() {
        MetricRegistry metrics = new MetricRegistry();
        metrics.register("jvm.threads", new ThreadStatesGaugeSet());

        log.info("JVM Thread Count: {}", metrics.getGauges().get("jvm.threads.count"));
        return metrics;
    }
}

我已经确认这会返回指标,所以现在我正试图让日志语句正常工作,并打印出该量表的值。我现在的主要问题是日志似乎打印出 getGauges 映射中值的地址,而不是与键关联的值。更具体地说,我得到这样的值:

JVM Thread Count: com.codahale.metrics.jvm.ThreadStatesGaugeSet$2@129e489

有谁知道我该如何解决这个问题,以便获得实际价值?

编辑:我打开了另一个与此相关的问题,here

【问题讨论】:

    标签: java mapping dropwizard metrics


    【解决方案1】:

    我设法让这个工作。大部分过程都记录在我对问题的编辑中,但这是最终代码:

    @Path("metrics")
    @Produces(MediaType.APPLICATION_JSON)
    public class GetStuff {
        private static final Logger log = LoggerFactory.getLogger(GetStuff.class);
    
        @GET
        @Path("/metrics")
        public MetricRegistry provideMetrics() {
            MetricRegistry metrics = new MetricRegistry();
            metrics.register("jvm.threads", new ThreadStatesGaugeSet());
    
            log.info("JVM Thread Count: {}", metrics.getGauges().get("jvm.threads.count").getValue);
            return metrics;
        }
    }
    

    我忘记使用 getValue() 来获取日志语句的值,这很好地解决了我从 getGauges 映射而不是实际值打印地址的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2011-10-23
      相关资源
      最近更新 更多