.net-core - 在.net core应用程序中使用Prometheus

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

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

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

  • b) 使用 Prometheus 进行指标记录的最佳方法是什么,例如 我应该在每个客户端中使用还是添加普罗米修斯日志逻辑 services 方法,以便记录每个请求的指标并 管道中的响应?

  • c) 在.net core应用程序中哪里配置prometheus服务器?

最佳答案

Monitor .Net core web API using 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" />

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

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

在 prometheus.yml 中添加新作业

  - job_name: 'SampleWebAPi'
      metrics_path: /metrics-text
      static_configs:
      - targets: ['<ip:port>']

重启 prometheus 然后检查目标页面

<强> http://localhost:9090/targets

Github Code

关于.net-core - 在.net core应用程序中使用Prometheus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47395762/

相关文章:

c# - 访问azure应用程序设置中的嵌套json应用程序设置返回null

docker - Omnisharp 在使用 docker 时无声地崩溃

c# - Quartz.net Core 中的依赖注入(inject)未找到注册服务

c# - Visual Studio 缩进设置为两个空格而不是四个空格制表符

c# - 为什么 asp.net core 发送空对象作为响应?

asp.net-core - Visual Studio 15 上不存在 ASP.NET Core Web 应用程序模板

c# - ASP.NET Core 中间件向 Controller 传递参数

smtp - 我如何告诉 Prometheus 的 Alertmanager 通过 Gmail 的 SMTP 服务器发送电子邮件

azure - 如何将存储在 azure 表或事件中心中的指标公开给 prometheus?

linux - Prometheus Docker-连接到外部机器