杭州.net培训
达内杭州.net培训中心

13732203138

热门课程

如何对ASP.NET Core进行实时性能监控

  • 时间:2018-04-24 17:12
  • 发布:杭州.NET培训
  • 来源:知识库

一 配置ASP.NET Core应用程序

假设你熟悉ASP.NET Core。如果不熟悉ASP.NET Core,请查阅ASP.NET Core入门教程。

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/start-mvc

1.安装nuget包

App.Metrics 1.3.0

App.Metrics.Extensions.Mvc 1.2.0

App.Metrics.Formatters.Json 1.2.0

App.Metrics.Extensions.Middleware 1.2.0

注意,当前版本为1.3.0,后面的代码均基于此版本进行编写。

2.注册服务

public void ConfigureServices(

IServiceCollection services)

{

services.AddMetrics()

.AddHealthChecks()

.AddJsonSerialization()

.AddMetricsMiddleware(options => options

.IgnoredHttpStatusCodes = ew [] {404});

services.AddMvc(options => options

.AddMetricsResourceFilter());

}

3.注册中间件

public void Configure(

IApplicationBuilder app, 

IHostingEnvironment env, 

ILoggerFactory loggerFactory)

{

loggerFactory

.AddConsole(Configuration

.GetSection("Logging"));

app.UseMetrics();

app.UseMvc();

}

配置完毕。按F5查看App Metrics通过中间件提供的以下几个URL。

1 /ping 

应用程序需要负载均衡时有用,返回pong。

2 /health 

执行所有注册的健康检查,并将检查结果通过JSON格式返回。

3./metrics 

获取应用程序指标的快照,并将测量结果通过JSON格式返回。

如,执行/health:

{  

"degraded": {},  

"healthy": {   

"apdex Score": "Satisfied. Score 1"  

},  

"ignored": {},  

"status": "Healthy",  

"timestamp": "2017-07-23T17:45:33.2258Z",  

"unhealthy": {} 

}

如,执行/metrics

{  

"timestamp": "2017-07-23T17:46:19.5907999Z",  

"environment": {    

"machineName": "DESKTOP-X",    

"processName": "dotnet",    

"os": "Windows",    

"osVersion": "10.0.14393",    

"cpuCount": "4",    

"hostName": "DESKTOP-X",    

"localTime": "2017-07-24T01:46:19.5907+08:00",    

"entryAssemblyName": "WebApplication7",    

"entryAssemblyVersion": "1.0.0.0"  

}

... ...

{          

"name": "Transactions Per Endpoint|route:GET",          

"unit": "req",          

"activeSessions": 0,          

"count": 0,          

"durationUnit": "ms",          

"histogram": {            

"lastValue": 0.0,            

"max": 0.0,            

"mean": 0.0,            

"median": 0.0,            

"min": 0.0,            

"percentile75": 0.0,            

"percentile95": 0.0,            

"percentile98": 0.0,            

"percentile99": 0.0,            

"percentile999": 0.0,            

"sampleSize": 0,           

"stdDev": 0.0,            

"sum": 0.0          

},          

"rate": {            

"fifteenMinuteRate": 0.0,            

"fiveMinuteRate": 0.0,            

"meanRate": 0.0,            

"oneMinuteRate": 0.0          

},          

"rateUnit": "min",          

"tags": {            

"route": "GET",            

"app": "WebApplication7",           

"server": "DESKTOP-CF8UFG7",           

"env": "release"          

}        

}

}

为了将度量指标可视化,我们可以把应用程序的指标推送到InfluxDB中,并使用Grafana进行实时分析。

我们先设置InfluxDB。

二 安装InfluxDB

1.下载

influxdb当前版本1.3.1,支持Windows 64-bit。

官方下载地址

https://dl.influxdata.com/influxdb/releases/influxdb-1.3.1_windows_amd64.zip

2.配置

假如解压至C:\influxdb-1.3.1-1。

编辑C:\influxdb-1.3.1-1\influxdb.conf文件。

[meta]

dir = "C:/influxdb/meta"

[data]

dir = "C:/influxdb/data"

wal-dir = "C:/influxdb/wal"

[http]

enabled = true

bind-address = ":8086"

3.运行服务端

influxd.exe -config influxdb.conf

4.运行客户端

influx.exe

显示数据库列表

show databases;

新建一个数据库

create database netcoresample;

命令类似mysql。

注,1.3.1版本的客户端运行命令时,如果出现“There was an error writing history file: open : The system cannot find the file specified.”,那么可以在influx.exe之前,执行“set home=C:\influxdb-1.3.1-1”。

InfluxDB安装完毕,我们创建了一个新的数据库netcoresample。后续的配置中我们将使用这个数据库。

三 安装Grafana

1.下载、解压、执行

Grafana当前版本4.4.1,支持Windows 64-bit。

官方下载地址

https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.4.1.windows-x64.zip

解压至C:\grafana-4.4.1,执行.\bin\grafana-server.exe。

grafana服务默认监听端口3000。

http://localhost:3000

2.配置数据源

进入http://localhost:3000,添加一个数据源。

选择类型为influxDB,数据库填写刚刚创建的数据库netcoresample。点击“Add”进入下一步。

点击“Save  & Test”进行测试。连接成功说明InfluxDB服务运行正常。

3.下载App Metrics仪表盘配置文件

grafana.com提供App Metrics仪表盘配置文件可供下载。

https://grafana.com/dashboards/2125

打开并下载,存储为app-metrics-web-monitoring-influxdb_rev3.json文件。

4.导入App Metrics仪表盘配置文件

打开grafana http://localhost:3000,导入app-metrics-web-monitoring-influxdb_rev3.json文件。

开始上传配置文件,然后导入。

grafana安装和配置工作完毕,可视化效果如下。

此时没有任何指标数据,因为InfluxDB数据库中还没有任何数据进来。

接下来,我们配置应用程序,将指标数据推送到InfluxDB中。

四 配置InfluxDB报表

1.安装nuget包

App.Metrics.Extensions.Reporting.InfluxDB 1.2.0

2.注册服务

public void ConfigureServices(

IServiceCollection services)

{

var database = "netcoresample";

var uri = new Uri("http://127.0.0.1:8086");

services.AddMetrics(options =>

{

options.WithGlobalTags((globalTags, info) =>

{

globalTags.Add("app", info.EntryAssemblyName);

globalTags.Add("env", "stage");

});

})

.AddHealthChecks()

.AddJsonSerialization()

.AddReporting(factory =>

{

factory.AddInfluxDb(

new InfluxDBReporterSettings

{

InfluxDbSettings = new InfluxDBSettings(database, uri),

ReportInterval = TimeSpan.FromSeconds(5)

});

})

.AddMetricsMiddleware(options => options

.IgnoredHttpStatusCodes = new [] {404});

services.AddMvc(options => options

.AddMetricsResourceFilter());

}

3.注册中间件

public void Configure(

IApplicationBuilder app, 

IHostingEnvironment env,

ILoggerFactory loggerFactory, 

IApplicationLifetime lifetime)

{

loggerFactory.AddConsole(Configuration

.GetSection("Logging"));

app.UseMetrics();

app.UseMetricsReporting(lifetime);

app.UseMvc();

}

上一篇:.NET中的异步编程
下一篇:自学.NET这些书你应该看
选择城市和中心
贵州省

广西省

海南省