我想用Prometheus监控我的.Net Core应用程序。
为了做到这一点,我使用的是.Net Prometheus Library(AppMetrics)。
当我转到链接http://localhost:57057/metrics
时,它会返回一个包含数据的JSON。
但是当我去prometheus并将此链接添加为目标时,会抛出此错误No Token Found
。
level = warn ts = 2018-05-22T06:52:17.5781093Z caller = scrape.go:697 component =“scrape manager”scrape_pool = actibook target = http://localhost:57057/metrics msg =“append failed”err =“没有找到令牌“
这是我可以处理的方式吗?
任何遇到此问题的人都是解决方案。
Startup.cs
//ConfigureServices
var metrics = new MetricsBuilder()
.OutputMetrics.AsPrometheusPlainText()
.OutputMetrics.AsPrometheusProtobuf().Build();
services.AddMetrics(metrics);
services.AddMetricsEndpoints(options =>
{
options.MetricsTextEndpointOutputFormatter = new MetricsPrometheusTextOutputFormatter();
options.MetricsEndpointOutputFormatter = new MetricsPrometheusProtobufOutputFormatter();
});
services.AddMvc().AddMetrics();
//Configure
app.UseMetricsAllMiddleware();
app.UseMetricsAllEndpoints();
Program.cs的
Metrics = AppMetrics.CreateDefaultBuilder()
.OutputMetrics.AsPrometheusPlainText()
.OutputMetrics.AsPrometheusProtobuf()
.Build();
return WebHost.CreateDefaultBuilder(args)
.ConfigureMetrics(Metrics)
.UseMetrics()
.UseStartup<Startup>()
.Build();
appsettings.json
"MetricsOptions": {
"DefaultContextLabel": "MyMvcApplication",
"Enabled": true
},
"MetricsWebTrackingOptions": {
"ApdexTrackingEnabled": true,
"ApdexTSeconds": 0.1,
"IgnoredHttpStatusCodes": [ 404 ],
"IgnoredRoutesRegexPatterns": [],
"OAuth2TrackingEnabled": true
},
"MetricEndpointsOptions": {
"MetricsEndpointEnabled": true,
"MetricsTextEndpointEnabled": true,
"EnvironmentInfoEndpointEnabled": true
}
您可以通过/metrics-text
路径访问它。
同样在您的prometheus.yml
文件中应添加以下内容:
- job_name: 'nameOfJob'
metrics_path: '/metrics-text'
static_configs:
- targets: ['localhost:57057']
答案 0 :(得分:1)
这通常意味着输出的Prometheus文本格式无效。查找度量标签或标签名称中的连字符,或以数字开头的连字符 - 这些是最常见的错误。