查询日志分析,以便返回所有表名的列表

时间:2019-03-25 19:38:00

标签: python python-requests adal azure-log-analytics kusto

我正在使用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'}}}

4 个答案:

答案 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