ETW 目前是否可以从 Service Fabric 群集诊断扩展流式传输到事件中心?
Is ETW streaming from Service Fabric cluster Diagnostic extension to Event Hubs currently possible?
我们目前正在努力将诊断流下沉到事件中心:
我已经使用 ARM 模板将诊断扩展添加到服务结构集群,目前正在输出到 Azure 存储,我现在需要的是设置到事件中心的接收器。
我遵循了这个 post ,它描述了如何将 SinksConfig
节点添加到 diagnostics.wadcfgx 文件:
然而,这似乎只对 Azure 云服务项目有效?在云服务项目中,通过转到角色的属性并单击启用诊断来创建文件,添加配置文件看起来很容易:
然而,对于 Service Fabric 项目,无法执行此操作,因为没有 Web 角色的概念,而且在 SF 项目的属性中似乎没有任何地方可以诊断 enabled/wadcfgx 文件已添加。
我已将诊断扩展添加到规模集中的 VM,方法是将以下内容添加到 ARM 模板:
我可以在此处看到存储帐户(ETW 当前流式传输到的位置)的定义位置,但找不到有关如何指定事件中心的指导?
我确实想知道这是否只是因为它没有在任何地方记录,或者因为 Service Fabric 还不可能。此 article 日期为 7 月,声明如下:
这似乎表明该功能目前可能对 Service Fabric 可用,也可能不可用。
总结
接下来主要有2个问题:
- 目前是否可以设置从 Service Fabric 群集(启用诊断扩展)到事件中心的 ETW 流?如果不是,距离有多远?
- 如果可以,应该怎么设置?如果要像上面定义的那样在ARM模板中定义,它的语法是什么?
查看 this 示例。 Vaclav 为各种类型的商店创建了事件监听器。确保在 ServiceEventSource
类 中包含 Nuget 包“Microsoft.Diagnostics.Tracing.EventSource
”并将“System.Diagnostics.Tracing
”替换为“Microsoft.Diagnostics.Tracing
”。
在您的 ARM 模板中注册事件提供程序,如 here.
所示
经过反复试验,似乎有两种方法可以做到这一点。
来自Visual Studio的步骤:
在 Cloud Explorer 中找到您的规模集
选择更新诊断
- 记录当前正在使用的存储帐户
- 编辑事件中心接收器和存储帐户的 Public 和私有配置文件
- 更新诊断并选择根据新的配置文件进行更新
public 配置是(为简洁起见仅显示 SinksConfig 节点)
{
"WadCfg": {
"DiagnosticMonitorConfiguration": {
*** config for performance counters and ETW ***
"SinksConfig": {
"Sink": [
{
"name": "eventhub",
"EventHub": {
"Url": "https://myhub.servicebus.windows.net/mycompanyapplication",
"SharedAccessKeyName": "RootManageSharedAccessKey"
}
}
]
}
},
"StorageAccount": "<storageaccount>"
}
和私有配置:
{
"storageAccountName": "<storageaccountname>",
"storageAccountKey": "<storageaccountkey>",
"storageAccountEndPoint": "https://core.windows.net",
"EventHub": {
"Url": "https://myhub.servicebus.windows.net/mycompanyapplication",
"SharedAccessKeyName": "RootManageSharedAccessKey",
"SharedAccessKey": "<sharedaccesskey>"
}
}
或者此配置可以成为您的 ARM 模板的一部分,将 public 配置中的 json 复制到 VMDiagnosticsSettings 资源的 "settings" 节点(示例资源定义 here),并将私有配置复制到 "protectedsettings" 节点。
我们目前正在努力将诊断流下沉到事件中心:
我已经使用 ARM 模板将诊断扩展添加到服务结构集群,目前正在输出到 Azure 存储,我现在需要的是设置到事件中心的接收器。
我遵循了这个 post ,它描述了如何将 SinksConfig
节点添加到 diagnostics.wadcfgx 文件:
然而,这似乎只对 Azure 云服务项目有效?在云服务项目中,通过转到角色的属性并单击启用诊断来创建文件,添加配置文件看起来很容易:
然而,对于 Service Fabric 项目,无法执行此操作,因为没有 Web 角色的概念,而且在 SF 项目的属性中似乎没有任何地方可以诊断 enabled/wadcfgx 文件已添加。
我已将诊断扩展添加到规模集中的 VM,方法是将以下内容添加到 ARM 模板:
我可以在此处看到存储帐户(ETW 当前流式传输到的位置)的定义位置,但找不到有关如何指定事件中心的指导?
我确实想知道这是否只是因为它没有在任何地方记录,或者因为 Service Fabric 还不可能。此 article 日期为 7 月,声明如下:
这似乎表明该功能目前可能对 Service Fabric 可用,也可能不可用。
总结
接下来主要有2个问题:
- 目前是否可以设置从 Service Fabric 群集(启用诊断扩展)到事件中心的 ETW 流?如果不是,距离有多远?
- 如果可以,应该怎么设置?如果要像上面定义的那样在ARM模板中定义,它的语法是什么?
查看 this 示例。 Vaclav 为各种类型的商店创建了事件监听器。确保在 ServiceEventSource
类 中包含 Nuget 包“Microsoft.Diagnostics.Tracing.EventSource
”并将“System.Diagnostics.Tracing
”替换为“Microsoft.Diagnostics.Tracing
”。
在您的 ARM 模板中注册事件提供程序,如 here.
经过反复试验,似乎有两种方法可以做到这一点。
来自Visual Studio的步骤:
在 Cloud Explorer 中找到您的规模集
选择更新诊断
- 记录当前正在使用的存储帐户
- 编辑事件中心接收器和存储帐户的 Public 和私有配置文件
- 更新诊断并选择根据新的配置文件进行更新
public 配置是(为简洁起见仅显示 SinksConfig 节点)
{
"WadCfg": {
"DiagnosticMonitorConfiguration": {
*** config for performance counters and ETW ***
"SinksConfig": {
"Sink": [
{
"name": "eventhub",
"EventHub": {
"Url": "https://myhub.servicebus.windows.net/mycompanyapplication",
"SharedAccessKeyName": "RootManageSharedAccessKey"
}
}
]
}
},
"StorageAccount": "<storageaccount>"
}
和私有配置:
{
"storageAccountName": "<storageaccountname>",
"storageAccountKey": "<storageaccountkey>",
"storageAccountEndPoint": "https://core.windows.net",
"EventHub": {
"Url": "https://myhub.servicebus.windows.net/mycompanyapplication",
"SharedAccessKeyName": "RootManageSharedAccessKey",
"SharedAccessKey": "<sharedaccesskey>"
}
}
或者此配置可以成为您的 ARM 模板的一部分,将 public 配置中的 json 复制到 VMDiagnosticsSettings 资源的 "settings" 节点(示例资源定义 here),并将私有配置复制到 "protectedsettings" 节点。