使用 Rest API 从 LogAnalytics Workspace 获取日志数据

Sor*_*rty 2 azure azure-log-analytics

我正在尝试使用我在工作区中保存的查询从 Azure Log Analytics 工作区获取日志数据。我已开始开发一个 Web API 来获取查询结果,并将该 Web API 注册到我在 Visual Studio Enterprise Azure 订阅中创建的 Azure Active Directory。但是,当我尝试“请求 LogAnalytics API 的权限”时,我无法从 Microsoft API 找到 LogAnalytics API。我按照以下链接中的说明进行操作: https://dev.loganalytics.io/oms/documentation/1-Tutorials/1-Direct-API 在此输入图像描述

有人可以告诉我如何从 LogAnalytics 工作区中获取日志数据吗?我查看了微软文档,它只提供了 API,但没有说明如何获取令牌: https: //learn.microsoft.com/en-us/rest/api/loganalytics/savedsearches/get

Joy*_*ang 9

但是,当我尝试“请求 LogAnalytics API 的权限”时,我无法从 Microsoft API 找到 LogAnalytics API。

您需要导航到APIs my organization uses,搜索Log Analytics API,添加Application permission如下内容。

注意:您提供的链接应该已过时,它使用,这是不正确的,它必须是,因为我们将使用客户端凭据流来获取令牌。Delegated permissionApplication permission

在此输入图像描述

在此输入图像描述

授予权限后,还要确保您的 AD 应用程序具有 RBAC 角色Contributor,例如,Log Analytics Reader在Access control (IAM)您的工作区中,如果没有,请按照此文档添加它。

然后使用客户端凭证流程获取token,获取token后用它来调用api。

POST /YOUR_AAD_TENANT/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=YOUR_CLIENT_ID
&redirect_uri=YOUR_REDIRECT_URI
&resource=https://api.loganalytics.io
&client_secret=YOUR_CLIENT_SECRET
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,您可以参考此链接,不要错过任何步骤。


我查看了微软文档,它只提供了 API,但没有说明如何获取令牌: https: //learn.microsoft.com/en-us/rest/api/loganalytics/savedsearches/get

要获取此 REST API 的令牌,与Log Analytics API. 调用此API,无需为您的AD应用程序添加API权限,只需RBAC角色即可。不同之处在于您需要将resource请求正文中的 更改为https://management.azure.com如下所示。

POST /YOUR_AAD_TENANT/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=YOUR_CLIENT_ID
&redirect_uri=YOUR_REDIRECT_URI
&resource=https://management.azure.com
&client_secret=YOUR_CLIENT_SECRET
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此链接。