首页 > 编程语言 >【New Relic】给基于.NET Framework 4.0 的 exe 程序安装New Relic

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

时间:2024-06-18 16:13:20浏览次数:26  
标签:exe Relic Agent Transaction New NET

由于.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 有时候会有延迟。

标签:exe,Relic,Agent,Transaction,New,NET
From: https://www.cnblogs.com/HDK2016/p/18254539

相关文章

  • 禁止启动多个winform项目进程程序.exe
    1,在winform项目中 Program.cs文件里添加usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Linq;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceSMProjectSysetm{internalstaticclassProgram......
  • electron打包angular为exe程序,比较新版本的angular和electron
    一。先创建一个angular项目,具体安装步骤可以查看angular官网介绍,这里不做过多介绍,(https://angular.cn/guide/setup-local)这是官网安装地址,有可能地址会访问不了:1.全局安装AngularCLI:npminstall-g@angular/cli   2.创建一个名称为test的项目:ngnewtest二。安......
  • Fatal error in launcher: Unable to create process using ‘“python.exe“ “\pyt
    1.设置环境变量将pip和python的路径加入环境变量中2.在cmd中,查看是否存在python,pip等3.把应用安装程序中的python.exe和python3.exe关闭4.正常使用详情请看微软的常见问题,链接如下:关于在Windows上使用Python的FAQ|MicrosoftLearn......
  • 启动应用程序出现nbtstat.exe找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个nbtstat.exe文件(挑选合适的版本文件)把它放......
  • 启动应用程序出现NetProj.exe找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个NetProj.exe文件(挑选合适的版本文件)把它放......
  • 启动应用程序出现notepad.exe找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个notepad.exe文件(挑选合适的版本文件)把它放......
  • 启动应用程序出现nslookup.exe找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个nslookup.exe文件(挑选合适的版本文件)把它......
  • CF1267G Game Relics
    GameRelics首先猜一下(在\(x\lec_i\)的条件下),应该先抽奖,后剩下的全买考虑已经拥有了\(k\)个圣物,再又有一个圣物的期望代价为\(E(X)=\frac{n-k}{n}x+\frac{k}{n}(E(X)+\frac{x}{2})\)\(E(X)=x(1+\frac{k}{2(n-k)})\)随着随机选择,设还剩\(k\)个圣物没有,其代价和为......
  • wine-在mac上运行exe执行文件
    TouseWinetoruna.exefileonaMac,followthesesteps:Step1:InstallHomebrew(ifnotalreadyinstalled)HomebrewisapackagemanagerformacOSthatsimplifiestheinstallationofsoftware.OpenTerminal.InstallHomebrewbyrunningthefollowing......
  • exercism查看他人答案
    exercism.org正常情况下要求提交答案并测试通过才能看到其他人的答案,如果想直接参考他人答案可以在url后面添加/solutions即可。问题页面:https://exercism.org/tracks/rust/exercises/poker答案页面:https://exercism.org/tracks/rust/exercises/poker/solutions也可以参考这个......