【发布时间】:2021-02-22 14:03:27
【问题描述】:
我想使用 io.micrometer.datadog.DatadogMeterRegistry 将自定义指标发送到 datadog。下面是我向 Datadog 发送指标的方法的代码 sn-p。
@Override
public void emitMetrices(Map<String, String> dataPoints) {
try {
logger.info("inside emitMetrices from monitoring service with enableCustomMetrics: {}",
enableCustomMetrics);
if (!isEnabled()) {
logger.warn("Metrics are diabled");
return;
}
// user supplied metrics
Set<Tag> tags = new LinkedHashSet<Tag>();
Set<Entry<String, String>> dataPointEntries = dataPoints.entrySet();
for (Entry<String, String> entry : dataPointEntries) {
String key = entry.getKey() == null ? MetricConstants.UNKNOWN_TEXT : entry.getKey();
String value = entry.getValue() == null ? MetricConstants.UNKNOWN_TEXT : entry.getValue();
tags.add(new ImmutableTag(key, value));
}
String tenantMoniker = MetricConstants.UNKNOWN_TEXT;
String stackName = MetricConstants.UNKNOWN_TEXT;
TenantDescriptor tenant = TenantContextHolder.get();
if (tenant != null) {
tenantMoniker = tenant.getTenantMoniker();
stackName = tenant.getTierName();
} else {
logger.warn("Tenant is not available");
}
Tag tenantTag = new ImmutableTag(MetricConstants.TENANT_MONIKER, tenantMoniker);
Tag stackNameTag = new ImmutableTag(MetricConstants.STACK_NAME, stackName);
Tag serviceNameTag = new ImmutableTag(MetricConstants.SERVICE_NAME, serviceName);
tags.add(tenantTag);
tags.add(stackNameTag);
tags.add(serviceNameTag);
logger.info("sending metric to datadog");
Counter counter = meterRegistry.counter(METRIC_NAME, tags);
counter.increment();
logger.info("metric sent successfully: {}", METRIC_NAME);
} catch (Exception e) {
logger.error("Error publishing metrics", e);
}
}
我能够看到日志“已成功发送指标”且没有错误,但此自定义指标未显示在 Datadog UI 中的指标摘要下。我错过了什么吗?
【问题讨论】:
-
你解决了吗?我也有同样的问题。 Micrometer 声称指标已成功发送,但我在 DataDog 中看不到它们。
-
抱歉回复晚了。我正在使用计量过滤器,当指标名称与模式不匹配时,它只是拒绝发送指标。我给出了与模式不匹配的不同指标名称。 registry.config().meterFilter( MeterFilter.denyUnless(id -> PatternMatchUtils.simpleMatch("metric_pattern", id.getName())));
标签: java spring-boot datadog micrometer