APM Insight .NET Agent


Applications Manager的.NET代理使您可以完美洞察.NET Web事务的工作方式。帮助您快速深入了解问题的根本原因。现在,无论源于何处,您都可以解决.NET应用程序的性能下降问题。只需下载最新的.NET Agent并将其部署在您的应用程序服务器中即可。

点击下面的链接以了解有关.NET代理的工作及其用法的更多信息:


APM Insight .NET代理的工作

使用.NET概要分析API插入应用程序中的.NET代理  收集数据(指标/跟踪),并通过进程间通信(IPC)将其发送到代理服务。代理服务又从.NET代理接收数据,并通过计划程序将其发送到Applications Manager。

安装代理

安装要求

  • 运行Microsoft .NET Framework  3.0版及更高版本的应用程序

  • IIS 6.0及更高版本。

安装说明

  • 点击APM Insight标签。

  • 点击.NET选项卡以下载文件。

  • 点击下载以在您的应用程序服务器中部署代理。

  • 运行.msi文件。这将打开选择安装文件夹窗口。

  • 点击浏览,然后选择文件夹路径以安装.NET Agent。点击下一步

  • 如果要启动代理,请在下一个窗口的启动选项下,选中安装后启动代理复选框。点击下一步 开始安装代理。

  • 安装完成之前,将出现.NET代理配置窗口。配置Applications Manager的主机和端口以及其他apdex设置。

  • 点击保存按钮以完成安装。

现在,.NET代理已准备就绪,并且将监控服务器上运行的所有ASP.NET应用程序(例如WCF)。几分钟后,收集的数据应该在Applications Manager的Web客户端的apm-insight选项卡中可用。

注意:在安装APM Insight .NET代理之前,请卸载所有第三方探查器。


管理代理

启动.NET代理

  • 如果在安装过程中未选中启动选项对话框中的安装后启动代理复选框,请从Windows服务管理手动启动代理服务。服务名称是ManageEngine .NET Agent。

编辑.NET代理配置

  • 点击开始菜单中ManageEngine .NET代理文件夹中的编辑配置,以编辑代理配置。这将打开.NET代理配置对话框。进行所需的更改后,点击保存以更新配置文件。

停止.NET代理

  • 您可以从Windows服务管理手动停止代理服务。这将关闭应用程序和服务之间的IPC连接;从系统环境变量中删除事件探查器变量并禁用事件探查器。它还会重置IIS。

  • 您可以按照上面启动.NET代理中所述手动重新启动代理

APM Insight配置

  • 这有助于您微调配置以跟踪基于Web的事务。可以在*.conf文件中配置这些设置。

  • 请参阅此处以了解有关APM Insight配置选项的信息。

卸载代理

  • 从services.msc停止代理
  • 您可以从开始菜单中卸载代理。从开始菜单中的ManageEngine .NET Agent文件夹中点击卸载.NET Agent以卸载该代理。

注意:确保设置停机时间,因为它可能会重新启动IIS服务器。


使用应用程序过滤器

您可以选择要在IIS服务器中监控的单个应用程序,并在控制台上查看单个应用程序指标。使用此新功能,您可以灵活地添加或删除对IIS服务器下托管的应用程序的监控。

在设置对话框中过滤Web应用程序

对于Agent版本2.5及更高版本

  • 启动编辑配置窗口(开始菜单>编辑配置)。此对话框在安装过程中自动启动。

  • 如果IIS中的任何Web应用程序中都存在apminsight.appname密钥,则对话框将提供一个删除它们的选项。

  • 转到AppFilters标签。

  • 选择使用应用过滤器。

  • 选择要监控的应用程序。默认情况下,将选择所有应用程序进行监控。

  • 在Apm Insight键列下的文本框中为应用程序提供唯一的名称。这不会影响IIS。

  • 点击保存

注意:对于代理版本2.3到2.5,

  • 在启动编辑配置窗口之前,请停止.NET Agent Windows服务。

  • 保存设置后,启动.NET代理。

对于版本低于2.3的代理

1. 2.0到2.3版本

  • 停止.NET Agent Windows服务(在安装过程中,请跳过此步骤)。

  • 从(开始菜单>编辑配置(x64或x86)启动启动编辑配置窗口。此对话框在安装过程中自动启动。

  • 如果IIS中的任何Web应用程序中都存在apminsight.appname密钥,则对话框将提供一个删除它们的选项。从版本2.0开始,此依赖项已删除。

  • 转到AppFilters标签。

  • 选择使用应用过滤器。

  • 选择要监控的应用程序。默认情况下,将选择所有应用程序进行监控。

  • 在 Apm Insight键列下的文本框中为应用程序提供唯一的名称。这不会影响IIS。

  • 点击保存

  • 启动.NET Agent Windows服务。

低于2.0的版本

  • 启动编辑配置窗口(开始菜单->编辑配置(x64或x86))。请注意,此对话框会在安装过程中自动启动。

  • 转到AppFilters标签,然后选择使用App过滤器。

  • 如果必须分别监控应用程序,请在应用程序名称组框下的常规选项卡中选中多监视器复选框。

  • 选择使用ApmInsight键选项。这会将apminsight.appname密钥添加到 appSettings部分下相应Web.config文件中的所选应用程序。

  • 选择要监控的应用程序。默认情况下,将选择所有应用程序进行监控。

  • 在 Apm Insight键列下的文本框中为应用程序提供唯一的名称。(如果未选择步骤3中的使用ApmInsight键,则该列将被隐藏)

  • 点击保存

  • 重新启动.NET Agent Windows服务以进行更改。 

手动过滤Web应用程序

对于Agent 2.3及更高版本

代理配置中要进行的更改

  • 转到APM Insight .NET代理安装文件夹。

  • 打开DotNetAgent文件夹。

  • 打开appfilter.conf文件并编辑以下键,

 

    • use.app.filters=true (default)

    • use.apminsight.appnames=true (default is false)

    • include.app.names={json formatted appnames}

      eg: include.app.names = { "Default Web Site/" : "ServerRoot", "Default Web Site/Services/wcf1" : "Service1", ... }

  • 复制此appfilter.conf文件并将其粘贴到以下位置:

    • %WINDIR%\\ProgramData\\DotnetAgent

       

    对于Windows Server 2003,相应的路径将位于

    • %WINDIR%\\Documents and Settings\\All Users\\Application Data\\DotNetAgent\\

    如果是多监视器,则上述位置中的所有子文件夹

  • 重新启动.NET Agent Windows服务以进行更改。

 


事务分组

.NET代理的配置步骤:

  • 打开编辑配置窗口,选择事务合并选项卡。添加要合并的事务模式。

  • 请参阅此处使用模式示例对事务进行分组(请参阅#tm_samples)。 

手动执行事务合并模式配置的步骤:

  • 安装代理后,转到APM Insight .NET代理安装文件夹。

  • 打开DotNetAgent文件夹。

  • 打开transaction_merge_patterns.conf并添加此处提到的模式(请参阅此处的示例)。

  • 复制此transaction_merge_patterns.conf文件,并将其粘贴到下面提到的位置。

    • %WINDIR%//ProgramData//DotnetAgent//

对于Windows Server 2003,将使用相应的路径,

  • %WINDIR%//Documents and Settings//All Users//Application Data//DotNetAgent//

对于64位代理

%WINDIR%//ProgramData//DotnetAgent//

对于Windows Server 2003,相应的路径将位于

%WINDIR%//Documents and Settings//All Users//Application Data//DotNetAgent//

对于32位代理

%WINDIR%//ProgramData//DotnetAgent//

对于Windows Server 2003,相应的路径将位于

%WINDIR%//Documents and Settings//All Users//Application Data//DotNetAgent//

In case of multi-monitors, all sub folders for every application in the above locations.

We can add, remove or comment the patterns at any point of time in the configuration file.

事务合并模式示例

以下模式将与所有以aspsite/account /开头的事务匹配,并将其重命名为account。

aspsite/account/*=account

以下模式将与所有以aspsite /开始并以/ basicdetails结束的事务匹配。它们将被重命名为basicdetails。

aspsite/*/basicdetails=basicdetails

上面的模式将与所有以/ educationdetails结尾的事务匹配,并将其重命名为educationdetails。

*/educationdetails=educationdetails 


后台事务

利用Applications Manager,用户可以监控Web应用程序中运行的后台进程和其他作业。

  • 后台跟踪阈值  -您可以启用APM Insight代理来跟踪应用程序服务器中发生的后台事务。它将收集后台事务缓慢的记录。如果后台事务超过已配置的后台跟踪阈值,则认为后台事务很慢。

  • 采样计数器  -例如,如果您将采样因子值指定为5,则代理将跟踪五分之一的后台事务。


使用.NET代理API进行自定义检测

APM Insight .NET代理API有助于跟踪Web应用程序中用户定义的方法。它有助于检测Web应用程序DLL中的指定方法以监控其性能。它也可以用来跟踪代码的特定部分。

添加API的步骤

1. 将对DotNetAgent.Api.dll库的引用添加   到您的Web应用程序项目。

2. API dll位于API管理工具的安装位置  (C:\ Program Files(x86)\ APM Insight\APM Insight.NET Agent\AgentApi\DotNetAgent.Api.dll)中

注意: 对于低于v2.3的代理,请从(C:\ Program Files\APM Insight\APM Insight .NET Agent(<x64或x86>)\ AgentApi\DotNetAgent.Api.dll)中找到API dll

3. API包含一个名为CustomTracker的类,  用于跟踪方法的性能。

CustomTracker类及其方法
 
Constructors

CustomTracker(输入thisType)

thisType-当前类或基类的类型。

例如:CustomTracker dotNetAgentCustomTracker = new CustomTracker(this.GetType()); >

CustomTracker(输入thisType,字符串methodName)

thisType-当前类或基类的类型。

methodName-要监控的方法的名称。

例如:CustomTracker dotNetAgentCustomTracker = new CustomTracker(this.GetType(), BasicDetails);

CustomTracker(输入thisType,字符串className,字符串methodName)

thisType-当前类或基类的类型。

className-要监控的类的名称。

methodName-要监控的方法的名称。

例如:CustomTracker dotNetAgentCustomTracker = new CustomTracker(this.GetType(), EmpController, BasicDetails);

CustomTracker.StartTracker(输入thisType,字符串className,字符串methodName)

此方法用于启动自定义方法的指标收集。

它不是必需的,因为它是在构造函数本身中调用的。

CustomTracker.StopTracker()

指标收集将在调用此方法时停止。

始终在finally块中调用它。

4.在方法的开头创建CustomTracker类的实例,并在方法的末尾调用StopTracker()。

5.我们可以使用using {}块创建CustomTracker实例。自动处置对象时,将调用StopTracker()方法。

 


示例 1:使用 using语句:

public ActionResult BasicDetails(int id = 0)
{

AdminBL objadmin = new AdminBL();

using(CustomTracker customTracker = new CustomTracker(base.GetType(),"BasicDetails"))

{

    ASPSite.BL.MYSQLReference.BasicDetails basicDetails = objadmin.getBasicDetails(id);

      EmpApp.Models.BasicDetails basic = getBasicDetailsModel(basicDetails);

      return View(basic);

     }

}


示例 2:在try finally块内使用StartTracker和StopTracker:

public ActionResult BasicDetails(int id = 0)
{

    CustomTracker customTracker = null;

    AdminBL adminBL = new AdminBL();

    try

     {

        customTracker = new CustomTracker(base.GetType(),"BasicDetails");

        ASPSite.BL.MYSQLReference.BasicDetails basicDetails = adminBL.getBasicDetails(id);

        EmpApp.Models.BasicDetails basicDetailsModel = getBasicDetailsModel(basicDetails);

     }

    finally

    {

    customTracker.StopTracker();

    }

return View(basicDetailsModel);

}


示例 3: 使用CustomTracker检测部分代码

public ActionResult BasicDetails(int id = 0)
{

      AdminBL adminBL = new AdminBL();

      using(CustomTracker customTracker = new CustomTracker(base.GetType(),"BasicDetails"))

    {

//Instrumenting part of a code. To check the time taken by the function FetchAllEmployees and the SQL calls made from this function.

using(CustomTracker fetchAllEmpTracker = new CustomTracker(base.GetType(),"FetchAllEmployees"))

          {

     FetchAllEmployees();

            }
ASPSite.BL.MYSQLReference.BasicDetails basicDetails = objadmin.getBasicDetails(id);

EmpApp.Models.BasicDetails basic = getBasicDetailsModel(basicDetails);
}

return View(basicDetailsModel);

注意:

  1. 如果在CustomTracker中未提供方法名称或类名称,它将尝试自行获取当前方法名称和类名称。
  2. 默认情况下,将在构造函数中调用StartTracker()方法。
  3. 如果未安装代理或代理服务已停止,则调用的方法将无效。

诊断工具

APM Insight .Net监控还包含一个名为HealthMonitor.exe的诊断工具。它监控服务器中运行的代理的健康状况。健康状况监视器是一种自我诊断工具,旨在提供代理设置的快照,用于识别和解决代理中经常遇到的配置问题。作为功能,它可以从APM Insight .NET代理版本1.8及更高版本中获得。可以在 APM Insight .NET代理文件夹下的开始菜单中找到它。点击该工具左下角的按钮以收集日志并创建一个zip文件,以提供更好的故障排除和支持。

使用APM Insight .NET代理健康状况监视器进行故障排除

使用HealthMonitor,您可以:

  • 创建诊断zip文件  -健康状况监视器获取支持团队分析问题所需的所有代理日志和其他系统信息。您还可以选择附加事件日志信息。要包括事件日志以及诊断zip,请 通过带有 eventlogs选项的命令提示符运行  HealthMonitor.exe(位于安装目录\ HealthMonitor文件夹中)。这需要管理权限。

  • 查看服务设置  -代理服务模式(即,单实例/多实例),APM代理服务状态(正在运行/已停止)和日志级别。

  • 检查网络连接  -为了成功进行通信,APM Insight代理必须能够连接到服务器。

  • 检查应用程序过滤器  -如果应用了应用程序过滤器,请验证是否监控了正在运行的应用程序。请参阅应用程序过滤器指南

  • 监控工作进程  -如果没有工作进程显示为正在运行,请执行事务并重试。 

    注意:在低于v2.3的Agent中,如果仍不计算辅助进程,则可能是由于Agent的位数所致。APM Insight代理和工作进程应包含相同的位。(即,用于32位应用程序的32位代理,以及用于64位应用程序的64位代理)。

  • 验证监视器状态  - 监视器的状态(即,被管/不被管/已删除/许可到期等)将显示在监视器名称下。对于单个实例,将仅列出一个监视器。对于多个实例,将列出该代理创建的所有监视器。

  • 验证分析器状态  -为了成功检测IIS应用程序,必须将分析器加载到工作进程中。如果加载失败,则必须执行IIS重置才能重新加载探查器。另外,请确保未在同一台计算机上安装其他一些配置文件代理(即,一台计算机中只能有一个活动的探查器)。

注意:

  • 如果出现问题,请在创建诊断zip之前确保代理日志级别为 DEBUG时完成某些事务。这将帮助我们更快地缩小问题范围。
  • 要包括事件日志以及诊断zip,请选中创建诊断zip文件按钮下方的事件日志复选框。这需要管理权限。

 

代理性能报表

APM Insight .NET Agent经过优化,对应用程序的影响最小。要了解.NET Agent的资源利用率,请参考此处