使用Azure数据工厂将自定义日志发送到Azure日志分析



我正在尝试使用Azure数据工厂将自定义日志吸收到Azure日志分析中。HTTP数据收集器是Microsoft提供的API,用于将自定义日志摄入Azure日志分析。我在Azure数据工厂中创建了一个具有Web活动的管道,以发布一些示例日志到日志分析。以下是Web活动的设置。

网址:https://xxloganalyticsworkspaceIDxx.ods.opinsights.azure.com/api/logs?api-版本=2016-04-01方法:POST标头:授权-共享密钥xx对数分析工作空间IDxx:日志类型-ADFRecord内容类型-application/jsonx-ms-date-<使用PowerShell RFC 1123格式创建的签名>正文-{"StringValue":"MyString1","NumberValue":42,"BooleanValue":true,"DateValue":2019-09-12TT2:00:00.625Z,"GUIDValue":9909ED01-A74C-4874-8ABF-D2678E3AE23D

我知道Authorization和x-ms-date标头应该是动态提供的,但是为了进行测试,我使用Microsoft在文章中提供的PowerShell代码创建了这些标头https://learn.microsoft.com/en-us/azure/azure-monitor/logs/data-collector-api#request-headers,并在web活动中使用了相同的headers。管道失败,错误如下:

{"错误":"无效授权","消息":"在授权标头中指定了无效签名"}

我曾尝试使用poster推送具有相同标头的相同数据,REST调用成功,这意味着使用PowerShell生成的标头签名可以工作。我可以看到海关日志被推送到日志分析。

如果能在这方面提供任何帮助来解决问题,我将不胜感激,也请告诉我如何在Web活动中动态提供授权标头。

数据工厂的web活动似乎在发送自定义日志到日志分析工作区方面存在一些问题,经过一番尝试和错误,我找到了成功的方法。

  1. 请确保尝试其他方法,例如python/C#等,并使请求正常工作。(例如,我使用了pythonhttps://learn.microsoft.com/en-us/azure/azure-monitor/logs/data-collector-api#python-样品(

  2. 在数据工厂web活动主体部分,用[]包装请求,使其成为一个数组,即{"A":6}将变成{"B":6}](不确定确切原因,但似乎有效,可能有一些过程围绕着他们如何处理主体(

  3. 删除所有多余的空间,因为azure在发送之前似乎会压缩你的身体,即[{"A":6,"B":7}]应该变成[{"A":6,"B":7}]

  4. 现在,使用处理后的正文字符串的content_length来构建签名,您可以先使用python对其进行测试,然后将Authorization(signature(和x-ms-date的值复制(硬编码(到数据工厂web活动中进行测试,它现在应该可以工作了。

请分享是否有合适的解决方案,谢谢:(

这对于动态获取授权头也很有用如何使用Azure数据工厂服务的Web活动将实体插入Azure存储表

目前,最好创建一个功能应用程序来发送日志到日志的分析,并在adf中提出请求。

相关内容

  • 没有找到相关文章

最新更新