在另一个端口上公开 ASP.NET Core Prometheus 指标

Joe*_*oel 6 kubernetes prometheus asp.net-core prometheus-net asp.net-core-3.1

我正在为我的 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();
    });
}
Run Code Online (Sandbox Code Playgroud)

这将在与 ASP.NET Core 应用程序的其余部分相同的端口上公开指标端点,例如:my.api.com:80/metrics.

我需要做什么才能/metrics在另一个端口上公开端点?我希望我的 API 在端口 80 上运行,/metrics端点在端口 9102 上运行。

确实找不到任何相关文档。

编辑

我正在将其部署到 Kubernetes 中

Joe*_*oel 11

我最终这样做了:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    app.UseMetricServer(9102);

    app.UseRouting();
    app.UseHttpMetrics();

    ...

}
Run Code Online (Sandbox Code Playgroud)

然后对于我的 Kubernetes,Deployment我必须将端口 80 和 9102 添加到containerPorts 下ports

另外我必须将ASPNETCORE_URLS环境变量设置为http://+:80;http://+:9102

这样,/metrics仅在端口 9102 上公开。(但是我的 API 的其余部分在端口 80 和 9102 上公开)。