我尝试在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"])
为什么'石墨'没有被认为是可接受的类型?我错过了什么?
答案 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
已被正确注册为子类型。