config.yml中的DropWizard Graphite Metrics Reporter无法解析

时间:2015-11-19 23:54:56

标签: dropwizard graphite codahale-metrics

我尝试在config.yml文件中配置我的dropwizard graphite metrics报告器:

metrics:
  reporters:
     - type: graphite
       host: my.graphite.host.com
       port: 2003
       prefix: my.prefix

我的pom.xml中有dropwizard-metrics和metrics-graphite作为依赖项。我的Application类或Configuration类中没有关于记者的任何内容。我的印象是DropWizard负责MetricRegistry和记者的所有初始化和启动。然而,当我运行我的应用程序时,我收到以下错误:

config.yml has an error:

  * Failed to parse configuration at: metrics.reporters; 
Could not resolve type id 'graphite' into a subtype of [simple type, 
class io.dropwizard.metrics.ReporterFactory]: 
known type ids = [ReporterFactory, console, csv, log] 
at [Source: N/A; line: -1, column: -1] 
(through reference chain: com.example.MyConfiguration["metrics"]-  
>io.dropwizard.metrics.MetricsFactory["reporters"])

为什么'石墨'没有被认为是可接受的类型?我错过了什么?

2 个答案:

答案 0 :(得分:5)

我确定你有答案 - 但我有同样的问题所以想详细说明。你需要三个在文档中没有清楚的库。

string baseurl = "http://developer.echonest.com/api/v4/artist/profile?api_key=[API KEY]&name=weezer";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(baseurl);
request.Method = "POST";
request.Accept = "application/json";
request.UserAgent = "curl/7.37.0";
request.ContentType = "application/x-www-form-urlencoded";

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    string data = "browser=Win7x64-C1|Chrome32|1024x768&url=http://www.google.com";
    streamWriter.Write(data);
}

var response = request.GetResponse();
string text;

using (var sr = new StreamReader(response.GetResponseStream()))
{
    text = sr.ReadToEnd();
    Console.WriteLine(text);
}

答案 1 :(得分:0)

我在使用Gradle和Shadow plugin来构建胖子罐时遇到了同样的问题。原因是,默认情况下,广告Java SPIs用于动态加载的服务描述符文件没有正确合并并包含在最终的jar中。这就是Graphite报告插件未注册其正在实施的服务的原因。

the Gradle docs中,可以通过以下方式强制合并:

shadowJar {
    mergeServiceFiles()
}

一旦将其添加到我的build.gradle中,就可以解析该配置,因为graphite已被正确注册为子类型。