使用 WCF 调用指标进行历史监控

“WCF 调用历史记录”部分为进入 AppFabric 托管的 .NET Framework 4 WCF 和 WF 服务的 WCF 调用显示历史指标。“已完成”和“错误”摘要指标提供已接收 WCF 调用的成功和失败的累积总数。您可以展开“WCF 调用历史记录”部分(方法是通过单击向下箭头或单击除“WCF 调用历史记录”标题栏内摘要指标链接之外的任意位置)以显示具有“已完成的调用”或“服务异常”的前五个服务。此操作还将显示“错误 - 按常见类型分组”的数量。您可以使用这些顶级摘要值及其按降序排列的相关详细视图,监控对服务的 WCF 调用历史记录。

WCF 调用历史记录指标

AppFabric 仪表板上的“WCF 调用历史记录”部分在阴影标题框中提供 WCF 服务调用的摘要视图,该框中显示标题“WCF 调用历史记录。以下指标为您提供了一个快速查看已成功完成和未完成的 WCF 调用的视图。

  • “已完成”摘要指标是收到的已完成而且未生成错误或异常(将生成OperationCompleted WCF 事件类型)的 WCF 调用的累计总数。

  • “错误”摘要指标是一个累计总数,表示在整个 WCF 堆栈发生的所有与 WCF 相关的异常和用户定义的错误。此计数包括(但不限于)因失败和错误调用的数量引发的错误。

  • “节流点击量”指标提供在适当作用域内部署的任何服务遇到的 WCF 节流期计数。当超过 WCF 节流阈值时,一个节流期开始。当吞吐量降到节流阈值的 70% 以下时,该节流将终止。

摘要指标下面是以下汇总特定类别的调用中服务数量的服务指标(以降序排列):

  • “已完成的调用 - 按服务分组(前 5 个)”- 指定时间内已完成 WCF 调用总数最高的前五个服务。

  • “服务异常 - 按服务分组(前 5 个)”- 指定时间内异常总数最高的前五个服务。

  • “错误 - 按常见类型分组”– 对服务异常或用户定义的错误的总数进行分组。服务异常计数还可以按两种最常见原因进一步细分:失败和错误的调用。服务异常也可能由失败或错误调用之外的问题导致,例如,激活错误。

仪表板内的**“已完成的调用 - 按服务分组(前 5 个)”“服务异常 - 按服务分组(前 5 个)”**列中并非包含了所有跟踪的 WCF 事件。显示在“前 5 个”列中的事件不包括从管理终结点和事件的内部 AppFabric 服务发出的事件。这两列中仅显示具有完整服务虚拟路径的事件。在 WCF 通道堆栈中生成率较高的事件(如回调和服务异常)不包含完整的服务虚拟路径。将从这些计数器中排除不包含完整服务虚拟路径的事件。这可以确保仅用户服务(而非用户应用程序)出现在这些计数器值中。

“跟踪的事件”页

您可以使用“跟踪的事件”页获得一个历史视图,在此视图中可查看在服务实例的特定 WCF 调用序列期间发生的事件。单击任何摘要指标(假定“已完成”),或单击“WCF 调用历史记录”部分中某列下的服务链接之一(假定“已完成的调用”列下)时,可进入“跟踪的事件”页。

“跟踪的事件”页

单击以从“AppFabric 仪表板”页转到“跟踪的事件”页的链接可用于筛选 WCF 调用和事件数据,以便在“跟踪的事件”页上枚举的信息特定于该原链接。例如,单击“服务异常 按服务分组(前 5 个)”列下的服务条目链接可进入“跟踪的事件”页。该页将枚举事件,并按服务事件类型(在这种情况下为 WCF 异常)和发出时间(与从 AppFabric 仪表板中选择的指标和时间段对应)进行筛选。

但是,您可以更改“查询摘要”框架中一个或多个字段(假定“事件”)的值,以更改初始输出,并对特定事件类型进行进一步的疑难解答。例如,如果进入“跟踪的事件”页的原始指标是“WCF 异常”,则可以将“事件”字段的值更改成为**“所有 WCF 事件”**,然后单击“运行查询”,可以看到不同的结果。

您可以使用以下选项筛选显示的事件类型:

  • 所有 WCF 事件 - 显示监控存储中可用的所有 WCF 事件,包括(但不限于)WCF 已完成的调用、WCF 异常、WCF 失败的调用和 WCF 错误调用。

  • WCF 已完成的调用 - 显示所有已完成的 WCF 调用。

  • 所有 WCF 错误 - 显示在错误级别发出的所有事件:服务异常和用户定义的错误事件。

  • WCF 异常 - 显示所有 WCF 服务异常。

  • WCF 用户定义的错误 - 显示在错误级别发出的所有用户定义的事件。

  • WCF 失败的调用 - 显示所有失败的 WCF 调用。

  • WCF 错误调用 - 显示所有错误的 WCF 调用。

  • WCF 节流点击量 - 显示 WCF 节流事件。每个事件代表一个节流期,并且在首次超出 WCF 节流阈值时将发出此事件。

  • 所有 WF 事件 - 显示所有 WF 事件。

有关详细信息,请参阅“跟踪的事件”页

通过监控 WCF 调用历史记录指标进行疑难解答

您可以收集前面的信息,并将其组织为一种疑难解答方法,方法是使用“WCF 调用历史记录”部分监控对 .NET Framework 服务的 WCF 调用。最初查看“WCF 调用历史记录”部分时,会看到 WCF 调用状态的高级别摘要视图。您可以快速查看在 WCF 调用级别是否存在因发生异常、失败或错误调用而导致的问题。如果“服务异常 - 按服务分组(前 5 个)”或“错误 - 按常见类型分组”摘要指标包含非零的值,则表示某处可能发生了问题。每个摘要指标都链接到“跟踪的事件”页,在此页中,可以明确查看初始“AppFabric 仪表板”页在更高级别汇总的 WCF 调用数据的详细指标。此原始数据为您提供了隔离 WCF 调用相关问题的详细信息。

例如,您使用“WCF 调用历史记录”部分在特定作用域监控对 WCF 或 WF 服务的 WCF 调用是否存在某些问题。如果发现“异常”摘要指标为非零值,则展开小组件将可以查看前五个服务的异常细分。这样您便能够集中于潜在问题数量最多的服务。通过转到枚举页并更改查询值,您可以切实了解具有特定问题的服务并指定详细信息。

假设“WCF 调用历史记录”小组件的“错误”摘要标题包含非零的值,表示发生了一些错误。您可以展开“WCF 调用历史记录”小组件,并在“服务异常 - 按服务分组(前 5 个)”列下,查看在选择的时间段内遇到最多异常的前五个服务。还可以在“错误 - 按常见类型分组”列下查看错误类型的细分:服务异常(大部分由失败或错误的调用所造成的)或用户定义的错误。若要获取有关错误或异常的详细信息,可以单击一个服务连接进入“跟踪的事件”页。

备注

如果您的服务 X 是前五个服务之一,则将显示在此处。在这种情况下,可以单击其服务链接进入“跟踪的事件”页。如果服务 X 不是前五项服务之一,则可以单击该部分中的任一指标转到“跟踪的事件”页。进入该页面后,您可以相应地修改现有查询(即,添加适当的服务名称条件)。

“跟踪的事件”页中填充了在 IIS 层次结构 X 的特定作用域内发生的异常历史视图。您可以从列表中(仍然在“跟踪的事件”页内)单击 WCF 异常事件之一,以在页面底部的详细信息窗格中显示该异常的详细信息。在详细信息窗格的“概述”、“跟踪的变量”或“错误”选项卡内查看有关异常的信息。“概述”选项卡包含有关事件的常规信息,如 “E2EActivityID”(用于端对端跟踪的相关性)、“EventType”“ExceptionTypeName”、**“EventSourceId”**和其他事件相关的信息。“跟踪的变量”选项卡显示存储在事件中的任何明确跟踪的变量的值。可用时,“错误”选项卡为您提供有关失败的异常信息。您可以使用此信息更好地了解并排除 WCF 异常。

如果需要有关 WCF 异常的其他上下文,可以右键单击列表中的事件,然后单击“查看跟踪的 WF 实例”。此功能仅可用于从工作流服务发出的 WCF 服务异常,因此,“跟踪的 WF 实例”页将为父实例显示所有可用事件。还可以从上下文菜单中为 WCF 调用选择“查看所有相关事件”。此操作将刷新“跟踪的事件”页,并为该页填充与初始事件相关的所有事件。

备注

若要使用“查看所有相关事件”选项,应用程序的监控级别必须设置成“端对端监控”或更高级别。此级别告诉监控基础结构收集将一个端对端活动 ID (E2EActivityId) 与另一个端对端活动 ID 相关联的传输事件。

此外,还可以查看“服务异常 - 按服务分组(前 5 个)”列,并查看“调用失败”或“调用错误”的数量。“调用失败”或“调用错误”总数构成了“WCF 异常”的总数,如部分摘要窗格中所示。单击任一选项的连接还可进入“跟踪的事件”页。根据您单击的链接,将分别看到“WCF 失败的调用”或“WCF 错误的调用”的事件枚举列表。如前文所述,在枚举列表中选择一个调用事件将会在详细信息窗格中产生详细信息。如果适用,还可以右键单击并选择“查看所有相关的事件”或“查看跟踪的 WF 实例”选项。

有关如何获取跟踪事件相关特定信息以帮助解决问题的信息,请参阅“跟踪的事件”页

显示 WCF 错误信息

仅当应用程序的监控级别至少配置为“端对端监控”级别时,AppFabric 才会显示基于 WCF 的错误信息。此级别捕获各服务之间的 WCF 消息流及 WF 和 WCF 事件之间的关系。对于该级别以下的监控级别(包括运行状况监控),以下部分中将不会显示任何基于 WCF 的错误信息。

  • “AppFabric 仪表板”页的“WCF 调用历史记录”部分中的“错误”或“服务异常”列。

  • “跟踪的事件”页上详细信息窗格中的“错误”选项卡。

  • “跟踪的事件”页上作为查询条件结果显示 WCF 事件的任何部分。

例如,“跟踪的事件”页上的“错误”选项卡使用 WCF 传输事件从与 WCF 失败或错误调用事件对应的服务模型异常事件中收集异常信息。如果将受监控的应用程序配置为使用低于端对端监控级别的监控级别,则不会捕获 WCF 传输事件。这将导致在详细信息窗格中的“错误”选项卡上不显示任何值。

如果您使用端对端监控级别捕获传输事件,但不想收集其他 WF 事件,以下步骤可以确保完成此任务:

  1. 打开位于 C:\Windows\Microsoft.NET\Framework(64)\v4.0.xxx\CONFIG\Web.config 的服务器根配置文件。

  2. <trackingProfile name="HealthMonitoring Tracking Profile"></trackingProfile> 条目之间(包括这两个条目)的代码复制到剪贴板。您将复制的示例数据如下所示:

    <trackingProfile name="HealthMonitoring Tracking Profile">
       <workflow activityDefinitionId="*">
    <workflowInstanceQueries>
    <workflowInstanceQuery>
       <states>
    <state name="Started" />
    <state name="Completed" />
    <state name="Terminated" />
    <state name="Canceled" />
    <state name="Unsuspended" />
    <state name="Persisted" />
    <state name="Aborted" />
    <state name="UnhandledException" />
       </states>
    </workflowInstanceQuery>
    </workflowInstanceQueries>
    
    <activityStateQueries>
    <activityStateQuery activityName="*">
    <states>
    <state name="Closed" />
    </states>
    </activityStateQuery>
    </activityStateQueries>
    
    <faultPropagationQueries>
       <faultPropagationQuery faultSourceActivityName="*" faultHandlerActivityName="*" />
    </faultPropagationQueries>
    
    <customTrackingQueries>
    <customTrackingQuery name="*" activityName="*" />
    </customTrackingQueries>
    </workflow>
    </trackingProfile>
    
  3. 编辑应用程序的 Web.config 文件。请确保 <system.serviceModel><tracking><profiles><trackingProfile> 的嵌套元素完整有效,将在以下步骤中粘贴该段代码内 <trackingProfile> 元素的内容。

  4. <system.serviceModel><tracking><profiles> 部分的开始位置,添加 <remove name=”EndToEndMonitoring Tracking Profile” />

  5. 在同一部分中刚刚添加的 remove 标记下面,粘贴在步骤 2 中复制到剪贴板的代码段。

  6. 将应用程序的 Web.config 文件中 HealthMonitoring Tracking Profile 替换为文本 EndToEndMonitoring Tracking Profile。保存此文件并退出编辑器。

  7. 使用“为应用程序配置 WCF 和 WF”对话框中的滑块控件,将“应用程序监控级别”更改成“端对端”。AppFabric 将从应用程序的 Web.config 文件中使用本地端对端跟踪配置文件条目,只需将运行状况监控级别的跟踪配置文件更改为端对端跟踪配置文件条目。

另请参阅

参考

“跟踪的事件”页

  2011-12-05