在另一个端口上公开 ASP.NET 核心普罗米修斯指标
Expose ASP.NET Core Prometheus metrics on another port
我正在为我的 ASP.NET Core 3.1 应用设置 Prometheus 导出器。
我已经导入了
<PackageReference Include="prometheus-net.AspNetCore" Version="4.1.1" />
这是我配置的:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseRouting();
app.UseHttpMetrics();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapMetrics();
});
}
这将在与 ASP.NET 核心应用程序的其余部分相同的端口上公开指标端点,例如:my.api.com:80/metrics
.
我需要做什么才能在另一个端口上公开 /metrics
端点?我希望 API 运行 在端口 80 上,/metrics
端点在端口 9102 上。
找不到任何相关文档。
编辑
我正在将其部署到 Kubernetes 中
我最后这样做了:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseMetricServer(9102);
app.UseRouting();
app.UseHttpMetrics();
...
}
然后对于我的 Kubernetes Deployment
,我必须将端口 80 和 9102 添加到 ports
下的 containerPort
s。
此外,我必须将 ASPNETCORE_URLS
环境变量设置为 http://+:80;http://+:9102
这样,/metrics
只暴露在端口 9102 上。(但是我的 API 的其余部分暴露在端口 80 和 9102 上)。
我正在为我的 ASP.NET Core 3.1 应用设置 Prometheus 导出器。
我已经导入了
<PackageReference Include="prometheus-net.AspNetCore" Version="4.1.1" />
这是我配置的:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseRouting();
app.UseHttpMetrics();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapMetrics();
});
}
这将在与 ASP.NET 核心应用程序的其余部分相同的端口上公开指标端点,例如:my.api.com:80/metrics
.
我需要做什么才能在另一个端口上公开 /metrics
端点?我希望 API 运行 在端口 80 上,/metrics
端点在端口 9102 上。
找不到任何相关文档。
编辑
我正在将其部署到 Kubernetes 中
我最后这样做了:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseMetricServer(9102);
app.UseRouting();
app.UseHttpMetrics();
...
}
然后对于我的 Kubernetes Deployment
,我必须将端口 80 和 9102 添加到 ports
下的 containerPort
s。
此外,我必须将 ASPNETCORE_URLS
环境变量设置为 http://+:80;http://+:9102
这样,/metrics
只暴露在端口 9102 上。(但是我的 API 的其余部分暴露在端口 80 和 9102 上)。