.NetCore 中使用AppMetrics向InfluxDB中添加监控数据并通过Grafana图像分析

考虑到分布式部署监控环境是所有的请求情况,所以这一块一般在网关GateWay里面加比较省事,聚合在一起的,如果放在api服务中,如果只有1个还好,一旦部署Node多是很痛苦的事情

这天需要添加的Nuget包如下:

在配置添加

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
 //AppMetrics配置 
  "AppMetrics": {
    "DataBaseName": "lymtest",
    "ConnectionString": "http://192.168.0.212:8086",
    "UserName": "liyouming",
    "Password": "lym123!@#",
    "App": "体检服务",
    "Env": "测试环境"
  },
  "AllowedHosts": "*"
}

注意使用中文一定要指定U8,不然文字会乱码,设置好连接地址 、数据库名称、用户名、密码、应用名称、应用环境

下面看下代码中的处理

配置ConfigServices服务

 AppMetricsConfig appMetricsConfig = Configuration.GetSection("AppMetrics").Get<AppMetricsConfig>();
            var uri = new Uri(appMetricsConfig.ConnectionString);

            var metrics = AppMetrics.CreateDefaultBuilder()
            .Configuration.Configure(
            options =>
            {
                options.AddAppTag(appMetricsConfig.App);
                options.AddEnvTag(appMetricsConfig.Env);
            })
            .Report.ToInfluxDb(
            options =>
            {
                options.InfluxDb.BaseUri = uri;
                options.InfluxDb.Database = appMetricsConfig.DataBaseName;
                options.InfluxDb.UserName = appMetricsConfig.UserName;
                options.InfluxDb.Password = appMetricsConfig.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.AddMetricsReportScheduler();
            services.AddMetricsTrackingMiddleware();
            services.AddMetricsEndpoints();

Configure中添加中间件

     app.UseMetricsAllMiddleware();
    app.UseMetricsActiveRequestMiddleware();
     app.UseMetricsErrorTrackingMiddleware();
            app.UseMetricsPostAndPutSizeTrackingMiddleware();
            app.UseMetricsRequestTrackingMiddleware();
            app.UseMetricsOAuth2TrackingMiddleware();
            app.UseMetricsApdexTrackingMiddleware();
            app.UseMetricsAllEndpoints();
            app.UseMetricsEndpoint();
            app.UseMetricsTextEndpoint();
            app.UseEnvInfoEndpoint();    

然后运行下程序访问下一些功能,监控需要的数据已经加到InfluxDB中去了

接下来就需要把InfluxDB中的数据导入到Grafana中,下面就进入到Grafana中去Import,这里根据配置的5s从InfluxDB刷新数据

 这里可以输入Dashboard的地址,也可以直接输入ID 2125

Import导入可以看到Dashboard

我们也可以看下Dashboard管理中去看现有的所有Dashboard

这里,我程序还没有运行起来,下面我运行好程序,迅速刷新几十次可以看到下面的数据统计情况

然后这块节本就搞定了

猜你喜欢

转载自www.cnblogs.com/liyouming/p/9909533.html