【New Relic】给基于.NET Framework 4.0 的 exe 程序安装New Relic

news/2024/9/21 16:36:16

由于.NET Framework 4.0 是比较古老的版本,只有New Relic 7.0以下的版本才会支持.NET Framework 4.0的引用程序。 Technical support for .NET Framework 4.0 or lower

 

你可以参考这个官方Install New Relic to Monitor your App的文档。

 

1. 创建New Relic 账号

创建一个New Relic 账号,并且获取你的New Relic License key,由于我的程序不是托管到IIS的web程序,所以使用Ingest-License类型的Key.

 

你可以参考官方的 New Relic API keys 或是直接访问 API keys UI page . 来查看你自己的License Key.

 

2. 安装new relic agent

通过这个页面 https://download.newrelic.com/dot_net_agent/6.x_release/ 下载win-x64-6.27.0.0的版本。

这里我下载的是newrelic-agent-win-6.27.0.0-scriptable-installer.zip 并解压缩

用管理员权限打开命令行窗口工具,执行下面命令

install.cmd -LicenseKey your_license_key -InstrumentAll

将 your_license_key 替换为你自己的 license key。 由于默认安装的New Relic Agent是不监听非IIS程序的,所以要加上 -InstrumentAll 让Agent能够监听所有程序。

 

安装完成后,你的电脑会多出来两个Agent的目录,C:\ProgramData\New Relic 和 C:\Program Files\New Relic文件夹。

 

3. 设置 agent目录权限

在C:\ProgramData\New Relic下面,给.Net Agent目录加上所有人权限。

 

4. 更改new relic配值

用记事本打开本地的C:\ProgramData\New Relic\.NET Agent\newrelic.config配置文件。

 

观察service上的licenseKey是否正确,并且增加 sendDataOnExit="true" sendDataOnExitThreshold="1000"的配置。

在application的name标签下指定程序的名称,这个名称后面会被推送到NewRelic的Dashboard上。

在Instruction 的application标签下指定要运行的EXE。

  <service licenseKey="your_license_key" ssl="true" sendDataOnExit="true" sendDataOnExitThreshold="1000"/><application><name>Your_Application_Name</name></application><instrumentation><applications><application name="your_exe_folder\your_application.exe" /></applications></instrumentation>

下面是我本地的New Relic 配置

<?xml version="1.0"?>
<!-- Copyright (c) 2008-2017 New Relic, Inc.  All rights reserved. -->
<!-- For more information see: https://newrelic.com/docs/dotnet/dotnet-agent-configuration -->
<configuration xmlns="urn:newrelic-config" agentEnabled="true"><service licenseKey="your_license_key" ssl="true" sendDataOnExit="true" sendDataOnExitThreshold="1000"/><application><name>AudaParts Job7</name></application><instrumentation><applications><application name="your_exe_folder\your_application.exe" /></applications></instrumentation><log level="info" /><transactionTracer enabled="true" transactionThreshold="apdex_f" stackTraceThreshold="500" recordSql="obfuscated" explainEnabled="false" explainThreshold="500" /><crossApplicationTracer enabled="true" /><errorCollector enabled="true"><ignoreErrors><exception>System.IO.FileNotFoundException</exception><exception>System.Threading.ThreadAbortException</exception></ignoreErrors><ignoreStatusCodes><code>401</code><code>404</code></ignoreStatusCodes></errorCollector><browserMonitoring autoInstrument="true" /><threadProfiling><ignoreMethod>System.Threading.WaitHandle:InternalWaitOne</ignoreMethod><ignoreMethod>System.Threading.WaitHandle:WaitAny</ignoreMethod></threadProfiling>
</configuration>
View Code

记得将liceseKey,name 和 Application name替换为你自己的数据。

 

5. 添加Extentions

由于我们想要New Relic 监控非IIS的托管的程序,在上面的配置中,我们已经指定要监控的exe程序 your_exe_folder\your_application.exe 。现在我们需要告诉New Relic 程序需要监控EXE中的那些数据,这就是Extension的作用。Extension都是xml文件,并且放置在C:\ProgramData\New Relic\.NET Agent\Extensions目录下,我们只需要将编写好的Extension放到该目录下即可。

 

比如我们EXE的代码中有如下的函数需要监控

namespace Order.Core.Business
{public partial class OrderManager{public void GenerateOrdersAutomatically(UserManager objUser, bool quotationAuction = false){//some code in here
    }}
}

 

如果上面这段程序编译出来的代码dll的程序集名称是 Order.Core 的话,那么只需要参考官方文档给的格式 Create transactions via XML (.NET) 填写上数据就可以了

<?xml version="1.0" encoding="utf-8"?>
<extension xmlns="urn:newrelic-extension"><instrumentation><!-- Define the method which triggers the creation of a transaction. --><tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" metricName="TransactionName"><match assemblyName="AssemblyName" className="NameSpace.ClassName"><exactMethodMatcher methodName="MethodName" /></match></tracerFactory><!-- Define the method which triggers the creation of a transaction. --><tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" metricName="TransactionName2"><match assemblyName="AssemblyName" className="NameSpace.ClassName2"><exactMethodMatcher methodName="MethodName2" /></match></tracerFactory><!-- Define the method which triggers the creation of a transaction. --><tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" metricName="TransactionName3"><match assemblyName="AssemblyName" className="NameSpace.ClassName3" minVersion="1.0.0" maxVersion="99.99.99"><exactMethodMatcher methodName="MethodName3" /></match></tracerFactory></instrumentation>
</extension>

 

那么我的案例的extension xml就应该是如下的格式

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2020 New Relic Corporation. All rights reserved.
SPDX-License-Identifier: Apache-2.0 -->
<extension xmlns="urn:newrelic-extension"><instrumentation><tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory"metricName="GenerateOrdersAutomatically"><match assemblyName="Order.Core"className="Order.Core.Business.OrderManager"><exactMethodMatcher methodName="GenerateOrdersAutomatically" /></match></tracerFactory></instrumentation>
</extension>

 

注意,extension 不需要给每个方法都配置,一般只需要按照Transaction分类后的,配置每个Transaction的入口方法就可以了。New Relic会自动追钟每个函数下面调用的其它函数和数据库(如果有调用的数据库的话)。没有必要给Console 程序 Main方法配置Extension,因为Main方法太宽泛了,如果将Main配置成一个单独的Transaction, 那么这个Transaction下面就会囊括所有的方法调用,这样就失去了Transaction分类监控的意义了。

 

 

昨晚上面这些配置的话,New Relic的监控就应该已经启动了。

 

6. 观察日志

在C:\ProgramData\New Relic\.NET Agent\Logs目录下面,有New Relic的所有运行日志。如果没有问题的话,你应该可以看到Metric harvest starting, Reporting to: 这些信息。

 

 

你可以直接点开Reporting to后面的连接,会跳转到New Relic web网页上,上面就可以看到详细的信息。

 

7. 观察New Relic Dashboard

打开New Relic Web,将 Transaction Type 选成  Non-Web  就可以查看我们监控的exe的数据啦

 

从一个Transaction点进去,你可以看到整个调用流程,调用每个函数花费的时间,和数据库的SQL和花费时间等等。还可以观察错误日志。

 

 

 

 

 

有时,Agent 上传数据到New Relic Web 有时候会有延迟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/46891.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

02-Excel初阶操作-学习笔记

数据透视表专题续 利用筛选字段切换数据场景:在数据透视表中显示各个所属地区每个月筛选出宠物用品类别,销售部门为三科的发生额,并在会议时展示,样例如下所示。具体操作step1:制作数据透视表 点击任意单元格——插入选项卡——数据透视表——将“订购日期”拖拽到行字段,…

开始预习数据库第四天中

你怎么知道我马上要考的数据库(4) 开始时间 2024-06-18 13:50:10 结束时间 2024-06-18 15:35:38 前言:中午休息结束,追上了一把十剪纸,但是确实打不过九吉星,主要是发财树搞钱太多了,实在打不过两张以上的三星五费。总结:去消社买饮料去,休息会,下半场复习数学建模,…

schema-change-implement

TiDB 的异步 schema 变更实现 背景 现在一般数据库在进行 DDL 操作时都会锁表,导致线上对此表的 DML 操作全部进入等待状态(有些数据支持读操作,但是也以消耗大量内存为代价),即很多涉及此表的业务都处于阻塞状态,表越大,影响时间越久。这使得 DBA 在做此类操作前要做足…

Xilinxddr3 mig ip核:基于native接口的ddr3读写控制

一、MIG IP核读写时序如下图是7系列的MIG IP核结构框图。左侧是用户接口,即用户(FPGA)同MIG交互的接口,用户就必须掌握这些接口才可以使用该IP核。将用户侧的信号分类如下图。其中的输入输出是相对于MIG IP核的,即对用户侧来说是相反的。写命令操作时序如下,其中,写操作…

Google 新 AI 为视频生成配乐和对白;Runway 发布 Gen-3 视频生成模型丨 RTE 开发者日报 Vol.226

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点…

linux内存管理(十一)- 页面迁移

这里有一篇很好的博客宋宝华:论Linux的页迁移(Page Migration)完整版-CSDN博客 为什么需要页面迁移?试想系统在经过长时间运行,内存块趋于碎片化,想要分配一块大的连续内存已经不可能了。此时并非没有足够的内存,而只是内存碎片化。这个时候如果可以是已经分配的内存聚集…

汽车生产车间PMC组态画面应该怎么设计

通常我们所说的汽车制造四大工艺指的是:冲压、焊装、涂装、总装。一般来说,在汽车制造工厂,这四大工艺分别对应四大车间。本文结合一些实际应用案例,向大家展示一下 TopStack 在汽车制造业各工艺车间中用到的一些组态监控画面。通常我们所说的汽车制造四大工艺指的是:冲压…