1. 程式人生 > >.NetCore 中使用AppMetrics向InfluxDB中新增監控資料並通過Grafana影象分析

.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": "[email protected]#", "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

這裡,我程式還沒有執行起來,下面我執行好程式,迅速重新整理幾十次可以看到下面的資料統計情況

 

然後這塊節本就搞定了