简体   繁体   English

无法在 Datadog Metrics Explorer 中找到从千分尺库实现的计数器

[英]Cannot locate counters implemented from micrometer library in Datadog Metrics Explorer

I've tried creating a couple metrics called heartBeatExecutionCounter and heartBeatSuccessCounter using the micrometer integration with Datadog (see https://micrometer.io/docs/registry/datadog ).我尝试使用千分尺与 Datadog 的集成来创建称为heartBeatExecutionCounterheartBeatSuccessCounter的几个指标(请参阅https://micrometer.io/docs/registry/datadog )。

However, I can't find the counters in the metrics explorer I created when searching for ep_heartbeat_job_success_count or ep_heartbeat_job_execution_count as they're defined in their respective builder s.但是,我在搜索ep_heartbeat_job_success_countep_heartbeat_job_execution_count时创建的指标资源管理器中找不到计数器,因为它们是在各自的builder中定义的。 Any idea where I went wrong in my implementation?知道我在实施过程中哪里出错了吗?

EDIT编辑

I checked my logs and do see the that I am failing to send metrics to datadog我检查了我的日志,确实看到我未能将指标发送到 datadog

2022-12-17 23:40:00,006  WARN [datadog-metrics-publisher] (DatadogMeterRegistry.java:149) - failed to send metrics to datadog
java.lang.NoClassDefFoundError: io/micrometer/common/util/StringUtils
    at io.micrometer.datadog.DatadogNamingConvention.name(DatadogNamingConvention.java:62) ~[micrometer-registry-datadog-1.10.2.jar:1.10.2]
    at io.micrometer.core.instrument.Meter$Id.getConventionName(Meter.java:319) ~[micrometer-core-1.8.4.jar:1.8.4]
    at io.micrometer.core.instrument.MeterRegistry.getConventionName(MeterRegistry.java:253) ~[micrometer-core-1.8.4.jar:1.8.4]
    at io.micrometer.datadog.DatadogMeterRegistry.writeMetric(DatadogMeterRegistry.java:254) ~[micrometer-registry-datadog-1.10.2.jar:1.10.2]
    at io.micrometer.datadog.DatadogMeterRegistry.lambda$writeMeter$12(DatadogMeterRegistry.java:212) ~[micrometer-registry-datadog-1.10.2.jar:1.10.2]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
    at java.util.Collections$2.tryAdvance(Collections.java:4747) ~[?:?]
    at java.util.Collections$2.forEachRemaining(Collections.java:4755) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) ~[?:?]
    at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274) ~[?:?]
    at java.util.ArrayList$SubList$2.forEachRemaining(ArrayList.java:1511) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
    at io.micrometer.datadog.DatadogMeterRegistry.publish(DatadogMeterRegistry.java:138) ~[micrometer-registry-datadog-1.10.2.jar:1.10.2]
    at io.micrometer.core.instrument.push.PushMeterRegistry.publishSafely(PushMeterRegistry.java:52) ~[micrometer-core-1.8.4.jar:1.8.4]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
    at java.lang.Thread.run(Thread.java:834) ~[?:?]

Implementation执行

private MeterRegistry registry = DatadogUtils.getRegistry();
 
// Create a Counter to track the number of successful executions
private Counter heartBeatSuccessCounter = Counter.builder("ep_heartbeat_job_success_count")
        .description("Number of successful executions of the EpHeartBeatJob")
        .register(registry);

// Create a Counter to track the number of executions
private Counter heartBeatExecutionCounter = Counter.builder("ep_heartbeat_job_execution_count")
        .description("Number of executions of the EpHeartBeatJob")
        .register(registry);

And then I increment them here:然后我在这里递增它们:

    @Override
    public void execute(JobExecutionContext context) {
        // Increment the counter to track the number of executions
        heartBeatExecutionCounter.increment();
        try {
            log.info("Job ** {} ** starting @ {}", context.getJobDetail().getKey().getName(), context.getFireTime());
            if (isLocalEnv()) {
                epHeartBeatService.startTask();
            } else {
                outageMillisPerDay += epHighAvailablityService.startTask();
                log.info("Accumulated outage = {} milliseconds", outageMillisPerDay);

                calendar.setTime(context.getFireTime());
                if (outageMillisPerDay > OUTAGE_MILLIS_ALLOWED_PER_WEEK) {
                    //&& calendar.get(Calendar.DAY_OF_WEEK)==0) {
                    throw new Exception("Actual outage exceeded allowable outage");
                }
            }

            // Increment the counter to track the number of successful executions
            heartBeatSuccessCounter.increment();

            log.info("Job ** {} ** completed.  Next job scheduled @ {}", context.getJobDetail().getKey().getName(), context.getNextFireTime());
            log.info("====================================================");
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }
}

I have a Datadog Utils class that is supposed to provide the registry我有一个应该提供注册表的 Datadog Utils 类

import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.datadog.DatadogConfig;
import io.micrometer.datadog.DatadogMeterRegistry;

public class DatadogUtils {

    private static DatadogConfig config = new DatadogConfig() {
        @Override
        public String apiKey() {
            return "my_key";
        }

        @Override
        public String get(String key) {return null;};
    };

    private static final MeterRegistry registry = new DatadogMeterRegistry(config, Clock.SYSTEM);

    public static MeterRegistry getRegistry() {
        return registry;
    }
}

build.gradle构建.gradle

dependencies {
    ...
    implementation 'io.micrometer:micrometer-core:latest.release'
}

Looks like I was missing the micrometer-core library.看起来我错过了micrometer-core库。

dependencies {
    ...
    implementation 'io.micrometer:micrometer-core:latest.release'
    implementation 'io.micrometer:micrometer-core:latest.release'
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM