gpt4 book ai didi

.net - 使用 NewRelic 对 .Net 中的泛型类进行自定义检测

转载 作者:行者123 更新时间:2023-12-02 04:27:51 25 4
gpt4 key购买 nike

是否有任何方法可以使用新的遗物自定义检测来检测 .Net 中的通用类?我像为非泛型类所做的那样添加了仪器配置,但没有运气。

最佳答案

您将需要使用 IL 签名。确定签名的最佳方法是在 newrelic.config 中将 New Relic 日志记录设置为“全部”,运行您的应用程序,然后在相应的探查器日志中搜索方法名称(确保完成后将日志记录设置回 info) .

使用签名您可以构建 Custom InstrumentationCustom Transactions .

使用示例代码:

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var t = new Test<int>();
while (true)
{
StartTransaction();
t.mymethod(100);
}
}
static void StartTransaction()
{
Console.WriteLine("Start Transaction");
System.Threading.Thread.Sleep(1100);
MethodA();
}
static void MethodA()
{
Console.WriteLine("MethodA");
}
}
class Test<T>
{
public void mymethod(T t) {
var k = t;
System.Threading.Thread.Sleep(1000);
}
}
}

查看探查器日志 NewRelic.Profiler.[pid],其中 [pid] 对应于 w3wp 进程或运行应用程序的其他进程,您将看到以下内容:

[Trace]Possibly instrumenting: (Module: C:\Users\me\Documents\Visual Studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe, AppDomain: ConsoleApplication1.exe)[ConsoleApplication1]ConsoleApplication1.Test`1.mymethod

需要不带扩展名 ConsoleApplication1 的 AppDomain 和类/方法名称 ConsoleApplication1.Test`1.mymethod 来构建自定义检测/交易。

示例(自定义事务):

<?xml version="1.0" encoding="utf-8"?>
<extension xmlns="urn:newrelic-extension">
<instrumentation>
<tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" metricName="Background/MyTaskRunner">
<match assemblyName="ConsoleApplication1" className="ConsoleApplication.Test`1">
<exactMethodMatcher methodName="mymethod" />
</match>
</tracerFactory>
</instrumentation>
</extension>

一般来说,您不需要在检测文件中指定方法参数。

关于.net - 使用 NewRelic 对 .Net 中的泛型类进行自定义检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25554810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com