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

本文涉及的产品
云监控,每月短信1000条
简介: 听云算是较早推出.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探针有效。

相关实践学习
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
目录
相关文章
|
3天前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
13天前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
13天前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
34 3
|
1月前
|
开发框架 NoSQL .NET
利用分布式锁在ASP.NET Core中实现防抖
【9月更文挑战第5天】在 ASP.NET Core 中,可通过分布式锁实现防抖功能,仅处理连续相同请求中的首个请求,其余请求返回 204 No Content,直至锁释放。具体步骤包括:安装分布式锁库如 `StackExchange.Redis`;创建分布式锁服务接口及其实现;构建防抖中间件;并在 `Startup.cs` 中注册相关服务和中间件。这一机制有效避免了短时间内重复操作的问题。
|
2月前
|
开发框架 监控 .NET
开发者的革新利器:ASP.NET Core实战指南,构建未来Web应用的高效之道
【8月更文挑战第28天】本文探讨了如何利用ASP.NET Core构建高效、可扩展的Web应用。ASP.NET Core是一个开源、跨平台的框架,具有依赖注入、配置管理等特性。文章详细介绍了项目结构规划、依赖注入配置、中间件使用及性能优化方法,并讨论了安全性、可扩展性以及容器化的重要性。通过这些技术要点,开发者能够快速构建出符合现代Web应用需求的应用程序。
36 0
|
2月前
|
缓存 数据库连接 API
Entity Framework Core——.NET 领域的 ORM 利器,深度剖析其最佳实践之路
【8月更文挑战第28天】在软件开发领域,高效的数据访问与管理至关重要。Entity Framework Core(EF Core)作为一款强大的对象关系映射(ORM)工具,在 .NET 开发中扮演着重要角色。本文通过在线书店应用案例,展示了 EF Core 的核心特性和优势。我们定义了 `Book` 实体类及其属性,并通过 `BookStoreContext` 数据库上下文配置了数据库连接。EF Core 提供了简洁的 API,支持数据的查询、插入、更新和删除操作。
81 0
|
2月前
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
|
2月前
|
开发框架 监控 .NET
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
|
1月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
29 7
|
1月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
40 0