gpt4 book ai didi

python - 如何对 Azure 日志提取 API 进行故障排除

转载 作者:行者123 更新时间:2023-12-03 02:00:00 24 4
gpt4 key购买 nike

我开发了一个 Python 脚本,用于使用 Azure 日志摄取 API 将一些 JSON 格式的日志上传到自定义表中。该脚本至少运行了两次,并且数据行完全按照我想要的方式显示,但现在,尽管它似乎可以运行并且每次运行时都会获得响应 [204],但自定义表中没有出现新数据。

我可以在 Azure 端执行哪些故障排除步骤来查看错误可能出在哪里?

我已关注this Microsoft article我使用了两种不同形式的Python方法来发布数据

  • 本地人 request.post带有相关参数的命令。
  • client.upload链接文章的 Python 部分中显示的命令。

Python 中的调试显示数据格式明显正确,并且响应似乎不错(取决于所使用的方法)。由于许多数据需要编辑,因此很难在这里提供详细信息,但我会尝试。

第一个 Python 请求如下所示:

logCombined = <JSON data array>
payload = json.dumps(logCombined)
applicationId
scope = "https://monitor.azure.com//.default"
appSecret = <application (client) secret>
tenantId = <tenant ID>
dceUri= <dedicated endpoint URI>
dcrImmutableId = <DCR immutable ID>
table= "MyTable_CL"

body = f"client_id={applicationId}&scope={scope}&client_secret={appSecret}&grant_type=client_credentials"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
uri = f"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token"
response = req.post(uri, data=body, headers=headers) # find a bearer token
bearerToken = respons.json().get("access_token")
headers2 = { "Authorization": f"Bearer {bearerToken}", "Content-Type": "application/json" }
uri = f"{dceUri}/dataCollectionRules/{dcrImmutableId}/streams/Custom-{table}?api-version=2021-11-01-preview"
uploadResponse = req.post(uri, data=payload, headers=headers2)
print("Response: ", uploadResponse)

此时响应始终成功:<Response [204]> 。 Azure 中没有任何迹象表明发生了任何事情 - 没有新的表行,并且 operation 中没有任何内容。日志。

我如何在 Azure 中深入了解为什么它被忽略?

最佳答案

您的问题可能是由于发布的 JSON 数据与 Azure 中的数据收集规则 (DCR) 中定义的数据不匹配所致。 Azure 的日志提取 API 要求发送的 JSON 数据结构与 DCR 中定义的数据结构匹配。如果这两者不匹配,即使您的发布请求成功,您的数据也不会出现在自定义表格中。

以下是排除故障的方法:

检查您的数据收集规则 (DCR):确保 Azure 中的 DCR 与您要发送的 JSON 数据的结构完全匹配。验证键及其关联的值类型。

检查正在发布的 JSON 数据:将发送的 JSON 保存到本地文件并检查其内容以确保其与 DCR 匹配。

以下示例说明了如何修改现有 Python 代码以将 JSON 数据写入本地文件:

import json

# Other parts of your code...

payload = json.dumps(logCombined)

# Save the JSON payload to a file
with open('payload.json', 'w') as outfile:
json.dump(logCombined, outfile)

# Continue with the rest of your code...

在上面的代码片段中,json.dump(logCombined, outfile) 将logCombined JSON 数据写入名为payload.json 的文件中。您可以打开此文件并验证其内容。

尝试提取示例数据:您可以尝试提取您确信与 DCR 中定义的结构匹配的一小部分数据样本。如果成功提取示例数据,则问题可能出在主数据集的 JSON 数据结构中。

作为 DCR 中的示例(如果您已定义)

[
{
"blah": "1",
"blah2" : "2"
}
]

但是如果您要发送类似的内容

[
"Errors": {
"blah": "1",
"blah2" : "2"
},
{
"blah": "1",
"blah2" : "2"
}
]

那么这将是不匹配的,所以我建议将您发送的输出保存到文件中,并交叉检查内容是否是 DCR 所期望的内容

关于python - 如何对 Azure 日志提取 API 进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76649644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com