为 Azure 逻辑应用设置 Azure Monitor 日志并收集诊断数据

注意

本文仅适用于消耗逻辑应用。 有关监视标准逻辑应用的信息,请查看在部署后为标准逻辑应用启用或打开 Application Insights

若要在运行期间获取有关逻辑应用的更丰富的调试信息,可以设置并使用 Azure Monitor 日志来记录和存储有关运行时数据和事件的信息,例如 Log Analytics 工作区中的触发器事件、运行事件和操作事件。 Azure Monitor 可帮助你监视云和本地环境,使你能够更轻松地保持其可用性和性能。 通过使用 Azure Monitor 日志,可以创建有助于收集和查看此信息的日志查询。 还可以将此诊断数据与其他 Azure 服务一起使用,例如 Azure 存储和 Azure 事件中心。

若要为逻辑应用设置日志记录,可以在创建逻辑应用时启用 Log Analytics,也可以在现有逻辑应用的 Log Analytics 工作区中安装逻辑应用管理解决方案。 此解决方案为逻辑应用运行提供聚合信息,它包括状态、执行时间、重新提交状态和相关 ID 等具体的详细信息。 然后,若要为此信息启用日志记录和创建查询的功能,请设置 Azure Monitor 日志

本文介绍如何在新的和现有逻辑应用上启用 Log Analytics、如何安装和设置逻辑应用管理解决方案以及如何为 Azure Monitor 日志设置和创建查询。

先决条件

为新逻辑应用启用 Log Analytics

创建逻辑应用时,可以打开 Log Analytics。

  1. Azure 门户中的“创建逻辑应用”窗格上(其中提供信息以创建基于消耗计划的逻辑应用),执行以下步骤:

    1. 在“启用 Log Analytics”下,选择“是”。

    2. 从 Log Analytics 工作区列表中,选择要从逻辑应用运行发送数据的 Log Analytics 工作区。

      Provide logic app information

  2. 完成创建逻辑应用。 完成后,逻辑应用将与 Log Analytics 工作区关联。 此步骤还会自动在你的工作区中安装逻辑应用管理解决方案。

  3. 运行逻辑应用后,若要查看逻辑应用运行,请继续执行这些步骤

设置 Azure Monitor 日志

将有关运行时事件和数据的信息存储在 Azure Monitor 日志中时,可以创建可帮助查找和查看此信息的日志查询

注意

启用诊断设置后,诊断数据可能在最多 30 分钟内不会流向指定目标(例如 Log Analytics、事件中心或存储帐户)的日志。 此延迟意味着此时间段的诊断数据可能不存在,你无法查看。 已完成的事件和跟踪的属性在 10-15 分钟内可能不会显示在 Log Analytics 工作区中。

  1. Azure 门户中,查找并选择“逻辑应用”。

  2. 在逻辑应用菜单的“监视”下,选择“诊断设置”>“添加诊断设置”。

    Under

  3. 若要创建设置,请执行以下步骤:

    1. 对于“诊断设置名称”,请提供设置的名称。

    2. 在“目标详细信息”下选择“发送到 Log Analytics 工作区”。

    3. 对于“订阅”,选择与 Log Analytics 工作区关联的 Azure 订阅。

    4. 对于“Log Analytics 工作区”,选择你的工作区。

    5. 在“日志”>“类别”下,选择“WorkflowRuntime”,该类别指定要记录的事件类别。

    6. 在“指标”下,选择“AllMetrics”。

    7. 完成后,选择“保存”。

    完成后,你的版本类似于以下示例:

    Select Log Analytics workspace and data for logging

查看逻辑应用运行状态

逻辑应用运行后,可以在 Log Analytics 工作区中查看有关这些运行的数据。

  1. Azure 门户中,找到并打开 Log Analytics 工作区。

  2. 在工作区菜单的“常规”下,选择“工作区摘要”>“逻辑应用管理”。

    注意

    如果“逻辑应用管理”磁贴在运行后未立即显示结果,请尝试选择“刷新”或等待一小段时间,然后再重试。

    Logic app run status and count

    此时,逻辑应用运行将按名称或执行状态进行分组。 此页面还显示有关逻辑应用运行的操作或触发器中的失败的详细信息。

    Status summary for your logic app runs

  3. 若要查看特定逻辑应用或状态的所有运行,请选择该逻辑应用或状态的行。

    下面是一个显示特定逻辑应用所有运行的示例:

    View logic app runs and status

    对于设置跟踪属性的操作,还可通过在“跟踪属性”列中选择“查看”来查看这些属性 。 若要搜索跟踪的属性,请使用列筛选器。

    View tracked properties for a logic app

  4. 若要筛选结果,可以执行客户端和服务器端筛选。

    • 客户端筛选器:对于每个列,请选择所需的筛选器,例如:

      Example column filters

    • 服务器端筛选器:若要选择特定的时间窗口或限制显示的运行次数,请使用页面顶部的作用域控件。 默认情况下,一次仅显示 1,000 条记录。

      Change the time window

  5. 若要查看特定运行的所有操作及其详细信息,请选择逻辑应用运行所在的行。

    下面是一个显示特定逻辑应用运行的所有操作和触发器的示例:

    View actions for a logic app run

将诊断数据发送到 Azure 存储和 Azure 事件中心

结合使用 Azure Monitor 日志后,可以扩展将逻辑应用的诊断数据用于其他 Azure 服务的方式,例如:

然后,可通过使用其他服务(如 Azure 流分析Power BI)的遥测数据和分析来进行实时监视。 例如:

根据要发送诊断数据的位置,确保首先创建 Azure 存储帐户创建 Azure 事件中心。 然后,可选择要将该数据发送至何处。 仅当你使用存储帐户时才应用保留期。

Send data to Azure storage account or event hub

Azure Monitor 诊断事件

每个诊断事件都有关于逻辑应用和该事件的详细信息,例如状态、开始时间、结束时间等。 若要以编程方式设置监视、跟踪和日志记录,可以将此信息用于 Azure 逻辑应用适用的 REST APIAzure Monitor 适用的 REST API。 还可以使用 clientTrackingIdtrackedProperties 属性,它们出现在以下位置

  • clientTrackingId:如果未提供,Azure 会自动生成此 ID,并跨逻辑应用运行关联事件,包括从逻辑应用调用的任何嵌套工作流。 可通过在触发器请求中传递带有自定义 ID 值的 x-ms-client-tracking-id 标头,在触发器中手动指定此 ID。 可以使用请求触发器、HTTP 触发器或 webhook 触发器。

  • trackedProperties:若要在诊断数据中跟踪输入或输出,可以使用逻辑应用设计器或直接在逻辑应用的 JSON 定义中向操作添加 trackedProperties 部分。 跟踪属性只能跟踪单个操作输入和输出,不过可以使用事件的 correlation 属性以便跨运行中的操作进行关联。 若要跟踪多个属性、一个或更多属性,请添加 trackedProperties 部分和所需操作定义的属性。

    下面的示例演示“初始化变量”操作定义如何包含操作输入中的跟踪属性,其中输入是数组,而不是记录。

    {
       "Initialize_variable": {
          "type": "InitializeVariable",
          "inputs": {
             "variables": [
                {
                   "name": "ConnectorName", 
                   "type": "String", 
                   "value": "SFTP-SSH" 
                }
             ]
          },
          "runAfter": {},
          "trackedProperties": { 
             "myTrackedPropertyName": "@action().inputs.variables[0].value"
          }
       }
    }
    

    此示例显示多个跟踪属性:

    "HTTP": {
       "type": "Http",
       "inputs": {
          "body": "@triggerBody()",
          "headers": {
             "Content-Type": "application/json"
          },
          "method": "POST",
          "uri": "http://store.fabrikam.com",
       },
       "runAfter": {},
       "trackedProperties": {
          "myActionHTTPStatusCode": "@action()['outputs']['statusCode']",
          "myActionHTTPValue": "@action()['outputs']['body']['<content>']",
          "transactionId": "@action()['inputs']['body']['<content>']"
       }
    }
    

此示例演示 ActionCompleted 事件如何包含 clientTrackingIdtrackedProperties 属性:

{
   "time": "2016-07-09T17:09:54.4773148Z",
   "workflowId": "/subscriptions/XXXXXXXXXXXXXXX/resourceGroups/MyResourceGroup/providers/Microsoft.Logic/workflows/MyLogicApp",
   "resourceId": "/subscriptions/<subscription-ID>/resourceGroups/MyResourceGroup/providers/Microsoft.Logic/workflows/MyLogicApp/runs/<run-ID>/actions/Http",
   "category": "WorkflowRuntime",
   "level": "Information",
   "operationName": "Microsoft.Logic/workflows/workflowActionCompleted",
   "properties": {
      "$schema": "2016-06-01",
      "startTime": "2016-07-09T17:09:53.4336305Z",
      "endTime": "2016-07-09T17:09:53.5430281Z",
      "status": "Succeeded",
      "code": "OK",
      "resource": {
         "subscriptionId": "<subscription-ID>",
         "resourceGroupName": "MyResourceGroup",
         "workflowId": "<logic-app-workflow-ID>",
         "workflowName": "MyLogicApp",
         "runId": "08587361146922712057",
         "location": "chinaeast2",
         "actionName": "Http"
      },
      "correlation": {
         "actionTrackingId": "e1931543-906d-4d1d-baed-dee72ddf1047",
         "clientTrackingId": "<my-custom-tracking-ID>"
      },
      "trackedProperties": {
         "myTrackedPropertyName": "<value>"
      }
   }
}

后续步骤