首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >千分尺与DynaTrace的集成

千分尺与DynaTrace的集成
EN

Stack Overflow用户
提问于 2019-12-06 00:34:48
回答 1查看 786关注 0票数 0

我有一个Spring Boot应用程序,它需要将指标导出到DynaTrace。我从Micrometer的网站上找到了一个很好的库(io.micrometer:micrometer-registry-dynatrace:latest.release),里面有设置这个库并开始使用它的说明。按照他们的指示操作后,我注意到Tomcat无法启动,我不确定原因。在我的build.gradle文件中,我导入了'io.micrometer:micrometer-registry-dynatrace:latest.release'.我已经完成了每个步骤,试图隔离问题,尽管它主要希望我提供DynaTrace配置项,但在这一点上,Tomcat无法启动。添加所有内容后,这是我从堆栈跟踪中得到的结果: org.springframework.boot.web.server.WebServerException:无法启动嵌入式Tomcat。对于为什么会发生这种情况,有什么想法吗?

代码语言:javascript
复制
management:
  endpoint:
    metrics:
      enabled: true
    prometheus:
      enabled: true
  endpoints:
    web:
      exposure:
        include: "info, health, metrics, prometheus, dynatrace"
  metrics:
    tags:
      application: ${spring.application.name}
      instance: ${HOSTNAME:defaultInstance}
    export:
      prometheus:
        enabled: true
      dynatrace:
        api-token: ${DYNATRACE_TOKEN:token}
        uri: ${DYNATRACE_URL:url} # using dev environment for now
        device-id: ${DYNATRACE_DEVICEID:device}
        enabled: true
        step: 5s
代码语言:javascript
复制
package package.name;

import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.lang.Nullable;
import io.micrometer.dynatrace.DynatraceConfig;
import io.micrometer.dynatrace.DynatraceMeterRegistry;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
@Data
public class DynaTrace {
  @Value("${management.metrics.export.dynatrace.api-token}")
  String MY_TOKEN;

  @Value("${management.metrics.export.dynatrace.uri}")
  String MY_DYNATRACE_URI;

  @Value("${management.metrics.export.dynatrace.device-id}")
  String MY_DEVICE_ID;

  DynatraceConfig dynatraceConfig = new DynatraceConfig() {
    @Override
    public String apiToken() {
      return MY_TOKEN;
    }

    @Override
    public String uri() {
      return MY_DYNATRACE_URI;
    }

    @Override
    public String deviceId() {
      return MY_DEVICE_ID;
    }

    @Override
    @Nullable
    public String get(String k) {
      return null;
    }
  };
  MeterRegistry registry = new DynatraceMeterRegistry(dynatraceConfig, Clock.SYSTEM);
}
EN

回答 1

Stack Overflow用户

发布于 2019-12-09 15:45:27

我还尝试了设置Spring Dynatrace测微器,在配置正确的持续时间之前遇到了一些异常。从您分享的示例代码中,我注意到缺少此方法。

代码语言:javascript
复制
 @Configuration
public class DynatraceMicrometerConfig implements DynatraceConfig {

  private final DevopsProdTenant devopsTenant = new DevopsProdTenant();

  private static final String METRIC_CUSTOM_ID = "CUSTOM_EXTENSION_DEVICE";

  @Override public String get(String key) {
    return null;
  }

  @Override public String apiToken() {
    return devopsTenant.getDecryptedApiToken();
  }

  @Override public String uri() {
    return devopsTenant.getUrl();
  }

  @Override public String deviceId() {
    return METRIC_CUSTOM_ID;
  }

//  @Override public Duration step() {
//    return Duration.parse("PT10S");
//  }
}

我们使用的gradle文件包含与您正在使用的文件相同的导入,但我们不依赖于应用程序属性,因为我们需要从外部库导入uri和token (然而,使用应用程序属性应该也是如此)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59199569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档