【问题标题】:Azure Monitor Workbook Query - retrieve data from Azure REST API Synapse Data PlaneAzure Monitor 工作簿查询 - 从 Azure REST API Synapse 数据平面检索数据
【发布时间】:2022-04-06 17:18:33
【问题描述】:

尝试构建一个从 Azure REST API 检索有关 Synapse Pipelines 的数据的工作簿,该数据属于另一个 endpoint (https://dev.azuresynapse.net),而不像 Azure 资源管理器 API (https://management.azure.com)。在 Monitor Workbook 查询中,有一个用于 Azure RM API 的特殊数据源“Azure 资源管理器”,它非常适合我,因为内置了身份验证/授权(在后台工作)。然而,对于 Synapse 数据平面 API(由于另一个端点),最终需要使用“自定义端点”查询数据源。这里必须事先从https://login.microsoftonline.com/{tenantId}/oauth2/token 请求separately 承载(访问)令牌。如果我尝试通过单独的查询来实现它,由于 CORS(参见附图),login.microsoftonline.com 不支持(该请求可能通过 AJAX 工作),它不起作用。 Synapse 的相同构造在邮差。 谁能告诉我如何在工作簿中实现这样的 API 请求?

问候 伊万

access token request Query (Error message)

【问题讨论】:

    标签: azure api rest azure-monitoring azure-monitor-workbooks


    【解决方案1】:

    这是一个重要的事情,今天的工作簿不直接支持。

    Azure 门户本身在各种扩展/资源提供者之间进行身份验证的方式需要很多小细节才能让这样的交叉身份验证正常工作。

    我会跟进 Synapse 团队,看看这对我们来说是否/多么容易实施。一旦该身份验证可用,我们就需要在工作簿中编写自定义数据源。 (我相信我们已经要求他们可能通过 ARM 公开这些数据以摆脱这些额外的要求)如果您有具体的场景/示例,您可以通过电子邮件跟进吗? jgardner@MS

    对于您与 CORS 相关的事情,如果您转到该屏幕截图的标题选项卡并选中删除所有额外标题的框,您可能能够克服该错误?它可能会因为它不期望的额外标头而拒绝那里的 CORS 请求?

    【讨论】:

    • 您好约翰,非常感谢您的回复。复选框“不发送相关标头”的解决方法不起作用。
    • 好的,很高兴知道。您可能需要查看网络选项卡/提琴手以查看该呼叫被拒绝的确切内容/原因,它可能不支持由门户直接调用? ?‍♂️ 从邮递员/等工作中做这些事情,因为他们没有任何 CORS 要求,因为它们不是浏览器
    • 嗨,约翰,在网络选项卡上,我看到以下消息“访问 XMLHttpRequest at 'login.microsoftonline.com/53721*****553/oauth2/token' from origin 'portal.azure.com' has been blocked通过 CORS 策略:请求的资源上不存在“Access-Control-Allow-Origin”标头。”。这对我来说意味着目标端点 (login.microsoftonline.com) 实际上不支持 CORS。
    • 控制台中的输出将是浏览器告诉您响应没有该内容/标题,但如果您查看选项请求的完整请求/响应,该请求是否有任何内容?有时请求的响应中有详细信息,说明为什么它不被接受并且不包含标头?我在 github/etc 上看到了一些关于这个特定端点和 CORS 的其他类似问题
    【解决方案2】:

    我找到了一种解决方法,可以使用 Azure Monitor Workbook 自定义终结点(查询数据源)从突触工作区(触发器、管道、linkedServices 等)检索配置数据。它仅适用于通过 Azure DevOps 服务链接到 git 的突触工作区。在这种情况下,您可以使用 Azure DevOps API 获取与生产环境相关的配置信息,如下所示:

    https://dev.azure.com/{organization}/_apis/git/repositories/{repositoryId}/items?scopePath={Path}/TemplateForWorkspace.json&version=workspace_publish&download=true&api-version=6.0&AuthorizationBasic=BASE64PATSTRING

    为此,您必须在 DevOps 端发布一个令牌。 CORS 策略对于此类请求不是问题,因为它是 GET 而不是 PUT 一个

    【讨论】:

      【解决方案3】:

      另一种解决方法是基于这样的假设,即突触工作区配置将很少更改,并且它在监控工具(工作簿)中的表示将与前一天(昨天)相关。 这可以通过 App Function 以相同的方式(如前所述)从 synapse 工作区 REST API 中获取数据并将其写入应用程序日志(例如,使用特定标签)来实现。 然后工作簿可以获取最新的日志记录(来自 Application Insights)

      【讨论】:

        猜你喜欢
        • 2021-12-18
        • 2022-01-02
        • 2021-09-19
        • 2023-03-07
        • 2022-06-21
        • 1970-01-01
        • 2022-12-07
        • 2021-11-26
        • 1970-01-01
        相关资源
        最近更新 更多