如何解决自定义指标使用千分尺DatadogRegistry发送的datadog未显示在Datadog指标摘要中
我想使用io.micrometer.datadog.DatadogMeterRegistry向Datadog发送自定义指标。下面是该方法的代码段,其中我向Datadog发送了指标。
@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的度量标准摘要下。我想念什么吗?
解决方法
MeterRegistry已经实现了如何发送自定义指标(发布到DataDog),请参见代码https://github.com/micrometer-metrics/micrometer/blob/master/implementations/micrometer-registry-datadog/src/main/java/io/micrometer/datadog/DatadogMeterRegistry.java#L133
似乎您正在尝试向每个指标添加通用标签。也许您不应该实现自己的DataDog注册表,而应使用提供的注册表来发送指标并通过config设置通用标签:
registry.config().commonTags(Arrays.asList(
Tag.of(MetricConstants.TENANT_MONIKER,tenant.getTenantMoniker()),Tag.of(MetricConstants.STACK_NAME,stackName)
));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。