在.net核心应用程序中使用Prometheus

时间:2017-11-20 15:41:56

标签: .net-core asp.net-core-webapi prometheus

我在.net核心应用程序中使用Prometheus进行POC。我没有在Prometheus网站上找到足够的信息来开始,我有以下问题,如果有人能回答这将有所帮助

  • a)我是否需要编写自己的.net核心客户端才能使用 prometheus in app?

  • b)使用普罗米修斯进行公制记录的最佳方法是什么? 我应该在每个客户端使用还是添加prometheus日志记录逻辑 服务方法,以便为每个请求记录指标 管道中的反应?

  • c)在.net核心应用程序中配置prometheus服务器的位置?

3 个答案:

答案 0 :(得分:1)

使用Prometheus监视.Net核心Web API

安装以下软件包

new {q.GroupID, q.ModuleID})

在Program.cs类中添加以下代码以支持prometheus

<PackageReference Include="App.Metrics.AspNetCore" Version="3.2.0" />
<PackageReference Include="App.Metrics.AspNetCore.Endpoints" Version="3.2.0" />
<PackageReference Include="App.Metrics.AspNetCore.Tracking" Version="3.2.0" />
<PackageReference Include="App.Metrics.Formatters.Prometheus" Version="3.2.0" />

在完成所有上述更改后,请确保下面的这些端点正常工作

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
      WebHost.CreateDefaultBuilder(args)
      .UseMetricsWebTracking()
      .UseMetrics(option =>
      {
          option.EndpointOptions = endpointOptions =>
          {
              endpointOptions.MetricsTextEndpointOutputFormatter = new MetricsPrometheusTextOutputFormatter();
              endpointOptions.MetricsEndpointOutputFormatter = new MetricsPrometheusProtobufOutputFormatter();
              endpointOptions.EnvironmentInfoEndpointEnabled = false;
          };
      })
      .UseStartup<Startup>();

在prometheus.yml中添加新工作

  http://<ip:port>/metrics
  http://<ip:port>/metrics-text

重新启动普罗米修斯,然后检查目标页面

http://localhost:9090/targets

Github Code

答案 1 :(得分:0)

prometheus.io的官方.net客户端现在支持.NET Core 2.0:

https://github.com/prometheus-net/prometheus-net

答案 2 :(得分:0)

我们正在使用自己的开源库,因为在我们开始使用Prometheus时没有其他现有解决方案正常工作。

https://github.com/nexogen-international/Nexogen.Libraries.Metrics

此库可以开箱即用添加大量指标。我建议你可以测量一切,因为你永远不知道什么是生产中的瓶颈。至少衡量一切可以作为关键绩效指标的因素,例如访客数量或进行长期运营所需的时间。

可以在ASP.NET Core Startup中配置库。我建议您通过包含相关指标的界面注入指标。 如果您有非ASP.NET应用程序,那么您只需在主类中进行设置即可。