如何将Cloud Service诊断日志直接发送至Event Hub
Cloud Service诊断日志发送至Event Hub的实现方案
不存在通过Visual Studio可视化配置直接将日志发送到Event Hub的原生入口,你在配置界面仅能看到存储账户、Application Insights两个可选目标是正常的产品设计,可通过以下三种方案实现需求:
- 自定义诊断扩展配置(仅支持Cloud Service 扩展支持版本)
跳过Visual Studio的可视化配置流程,直接编辑部署时绑定的Windows Azure Diagnostics(WAD)扩展公共配置文件,在<SinksConfig>节点下手动新增Event Hub接收器配置,参考代码片段:
配置完成后通过PowerShell或ARM模板重新部署诊断扩展即可生效,注意后续不要通过VS可视化界面修改诊断设置,否则会覆盖手动添加的配置。经典版Cloud Service搭载的旧版WAD扩展不支持该自定义Sink配置,无法使用此方法。<SinksConfig> <Sink name="MyEventHub"> <EventHub Url="https://<你的Event Hub命名空间>.servicebus.windows.net/<目标Event Hub名称>" SharedAccessKeyName="<具备发送权限的SAS策略名称>" SharedAccessKey="<对应SAS密钥>" /> </Sink> </SinksConfig> - 存储中转方案(经典/扩展支持版本均适用)
先按VS默认配置将诊断日志发送到存储账户,再通过以下任意链路转送到Event Hub:- 为存储账户配置Event Grid订阅,监听诊断日志对应的blob创建事件,触发Azure Function或逻辑应用读取新增日志内容,解析后推送到Event Hub
- 创建Azure流分析作业,将存储账户中的诊断日志目录设置为流输入,将目标Event Hub设置为输出,实现日志的实时流转
- 应用侧直连方案
如果你只需要收集业务代码输出的自定义日志,不需要采集操作系统层、IIS层等平台原生诊断日志,可以直接在Cloud Service的角色代码中引入Event Hub SDK,日志产生时直接调用SDK接口上报到Event Hub,完全不依赖WAD诊断扩展通道。
注意:如果选择自定义WAD配置的方案,请提前确认你使用的WAD扩展版本在1.11及以上,低版本扩展没有Event Hub Sink的支持能力。
内容的提问来源于stack exchange,提问作者Mihai Sadeanu
相关产品推荐
相关产品推荐

