前言

前面我们聊了一下一个应用程序 应该监控的8个关键位置.

应用程序的8个关键性能指标以及测量方法

最后卖了个小关子,是关于如何监控ASP.NET Core的.

今天我们就来讲讲如何监控它,下面上效果图:

阅读本文需要了解的相关技术与内容:

InfluxDb(分布式时序数据库,开源)(注:分布式部分已商业化最新的分布式版本已不在开源,单例的继续开源)

Grafana(开源的,功能齐全的度量仪表盘和图形编辑器)

App Metrics(主角,开源的支持.NET Core的监控插件,采用管道注入的方式,对代码的入侵性极小)

本文测试环境为Windows64位,当然 这个方案全部都可以在linux上实现(甚至windows才应该是备用方案 - -,尴尬.)

所以本文分为3个步骤

1.安装InfluxDb,并创建数据库

2.安装Grafana,并添加相关配置

3.在ASP.NET Core中使用App Metrics

下面我们正式开始

正文

1.安装InfluxDb,并创建数据库

App.Metrics支持的库很多,有InfluxDB、Graphite 、Prometheus.

今天我们主要已InfluxDb为例子.

首先下载,InfluxDb

知道你们懒得找..地址如下:https://portal.influxdata.com/downloads#influxdb

下载你需要的对应的系统的版本.这里我就直接下载Windows Binaries (64-bit)

linux的安装步骤我就不多说了,网上一大把..讲一下windows安装InfluxDb的注意事项(..这玩意对liunx的支持比windows好的多)..

解压后打开influxdb.conf,因为influxdb的默认配置全是针对linux配置的..所以我们要修改一下配置文件.

修改下面3个liunx的路径,改为winodws路径如下:

[meta]# Where the metadata/raft database is storeddir = "D:/influxdb/meta"
[data]# The directory where the TSM storage engine stores TSM files.dir = "D:/influxdb/data"
  # The directory where the TSM storage engine stores WAL files.wal-dir = "D:/influxdb/wal"

然后修改网页图形化管理界面配置,端口如下:

[admin]# Determines whether the admin service is enabled.enabled = true# The default bind address used by the admin service.bind-address = ":8083"

最后cmd运行,进入到你的解压目录,执行命令:

influxd -config influxdb.conf

得到如图效果:

我们就安装完成了.

我们进入管理界面的监听端口:http://localhost:8083/,会看到如下界面:

然后我们输入SQL语句  CREATE DATABASE "你的库名"

看到下图,就是执行成功了.

我们查一下看是不是真的,输入SQL语句:SHOW DATABASES

如图:

除了默认的第一个库以外,还有你自己添加的库名,就说明是加成功了,好了,安装就到此结束

2.安装Grafana,并添加相关配置

然后我们安装Grafana,

下载地址:https://grafana.com/get

我们解压后进入bin目录,如图:

直接运行grafana-server.exe即可.

Grafana默认会监听3000的端口,所以我们进入http://localhost:3000,

会让你登陆,直接输入本地的管理员帐户即可,帐户:admin  密码:admin,进入后如图:

安装完成之后,我们下载相关的仪表模版.

地址如下:https://grafana.com/dashboards/2140   (是个json文件)

然后我们导入我们的仪表:如图操作即可:

然后,添加我们上面的数据源.

如图:

选择Add DataSource,然后操作如下:

这样,我们就完成了Grafana的安装配置和添加数据源

3.在ASP.NET Core中使用App Metrics

接下来就是我们的重头戏了,在ASP.NET Core中使用AppMetrics.

我们随便创建一个ASP.NET Core MVC项目,如图:

用nuget包添加引用:

核心程序:

管道注入的扩展:

ASP.NET Core MVC的扩展:

其他相关要用到的库:(注:我们这里的数据源是influxDB所以用的这个库,其他的库请搜索其他库的后缀)

我们回到我们熟悉的C#代码,在Startup中我们编写注入代码如下:

首先修改ConfigureServices方法,如下:

 public void ConfigureServices(IServiceCollection services){                   var database = "TestData";            var uri = new Uri("http://127.0.0.1:8086");services.AddMetrics(options =>{options.GlobalTags.Add("app", "sample app");options.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 });            // Add framework services.            services.AddMvc();}

加入我们influxDB相关配置,其中database就是你自己输入的数据库名. uri就是你数据库的地址.

然后我们需要在程序启动的时候就注入我们的Metrics监控,所以修改Configure代码如下:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime lifetime){loggerFactory.AddConsole(Configuration.GetSection("Logging"));app.UseMetrics();app.UseMetricsReporting(lifetime);            //loggerFactory.AddDebug();if (env.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseBrowserLink();}                   else{app.UseExceptionHandler("/Home/Error");}app.UseStaticFiles();app.UseMvc(routes =>{routes.MapRoute(name: "default",template: "{controller=Home}/{action=Index}/{id?}");});}

其中app.UseMetrics();  app.UseMetricsReporting(lifetime) ,是我们的注入代码..

其他的地方.不用动一丝一毫..怎么样 是不是几乎没有什么入侵性~.

最后,我们跑起来.

随便在home中点击几下页面,或者调用一下..

然后进入到Grafana的监控页面中,就可以看到如下信息:

写在最后

这篇只是简单的讲了如何做到初级的监控,其实还有心跳检测等比较多的功能,后面会慢慢来讲..

.Net Core也就今年社区才慢慢起步,所这个监控也是刚刚完成,作者一直在积极的更新中.

比较遗憾的是本来这个是支持 .NET4.5.2以上的,但是由于关注的人比较少.所以就只出了RC的预览版.对最新版支持不完善.

我也在GitHub上给作者提了Issues,https://github.com/alhardy/AppMetrics/issues/177

相关文章:

  • 互联网级监控系统必备-时序数据库之Influxdb技术

  • 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑

原文地址:http://www.cnblogs.com/GuZhenYin/p/7170010.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

ASP.NET Core之跨平台的实时性能监控相关推荐

  1. ASP.NET Core之跨平台的实时性能监控(2.健康检查)

    前言 上篇我们讲了<如何使用App Metrics 做一个简单的APM监控>,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内容. 没看过上篇的,请移步:ASP.NET Core ...

  2. .Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控

    一.简介 最近这段时间一直在忙,没时间写博客,负责了一个项目,从前端到后端一直忙,同时还有其他第几个项目的系统架构要处理. 去年就开始关注net core了,只是平时写写demo,没用在项目中,正好这 ...

  3. .NetCore使用skywalking实现实时性能监控

    一.简介 很久之前写了一篇 <.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控>关于NetCore性能监控的文章,使用Inf ...

  4. C++ 后台程序实时性能监控

    面对的问题: 做后台程序经常会被问一句话,你的程序能撑多少人.一般官方一点的回答是这个得根据实际情况而定.实际上后台程序的性能是可以被量化的.我们开发的每一个服务器程序,对性能都非常有底,以为我们有数 ...

  5. ASP.NET Core 配置源:实时生效

    在之前的文章 ASP.NET Core 自定义配置源 和 ASP.NET Core etcd 配置源 中主要是介绍如何实现自定义的配置源,但不论内置的和自定义的配置源,都会面临如何使配置修改后实时生效 ...

  6. ASP.NET Core 使用SignalR后台实时推送数据给Echarts展示图表

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

  7. 使用ASP.NET Core进行跨平台Web文档扫描

    如果您是C#开发人员,可以使用哪种技术来创建跨平台的Web文档扫描应用程序? 答案是ASP.NET Core和Dynamic Web TWAIN. 在这篇文章中,我将分享如何使用这些技术从头开始构建一 ...

  8. MySQL 的实时性能监控利器

    操作系统及MySQL数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或MySQL数据库的性能瓶颈,就像你在Linux系统上使用「top,sar,io ...

  9. [Asp.Net Core]NET5跨平台的本质

    NET5跨平台的本质 1.Web应用程序是一个控制台:-Main程序的入口:跨平台的原因在于框架已经内置了主机,只要是 程序启动,就是启动了主机,就可以监听端口:请求来了,只要是请求这个端口,主机就可 ...

最新文章

  1. 今天我注册博客园了,我很开心!
  2. Docker学习笔记
  3. 千亿级的数据难题,优酷工程师怎么解决?
  4. 曾为浮云遮望眼,平沙莽莽黄入天。 终有一缘得一道,拨开云雾见青天! ——论如何快速删除上亿级数据集思路
  5. -分类数组-创建//修改(添加/改变原有/合并/删除)分类数组(categorical)
  6. 如何正确的卸载MATLAB7?
  7. Autodesk HSMWorks Ultimate 2019 Crack 破解版
  8. PKG安装包的管理与文件格式分析
  9. 2022年,Python 编程需要养成这 9 个好习惯
  10. 华为首次自曝“天才少年”成果:入职不到一年就干成这件大事,网友:值200万年薪!...
  11. Dice Loss与mIoU
  12. vue 拖拽小图标获取坐标位置
  13. 平面内有N个点,如何快速求出距离最近的点对?
  14. Android UI库推荐
  15. 对麦克斯韦方程组的理解(非常详细)
  16. HDMI转MIPICSI,东芝转换芯片,TC358743XBG/TC358749XBG
  17. 大华 sdk java_[日常总结] 大华SDK基于Java的二次开发实现Restful Api
  18. 舞台音效控制软件_Sports Sounds Pro
  19. 着陆攻击LAND Attack
  20. 虚拟摄像头之 十二 v4l2loopback虚拟机摄像头移植实战(完结篇)

热门文章

  1. LeetCode 3_Longest Substring Without Repeating Characters
  2. PHP: 深入了解一致性哈希
  3. 20151026c#2
  4. ASP.NET 状态管理概览
  5. Avalonia-.NET 的跨平台 UI 框架
  6. 基于事件驱动架构构建微服务第19部分:使用 SignalR 和 Azure Active Directory 构建和保护实时通信...
  7. 构建属于你自己的dapr服务发现
  8. Windows环境下Dapr入门
  9. 听说你刚转了Java?准备转回.NET吧!
  10. 使用 Tye 辅助开发 k8s 应用竟如此简单(六)