当前位置: 首页 > 知识库问答 >
问题:

使用千分尺发送数据的自定义指标Datadog注册表未显示在Datadog指标摘要中

韩瀚
2023-03-14

我想发送自定义指标使用io.micrometer.datadog.DatadogMeter注册表到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);
        }

    }

我可以看到日志“metric sent successfully”,没有错误,但这个自定义指标没有显示在Datadog UI的metrics summary下。我错过什么了吗?

共有1个答案

戚俊健
2023-03-14

MeterRegistry已经实现了如何发送自定义度量(发布到DataDog)参见代码https://github.com/micrometer-metrics/micrometer/blob/master/implementations/micrometer-registry-datadog/src/main/java/io/micrometer/datadog/DatadogMeterRegistry.java#L133

看起来您正在尝试向每个指标添加公共标签。也许您不应该实现自己的DataDog注册表,而是使用提供的注册表通过配置发送指标并设置公共标签:

registry.config().commonTags(Arrays.asList(
  Tag.of(MetricConstants.TENANT_MONIKER, tenant.getTenantMoniker()), 
  Tag.of(MetricConstants.STACK_NAME, stackName)
));
 类似资料:
  • 我正在使用docker运行datadog代理 我想使用dogstatsd发送自定义指标。当我运行 我可以在wireshark中看到,udp数据包成功地从源到目标,但这个指标没有提交给datadog。我缺少一些配置吗?

  • 我有一个datadog计数度量,我想创建一个新的度量,从中显示度量上两个代理点之间的差异,因此我可以看到点之间的变化。 有没有办法使用datadog仪表板从另一个指标创建一个指标。

  • 考虑到以下情况: lambda通过SQS接收事件 现在我们监控一个自定义的错误计数指标,如。这为我们提供了错误发生次数的确切数字-独立于特定实体:如果一个实体不能像100次那样被处理,那么度量值将是。 不过,我想要的是一个基于UUID的独特度量。例子: id为123的实体失败10次 id为456的实体成功 id为789的实体失败20次 然后我想要一个值为的度量,因为流程只对两个实体失败(而不是像现

  • 我正在利用dogstatsd方法,使用千分尺将指标发送给datadog。我获得了正常的指标,如计数器和计量器,但我无法生成事件。有办法生成datadog事件吗?

  • 我正在尝试集成statsd datadog。 我已经用-e dd_DOGSTATSD_NON_LOCAL_TRAFFIC=“true”启动了dd代理容器,apiKey也正确(容器日志证实了这一点) 我正在使用官方代码示例测试集成 在datadog仪表板上的metrics explorer中,我看到数据为 问题 但无法在datadog仪表板上的任何地方找到我推送的确切指标,如何通过statsd查看我

  • 所以我对度量和测微计是新手。我遵循了本教程,在本教程中,我们设置了一些基本的仪表,如计数器和仪表,并公开了这些指标。当我点击endpoint时,我能够看到指标。我可以在那里看到我的自定义仪表。 所以现在我尝试将指标公开给datadog。我导入了以下依赖项: 并且在我的应用程序属性文件上也有这个: 我知道我没有包括任何数据的url或任何类似的内容,但是我的印象是,我可以通过访问像< code>/ac