• .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 config = Configuration.GetSection("AppMetrics").Get<AppMetricsConfig>();
                services.AddMetrics(AppMetrics.CreateDefaultBuilder()
                .Configuration.Configure(
                options =>
                {
                    options.AddAppTag(config.App);
                    options.AddEnvTag(config.Env);
                })
                .Report.ToInfluxDb(
                options =>
                {
                    options.InfluxDb.BaseUri = new Uri(config.ConnectionString);
                    options.InfluxDb.Database = config.DataBaseName;
                    options.InfluxDb.UserName = config.UserName;
                    options.InfluxDb.Password = config.Password;
                    options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
                    options.HttpPolicy.FailuresBeforeBackoff = 5;
                    options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
                    options.FlushInterval = TimeSpan.FromSeconds(5);
                })
                .Build());
                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

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

    然后这块节本就搞定了

  • 相关阅读:
    task-clph
    遍历数组的方式
    iOS事件处理之七种手势
    quatz2d使用注意点
    iOS 细碎知识整理
    九宫格算法图示
    mac10.12的Cocopods安装使用
    静态库冲突的解决办法:duplicate symbol
    ceshi
    xmpp4-总览
  • 原文地址:https://www.cnblogs.com/liyouming/p/9909533.html
Copyright © 2020-2023  润新知