考虑到分布式部署监控环境是所有的请求情况,所以这一块一般在网关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
这里,我程序还没有运行起来,下面我运行好程序,迅速刷新几十次可以看到下面的数据统计情况
然后这块节本就搞定了