.NET Core 性能监控

1,484 阅读2分钟

!!! 本文已参与「新人创作礼」活动,一起开启掘金创作之路。更多干货文章,可以访问 菜鸟厚非

介绍

App.Metrics 是一款开源的支持 .NET Core 的监控插件,它还可以支持跑在 .NET Framework 上的应用程序(版本 >= 4.5.2)。

本篇介绍 App.Metrics + InfluxDB + Grafana,构建性能监控。

环境信息

本篇博客操作全部在Linux下部署

服务器说明
192.168.200.123influxdb 服务器,存储数据
192.168.200.167grafana 服务器,展示数据
192.168.200.164.NetCore 3.1 + Metrics 4.2,收集数据

前置条件

influxdb 、grafana 部署请参照博主其他博客,本篇不做介绍

部署

一、.Net Core API

  1. 安装 packge App.Metrics 4.2 、App.Metrics.AspNetCore.All 4.2 、App.Metrics.Reporting.InfluxDB 4.2 在这里插入图片描述
  2. 配置信息
{
  "AppMetrics": {
    "IsOpen": true,
    "DatabaseName": "AppMetricsDB",
    "ConnectionString": "http://192.168.200.123:8086",
    "UserName": "root",
    "Password": "root",
    "App": "ad-api",
    "Env": "Development"
  }
}
  1. 注册服务 在 starup 类中 ConfigureServices 方法注册
            // AppMetrics
            bool isOpenMetrics = Convert.ToBoolean(Configuration["AppMetrics:IsOpen"]);
            if (isOpenMetrics)
            {
                string database = Configuration["AppMetrics:DatabaseName"];
                string connStr = Configuration["AppMetrics:ConnectionString"];
                string app = Configuration["AppMetrics:App"];
                string env = Configuration["AppMetrics:Env"];
                string username = Configuration["AppMetrics:UserName"];
                string password = Configuration["AppMetrics:Password"];

                var uri = new Uri(connStr);
                var metrics = AppMetrics.CreateDefaultBuilder().Configuration.Configure(options =>
                {
                    options.AddAppTag(app);
                    options.AddEnvTag(env);
                }).Report.ToInfluxDb(options =>
                {
                    options.InfluxDb.BaseUri = uri;
                    options.InfluxDb.Database = database;
                    options.InfluxDb.UserName = username;
                    options.InfluxDb.Password = password;
                    options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
                    options.HttpPolicy.FailuresBeforeBackoff = 5;
                    options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
                    options.FlushInterval = TimeSpan.FromSeconds(5);
                }).Build();

                services.AddMetrics(metrics);
                services.AddMetricsReportingHostedService();
                services.AddMetricsTrackingMiddleware();
                services.AddMetricsEndpoints();
            }

在这里插入图片描述

  1. 使用服务 在 starup 类中 Configure 方法启用
            // AppMetrics
            bool isOpenMetrics = Convert.ToBoolean(Configuration["AppMetrics:IsOpen"]);
            if (isOpenMetrics)
            {
                app.UseMetricsAllEndpoints();
                app.UseMetricsAllMiddleware();
            }

在这里插入图片描述

  1. 启动程序 启动程序后,Metrics 会向 influxdb 实时写入程序运行资源信息。如果不知道是否写入成功,可以查看 influxdb log 进行查看。

二、添加面板

  1. 添加数据源,打开 grafana 进行数据源添加,配置 influxdb 信息,并测试是否成功 在这里插入图片描述 在这里插入图片描述
  2. 配置面板。添加Dashboards,可以使用导入 grafana.com/dashboards/… 。 官方有许多配置好的 Dashboards 可以直接拿来用 在这里插入图片描述

三、查看面板

对 API 项目进行访问或者压测模拟访问,可以根据指定条件查看指定程序信息 在这里插入图片描述