项目

微服务解决方案:监控配置

您需要具备 ABP Business 或更高等级的许可证才能创建微服务解决方案。

在分布式系统中,监控系统的健康状态和各服务的运行状况至关重要。监控有助于在问题出现之前发现问题,并帮助理解系统的运行行为。所有服务、应用程序和网关都配置为使用 PrometheusGrafana 库进行监控。它们遵循统一的监控配置方式。本文档将解释这一通用的监控结构。

配置

监控配置是在项目的每个模块类中完成的。模块类的 OnApplicationInitialization 方法用于设置监控系统。我们需要在项目中添加 prometheus-net.AspNetCore 包以使用 Prometheus。prometheus-net.AspNetCore 包是一个提供中间件来为 Prometheus 暴露指标的库。app.UseHttpMetrics(); 这行代码用于收集 HTTP 请求指标。endpoints.MapMetrics(); 这行代码用于将指标暴露到 /metrics 端点。现有模板在 docker-compose 文件中包含了 Prometheus 和 Grafana 的配置。因此,您可以访问 http://localhost:9090 查看 Prometheus 仪表板,访问 http://localhost:3001 查看 Grafana 仪表板。

Grafana 的默认用户名和密码为 adminadmin。您可以在首次登录后更改密码。

登录 Grafana 仪表板后,您可以添加新的数据源以连接到 Prometheus 服务器,并创建新的仪表板来监控系统。

grafana-dashboard

自定义指标

要创建自定义指标,您可以使用 IMeterFactory 接口。基本上,您可以遵循官方文档中的步骤来创建自定义指标。例如,您可以创建一个自定义指标来监控特定端点的请求数量。

public class AdministrationMetrics : ISingletonDependency
{
    private readonly Counter<int> _demoRequested;

    public AdministrationMetrics(IMeterFactory meterFactory)
    {
        var meter = meterFactory.Create("Microservice.Administration");
        _demoRequested = meter.CreateCounter<int>("demo_controller.requested");
    }

    public void DemoRequested()
    {
        _demoRequested.Add(1);
    }
}

在演示控制器中,您可以注入 AdministrationMetrics 类,并使用 DemoRequested 方法来增加计数器。

[Route("api/administration/demo")]
public class DemoController : AbpController
{
    public AdministrationMetrics AdministrationMetrics { get; }

    public DemoController(AdministrationMetrics administrationMetrics)
    {
        AdministrationMetrics = administrationMetrics;
    }

    [HttpGet]
    [Route("requested")]
    public  Task DemoRequested()
    {
        AdministrationMetrics.DemoRequested();
        return Task.CompletedTask;
    }
}

Kubernetes 监控

如果在项目创建期间选中了 Kubernetes 配置 选项,监控系统将自动为 Kubernetes 进行配置。Prometheus 和 Grafana 的配置将添加到 helm 图表中。


在本文档中