簡體   English   中英

將自定義日志發送到 Azure 使用 Azure 數據工廠進行日志分析

[英]Sending Custom Logs to Azure Log analytics using Azure Data Factory

我正在嘗試使用 Azure 數據工廠將自定義日志引入 Azure 日志分析。 HTTP 數據收集器是 Microsoft 提供的 API,用於將自定義日志提取到 Azure 日志分析。 我在 Azure 數據工廠中創建了一個帶有 Web 活動的管道,以將一些示例日志發布到日志分析。 以下是 Web 活動的設置。

URL: https://xxloganalyticsworkspaceIDxx.ods.opinsights.azure.com/api/logs?api-version=2016-04-01 Method: POST Headers: Authorization - SharedKey xxloganalyticsworkspaceIDxx: Log-Type - ADFRecord Content-Type - application/ json x-ms-date - <使用 PowerShell RFC 1123 格式創建的簽名> 正文 - [{"StringValue":"MyString1","NumberValue":42,"BooleanValue":true,"DateValue":"2019-09-12T20 :00:00.625Z","GUIDValue":"9909ED01-A74C-4874-8ABF-D2678E3AE23D"}]

我知道應該動態提供 Authorization 和 x-ms-date 標頭但是為了測試我已經使用 Microsoft 在文章https: //docs.microsoft.com/en-us/azure 中提供的 PowerShell 代碼創建了這些標頭/azure-monitor/logs/data-collector-api#request-headers並在 web 活動中使用了相同的標頭。 管道失敗並出現以下錯誤:

{"Error":"InvalidAuthorization","Message":"授權標頭中指定了無效簽名"}

I have tried pushing the same data with same headers using postman and the REST call was successful implying the header signature generated using PowerShell works. 我可以看到海關日志被推送到 Log Analytics。

感謝您對此問題的任何幫助,也請讓我知道如何在 Web 活動中動態提供授權標頭。

數據工廠 web 活動似乎在將自定義日志發送到日志分析工作區時遇到了一些問題,經過一些嘗試和錯誤后,我找到了成功的方法。

  1. 確保您嘗試使用替代方法,例如 python/C#/etc 並讓請求正常工作。 (我使用 python 例如https://docs.microsoft.com/en-us/azure/azure-monitor/logs/data-collector-api#python-sample

  2. 在數據工廠 web 活動主體部分中,用 [] 包裝請求以使其成為數組,即 {"A":6} 將變為 [{"A":6}] (不確定確切原因,但似乎有效,可能有一些關於他們如何處理身體的過程)

  3. 刪除所有冗余空間,因為 azure 會在發送之前壓縮你的身體,即 [{"A": 6, "B": 7}] 應該變成 [{"A":6,"B":7}]

  4. 現在使用已處理的正文字符串的 content_length 來構建您的簽名,您可以先使用 python 對其進行測試,然后將 Authorization(signature) 和 x-ms-date 的值復制(硬編碼)到數據工廠 web 活動進行測試,它應該可以工作現在。

如果有合適的解決方案,請分享,謝謝:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM