微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自定义指标使用千分尺DatadogRegistry发送的datadog未显示在Datadog指标摘要中

如何解决自定义指标使用千分尺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 举报,一经查实,本站将立刻删除。