听云监控.NET Core的配置误区

简介: 听云算是较早推出.Net Core应用性能监控的(2017年11月推出),和听云其他语言的监控工具一样,也是无需开发人员介入即可实现在无需修改代码、无需重新编译应用,就能深入代码级别的应用监控。
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/80108827

听云算是较早推出.Net Core应用性能监控的(2017年11月推出),和听云其他语言的监控工具一样,也是无需开发人员介入即可实现在无需修改代码、无需重新编译应用,就能深入代码级别的应用监控。工具虽好,但也满满的是坑呀,特别是按照听云的使用说明进行基于IIS+.Net Core的应用部署配置,发现问题还不少。

        在这里我们只讨论IIS发布部署的方式(Windows环境),因为就这种方式说明书上是写得最模棱两可的。

1.下载tingyun-agent-netcore-1.1.0.exe(更正说明:这个版本不支持Core 2.0,需用最新版本的探针

2. 安装,并配置license key

3. 更改dotnet应用启动脚本,增加一行 【call 安装路径\tingyun-enable.bat】 如下所示:

call 安装路径\tingyun-enable.bat
dotnet c:\interpub\myapp\myapp.dll

myapp.dll可以通过应用程序安装路径的配置文件web.config中看到:

        按理以上的说明已经非常清楚了,但是问题就出在这,首先IIS部署模式下,一般不会有dotnet启动脚本,要求在启动脚本中添加一行代码,这无从下手呀,说好的不用开发人员介入,无需修改代码,有点悬了。另外说明文档中还找到以下这段话:

        这段话更让人莫名其妙,因为IIS只是将请求转发给dotnet core进程(IIS类似于Nginx的作用),并没有托管程序,那么安装.Net探针又有什么意义(应用性能监控的原理是通过在中间语言植入agent,以拦截方法的方式执行并实现监听,这是基于事件触发的,所以监听的程序应该是.net Core应用,不应该是IIS及.net托管程序)。备注:.Net探针用来监听标准的.Net应用及IIS,而.net Core探针才是用来监听跨平台的.net Core应用。

        先去问下开发人员,确认一下入口程序是否是web.config中写的(Rexen.GDRC.Management.Web.dll),结果开发人员说那是调试代码时候调的,发布IIS后不用管这个了。可能是开发人员没理解我的意思,我只能抱着怀疑的态度自己监听dotnet进程(用Process Monitor),结果发现进程调用的入口程序就是我所说的:

        那么按照tingyun的说明,我们调用tingyun-enable.bat后,再启动IIS及相关dotnet进程就应该要能监听到数据了,结果听云探针的日志却报错:

        打开tingyun-enable.bat后发现,就是声明了一些变量,并且发现了监听所用到的程序是tingyun_profiler.dll

SET TINGYUN_NETCORE_HOME=D:\Users\gavin\NetCore Profiler
SET CORECLR_ENABLE_PROFILING=1
SET CORECLR_PROFILER={8BEB2128-D285-4E1D-91B6-11ACD43EC0EE}
SET CORECLR_PROFILER_PATH=%TINGYUN_NETCORE_HOME%\x64\tingyun_profiler.dll

        以上报错也说明了,执行完tingyun-enable.bat后所声明的变量并没有生效,毫无疑问这是局部的声明,而应用程序执行过程中,肯定是引用不到这些变量。另外就是GetAppName()方法,让我想到了是不是能自己赋值个应用名,于是到说明文档里真的找到了这块:

        于是我开始意识到,tingyun-enable.bat中的都是环境变量,那么我们首先应该配好环境变量,而不是在这里纠结什么时候调用tingyun-enable.bat。说干就干,把以上在bat中声明的变量全都添加到系统变量,并且在path中加上tingyun_profiler.dll的引用路径:

         配好环境变量,按理只要重启应用程序就可以了,由于我也不能肯定重启应用程序是否快捷有效,那就简单粗暴一点吧,重启机器:

        重启完后,再看听云的监听日志,奇迹出现了,竟然没再出现上面的报错了:

        再看一下听云的监控页面,已经能看到完整的监控视图了:

        结局是完美的,我又再一次填平了听云上的一个坑,上一次填过的坑是《如何在Windows下安装听云NodeJs探针》。我分享的虽然只是个小小的问题处理方案,但其实想说的是我们测试人员真的应该具备这种思考能力:很多人缺乏的不是测试技术、方法和工具,而是缺乏分析能力。

         需要说明的是,.Net Core监控本身是不成熟的,因此不是所有.Net Core项目都可以实现监控,而且本文也不是为了推广听云,如果对.Net Core的应用性能监控有兴趣,可以关注Skywalking-netcore(开源项目)。

        更正说明:写这篇文章时,听云探针还是旧版本的,现在不一定能遇到我上面所说的问题,请读者自行鉴别。core探针1.1版本是早期的beta初版,针对sdk1.1适配的,后来core的sdk更新到2.0后,老版本探针会出现GetAppName取不到的问题,新版本探针已经修复该问题。另外,在windows上需要同时安装.NET探针不是针对监控本身,而是因为core探针没有做图形界面,为了方便而使用.NET探针的启动管理界面管理core探针的启动禁用,就免去了启动脚本里添加windows启动命令的过程,不过仅对windows上的core探针有效。

相关实践学习
RocketMQ监控/告警一站式搭建应用
RocketMQ监控/告警一站式搭建演示
目录
相关文章
|
10天前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
3月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
65 0
|
3月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
37 0
|
3月前
|
开发框架 JavaScript .NET
ASP.NET Core的超级大BUG
ASP.NET Core的超级大BUG
40 0
|
1月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(持续更新)
C#/.NET/.NET Core拾遗补漏合集(持续更新)
|
1月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
60 0
|
2月前
|
开发框架 前端开发 .NET
福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!
为了便于大家查找,特将之前开发的.Net Core相关的五大案例整理成文,共计440页,32w字,免费提供给大家,文章底部有PDF下载链接。
32 1
福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!
|
2月前
|
算法 BI API
C#/.NET/.NET Core优秀项目和框架2024年1月简报
C#/.NET/.NET Core优秀项目和框架2024年1月简报
|
3月前
|
IDE 前端开发 JavaScript
【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
【1月更文挑战第26天】【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
|
3月前
|
算法 C#
C# .Net Core bytes转换为GB/MB/KB 算法
C# .Net Core bytes转换为GB/MB/KB 算法
34 0