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

.net core 在.net核心应用程序中使用Prometheus,.net-core,asp.net-core-webapi,prometheus,.net Core,Asp.net Core Webapi,Prometheus,我正在使用.net核心应用程序中的普罗米修斯进行POC。我在普罗米修斯的网站上没有找到足够的信息来开始,我有一个问题,如果有人能回答这个问题,那会很有帮助 a我是否需要编写自己的.net核心客户端才能使用 应用程序中的普罗米修斯 b使用普罗米修斯进行公制记录的最佳方法是什么 我应该在每个客户机中使用,还是添加prometheus日志逻辑 服务方法,以便为每个请求和 准备中的响应 c.在.net核心应用程序中在何处配置prometheus服务器 prometheus.io的.net客户端现在支持.

我正在使用.net核心应用程序中的普罗米修斯进行POC。我在普罗米修斯的网站上没有找到足够的信息来开始,我有一个问题,如果有人能回答这个问题,那会很有帮助

a我是否需要编写自己的.net核心客户端才能使用 应用程序中的普罗米修斯

b使用普罗米修斯进行公制记录的最佳方法是什么 我应该在每个客户机中使用,还是添加prometheus日志逻辑 服务方法,以便为每个请求和 准备中的响应

c.在.net核心应用程序中在何处配置prometheus服务器


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


这里建议客户:

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

这个库可以添加很多现成的指标。我建议您尽可能地衡量一切,因为您永远不可能知道生产中的瓶颈是什么。至少要衡量所有可能成为关键绩效指标的因素,比如访客数量或进行长时间操作所需的时间

可以在ASP.NET核心启动中配置库。我建议通过包含相关度量的接口注入度量。 如果您有一个非ASP.NET应用程序,那么您只需在主类中设置它

使用prometheus监控.Net核心web API

安装以下软件包

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

在进行上述所有更改后,确保以下端点正常工作

在prometheus.yml中添加新作业

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

<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>();
  http://<ip:port>/metrics
  http://<ip:port>/metrics-text
  - job_name: 'SampleWebAPi'
      metrics_path: /metrics-text
      static_configs:
      - targets: ['<ip:port>']