如何使用PowerShell将ETW提供程序添加到现有服务结构集群?

时间:2016-08-25 06:02:03

标签: powershell azure-service-fabric azure-diagnostics

我已经使用azure诊断创建了一个服务结构集群,它目前正在运行,我的服务已部署到该集群中。我的服务中有一个ETW EventSource,我想开始收集事件,因为我的服务代码已经使用此事件源来编写我的服务相关事件。由于群集已经启用了azure诊断并且我的服务已经部署到该群集中,我认为使用此服务结构群集中的事件源更新ETW提供程序很简单。这是导出的模板(仅显示与azure诊断相关的部分):

{
"properties": {
    "publisher": "Microsoft.Azure.Diagnostics",
    "type": "IaaSDiagnostics",
    "typeHandlerVersion": "1.5",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "WadCfg": {
            "DiagnosticMonitorConfiguration": {
                "overallQuotaInMB": "50000",
                "EtwProviders": {
                    "EtwEventSourceProviderConfiguration": [
                        {
                            "provider": "Microsoft-ServiceFabric-Actors",
                            "scheduledTransferKeywordFilter": "1",
                            "scheduledTransferPeriod": "PT5M",
                            "DefaultEvents": {
                                "eventDestination": "ServiceFabricReliableActorEventTable"
                            }
                        },
                        {
                            "provider": "Microsoft-ServiceFabric-Services",
                            "scheduledTransferPeriod": "PT5M",
                            "DefaultEvents": {
                                "eventDestination": "ServiceFabricReliableServiceEventTable"
                            }
                        },
                        {
                            "provider": "Bb.ServiceFabric.Infrastructure.Container",
                            "scheduledTransferPeriod": "PT1M",
                            "DefaultEvents": {
                                "eventDestination": "ServiceFabricReliableServiceEventTable"
                            }
                        }
                    ],
                    "EtwManifestProviderConfiguration": [
                        {
                            "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
                            "scheduledTransferLogLevelFilter": "Information",
                            "scheduledTransferKeywordFilter": "4611686018427387904",
                            "scheduledTransferPeriod": "PT5M",
                            "DefaultEvents": {
                                "eventDestination": "ServiceFabricSystemEventTable"
                            }
                        }
                    ]
                }
            }
        },
        "StorageAccount": "sfdgsmsraghuplaygrou6827"
    }
},
"name": "VMDiagnosticsVmExt_vmNodeType0Name"
}

我想更新以下EtwProviders / EtwEventSourceProviderConfiguration以包含以下部分(因为MyCompany.MyServices.MyStatelessService是我的服务' s EventSource的名称):

{
"provider": "MyCompany.MyServices.MyStatelessService",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
    "eventDestination": "ServiceFabricReliableServiceEventTable"
}
}

以下是我的问题:

  1. 这是将ETW提供程序/ EventSource(从我的服务)插入现有群集(已经启用了azure诊断)的正确方法吗?
  2. 我可以使用powershell命令添加此事件源(作为ETW事件源提供程序)吗?
  3. 如果是这样,那么确切的powershell命令是什么(使用上面代码片段中的所有信息)?
  4. 注意:我使用的是.net framework 4.5.2。

1 个答案:

答案 0 :(得分:2)

上面添加的配置似乎都很好。请注意,对于ETWProviders,EventDestination不能包含连字符( - ),你的不是这样你就可以了。

要更新Windows Azure诊断(WAD)代理配置,您可以在Visual Studio中使用PowerShell或Cloud Explorer。

对于前者,只需更新ARM模板并使用New-AzureRmResourceGroupDeployment cmdlet。有关详细信息,请参阅此处:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-diagnostics-how-to-setup-wad/#update-diagnostics-to-collect-and-upload-logs-from-new-eventsource-channels

在Visual Studio中使用Cloud Explorer。浏览到您的虚拟机规模集(因为这是包含WAD配置的Azure资源)。右键单击并选择“更新诊断”。在显示的对话框中,您可以选择上载专用和公用配置文件。简单地获取包含{“WadCfg”:{}}元素的.json文档,并将其作为公共配置上传。

如果需要更新私有配置,请指定存储帐户名和AccessKey:   {   “storageAccountName”:“”,   “storageAccountKey”:“”,   “storageAccountEndPoint”:“https://core.windows.net”,   }

希望这会有所帮助。 的Mikkel