听云监控.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探针有效。

相关实践学习
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
目录
相关文章
|
16天前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:<https://github.com/khellang/Scrutor>
37 5
|
2月前
|
存储 开发框架 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`,优化了内存使用和序列化速度。
|
1月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
42 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
24天前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
26 3
|
3月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
3月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
114 3
|
2月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
51 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
82 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
60 0