[英]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 的集成来创建称为
heartBeatExecutionCounter
和heartBeatSuccessCounter
的几个指标(请参阅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_count
或ep_heartbeat_job_execution_count
时创建的指标资源管理器中找不到计数器,因为它们是在各自的builder
中定义的。 Any idea where I went wrong in my implementation?知道我在实施过程中哪里出错了吗?
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) ~[?:?]
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;
}
}
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.