繁体   English   中英

如何将 Prometheus 与 .NET Core 应用程序集成?

[英]How to integrate Prometheus with .NET Core application?

我正在尝试为我的 C# .NET Core 控制台应用程序集成 Prometheus。 不是在开发 ASP.NET Core 应用程序 如何像我们通常为 ASP.NET Core 应用程序所做的那样将指标数据发送到 prometheus?

在 ASP.NET Core 应用程序中,

打开 Startup.cs 并更新 ConfigureServices 和 Configure 以查看以下内容:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<MetricReporter>();

    services.AddControllers();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Other middleware components omitted for brevity

    // Make sure these calls are made before the call to UseEndPoints.
    app.UseMetricServer();
    app.UseMiddleware<ResponseMetricMiddleware>();

    app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
}

如何为 .NET Core 控制台应用程序执行此操作?

您可以使用 Prometheus-net 包,它提供了一些用于集成 .Net 和 Prometheus 的有用功能。 根据文档,您可以为没有任何可访问 http 端点的控制台应用程序启动 kestrel 独立服务器。 为此,您必须在项目文件中的 Sdk 属性值末尾添加 .Web。

之后你需要启动红隼:

var metricServer = new KestrelMetricServer(port: 1234);
metricServer.Start();

另一种方法是简单地使用独立的 Http 处理程序,如下所示:

var metricServer = new MetricServer(port: 1234);
metricServer.Start();

默认配置将在 /metrics URL 上发布指标。

如果您的用户无权在指定端口上打开 Web 服务器,则MetricServer.Start()可能会在 Windows 上引发访问被拒绝异常。 您可以使用netsh命令授予自己所需的权限:

netsh http add urlacl url=http://+:1234/metrics user=DOMAIN\user

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM