2

我正在使用 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 Explorer 的站点,供想要测试的人使用: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

4 回答 4

1

关于问题的 Kusto-query-language 部分,Search应该是search(小写s

于 2019-03-25T19:53:19.490 回答
1

请注意搜索 * | distinc 不会为您提供工作区中的所有表,只会提供至少包含一条记录的表。否则,它们将不会出现在搜索 * 的结果中,因此也不会出现在不同的查询中。

请查看此 API 以获取工作区的架构: https ://docs.microsoft.com/en-us/rest/api/loganalytics/workspaces%202015-03-20/getschema

于 2019-09-21T12:05:48.723 回答
1

我没有深入挖掘,但它肯定看起来像 Python 对您的查询中的“$”理解的问题。可能我们必须以一种我们告诉 Python 在这种情况下转义“$”的方式显式调用 API。

但是,您可以使用以下查询来完成您的要求。

search * | distinct Type

另一个注意事项是,由于 Log Analytics 查询语言已更改为较新版本,因此请确保使用最新的可用 API。新的 API 文档位于https://dev.loganalytics.io/

希望这可以帮助!!干杯!!

注意:如果您认为您的问题已得到解答,请“接受”它,如果只是帮助,请单击“此答案很有用”并投赞成票。这对阅读此线程的其他社区成员可能是有益的。

于 2019-03-31T06:21:20.537 回答
1
search "*" | summarize count() by $table | sort by count_ desc

这会向您显示每个表,按登录其中的日志计数排序。

于 2020-03-05T22:38:06.447 回答