在另一个端口上公开 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 下的 containerPorts。

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

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