我正在使用Python对我的Azure Log Analytics工作区调用查询。为了提供最大的可伸缩性,我想实现一个查询,该查询返回Log Analytics工作区中的所有表名。本质上,我想生成所有表名的列表,以便稍后可以在python脚本中对其进行调用。
我尝试了一些不同的查询。例如:
Search * | distinct $table
而不是获取表列表,例如:
[
{
"$table": "ExampleTable"
}
]
我收到一条错误消息:
{'error':
{
'message': 'The request had some invalid properties', 'code': 'BadArgumentError', 'innererror':
{
'code': 'SyntaxError', 'message': 'Syntax Error'
}
}
}
任何建议/示例都将不胜感激。谢谢!
更新:
再次访问Azure Log Analytics REST API网站之后,我决定花一些时间来处理内置的API资源管理器工具。在那里,我能够成功查询示例工作区以获取表列表。我可以使用几个不同的查询来做到这一点:
search * | distinct $table
search * | distinct Type
尽管这两个查询在示例环境中均能完美运行,但它们仍然继续在我自己的环境中使我失望。每当我发送相同的查询并在API资源管理器中返回完美结果时,我的python应用程序以及Azure LogicApp都继续收到语法错误。我仍然对此问题感到困惑。这是API资源管理器的网站,供那些想要测试此内容的人使用:https://dev.loganalytics.io/apiexplorer/query?appId=DEMO_WORKSPACE&apiKey=DEMO_KEY
还要回答一个明显的问题:是的,我已经正确设置了其余的API连接。我可以并且确实在Python应用程序和LogicApp工作流程中成功进行了其他查询。似乎正是这一点给了我很多问题。
最后,以防万一,这是我每次查询时都会继续收到的错误消息:
{'error': {'message': 'The request had some invalid properties', 'code': 'BadArgumentError', 'innererror': {'code': 'SyntaxError', 'message': 'Syntax Error'}}}
答案 0 :(得分:1)
search "*" | summarize count() by $table | sort by count_ desc
这会向您显示每个表,并根据其中的日志计数进行排序。
答案 1 :(得分:0)
关于问题的Kusto-query-language部分,Search
应该是search
(小写的s
)
答案 2 :(得分:0)
我没有深入研究,但肯定看起来像Python理解查询中的“ $”的问题。也许我们必须以一种告诉Python在这种情况下转义'$'的方式显式调用API。
但是,您可以使用以下查询来满足您的要求。
search * | distinct Type
另一个要注意的是,由于Log Analytics查询语言已更改为较新的版本,因此请确保使用最新的可用API。新的API文档位于https://dev.loganalytics.io/
希望这会有所帮助!!干杯!
注意:如果您认为您的问题已得到回答,请“接受”,如果刚刚得到帮助,请单击“此回答有用”并进行投票。这可能对其他社区成员阅读此线程很有帮助。
答案 3 :(得分:0)
请注意搜索* | distinc不会为您提供工作空间中的所有表,只会为您提供至少包含记录的表。否则,它们将不会出现在搜索*的结果中,因此也不会出现在不同的查询中。
请签出此API以获取工作空间的架构: https://docs.microsoft.com/en-us/rest/api/loganalytics/workspaces%202015-03-20/getschema