微服务解决方案:监控配置
您需要具备 ABP Business 或更高等级的许可证才能创建微服务解决方案。
在分布式系统中,监控系统的健康状态和各服务的运行状况至关重要。监控有助于在问题出现之前发现问题,并帮助理解系统的运行行为。所有服务、应用程序和网关都配置为使用 Prometheus 和 Grafana 库进行监控。它们遵循统一的监控配置方式。本文档将解释这一通用的监控结构。
配置
监控配置是在项目的每个模块类中完成的。模块类的 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 的默认用户名和密码为
admin和admin。您可以在首次登录后更改密码。
登录 Grafana 仪表板后,您可以添加新的数据源以连接到 Prometheus 服务器,并创建新的仪表板来监控系统。
自定义指标
要创建自定义指标,您可以使用 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 图表中。
抠丁客



