你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 Azure Monitor 日志监视 Service Fabric 上的 Windows 容器

这是教程的第三部分,将详细介绍如何配置 Azure Monitor 日志,以监视 Service Fabric 上安排的 Windows 容器。

在本教程中,你将了解如何执行以下操作:

  • 为 Service Fabric 群集配置 Azure Monitor 日志
  • 使用 Log Analytics 工作区查看和查询容器和节点中的日志
  • 配置 Log Analytics 代理,以选取容器和节点指标

先决条件

开始学习本教程之前,应做好以下准备:

在资源管理器模板中为群集设置 Azure Monitor 日志

如果使用了本教程第一部分中提供的模板,则它应包含常规 Service Fabric Azure 资源管理器模板的下列附加件。 如果拥有自己的群集,并且想要对它进行设置,以便使用 Azure Monitor 日志监视容器:

  • 在资源管理器模板中进行以下更改。
  • 使用 PowerShell 部署它,以通过部署模板升级群集。 Azure 资源管理器会确认此资源的存在,以将它作为升级内容推出。

向群集模板添加 Azure Monitor 日志

在 template.json 中进行以下更改:

  1. 将 Log Analytics 工作区的位置和名称添加到 parameters 节:

    "omsWorkspacename": {
      "type": "string",
      "defaultValue": "[toLower(concat('sf',uniqueString(resourceGroup().id)))]",
      "metadata": {
        "description": "Name of your Log Analytics Workspace"
      }
    },
    "omsRegion": {
      "type": "string",
      "defaultValue": "East US",
      "allowedValues": [
        "West Europe",
        "East US",
        "Southeast Asia"
      ],
      "metadata": {
        "description": "Specify the Azure Region for your Log Analytics workspace"
      }
    }
    

    若要更改其中任意一个所使用的值,可将同样的参数添加到 template.parameters.json ,并更改该位置中使用的值。

  2. 将解决方案名称和解决方案添加到变量 中:

    "omsSolutionName": "[Concat('ServiceFabric', '(', parameters('omsWorkspacename'), ')')]",
    "omsSolution": "ServiceFabric"
    
  3. 将 Microsoft Monitoring Agent 添加为虚拟机扩展。 找到虚拟机规模集资源:resources>"apiVersion": "[variables('vmssApiVersion')]"。 在 properties >virtualMachineProfile >extensionProfile >extensions 中的 ServiceFabricNode 扩展下,添加以下扩展说明:

    {
        "name": "[concat(variables('vmNodeType0Name'),'OMS')]",
        "properties": {
            "publisher": "Microsoft.EnterpriseCloud.Monitoring",
            "type": "MicrosoftMonitoringAgent",
            "typeHandlerVersion": "1.0",
            "autoUpgradeMinorVersion": true,
            "settings": {
                "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')), '2015-11-01-preview').customerId]"
            },
            "protectedSettings": {
                "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')),'2015-11-01-preview').primarySharedKey]"
            }
        }
    },
    
  4. 将 Log Analytics 工作区添加为单个资源。 在“资源” 中的虚拟机规模集资源后面,添加以下内容:

    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[parameters('omsWorkspacename')]",
        "type": "Microsoft.OperationalInsights/workspaces",
        "properties": {
            "sku": {
                "name": "Free"
            }
        },
        "resources": [
            {
                "apiVersion": "2015-11-01-preview",
                "name": "[concat(variables('applicationDiagnosticsStorageAccountName'),parameters('omsWorkspacename'))]",
                "type": "storageinsightconfigs",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]"
                ],
                "properties": {
                    "containers": [ ],
                    "tables": [
                        "WADServiceFabric*EventTable",
                        "WADWindowsEventLogsTable",
                        "WADETWEventTable"
                    ],
                    "storageAccount": {
                        "id": "[resourceId('Microsoft.Storage/storageaccounts/', variables('applicationDiagnosticsStorageAccountName'))]",
                        "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-06-15').key1]"
                    }
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "name": "System",
                "type": "datasources",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsEvent",
                "properties": {
                    "eventLogName": "System",
                    "eventTypes": [
                        {
                            "eventType": "Error"
                        },
                        {
                            "eventType": "Warning"
                        },
                        {
                            "eventType": "Information"
                        }
                    ]
                }
            }
        ]
    },
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[variables('omsSolutionName')]",
        "type": "Microsoft.OperationsManagement/solutions",
        "dependsOn": [
            "[concat('Microsoft.OperationalInsights/workspaces/', parameters('OMSWorkspacename'))]"
        ],
        "properties": {
            "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        },
        "plan": {
            "name": "[variables('omsSolutionName')]",
            "publisher": "Microsoft",
            "product": "[Concat('OMSGallery/', variables('omsSolution'))]",
            "promotionCode": ""
        }
    },
    

可在此处找到示例模板(本教程第一部分中使用过),其中包含上述所有更改,你可以根据需要参考这些更改。 这些更改会将 Log Analytics 工作区添加到你的资源组。 该工作区被配置为收集已配置 Windows Azure 诊断代理的存储表中的 Service Fabric 平台事件。 此外,还将 Log Analytics 代理 (Microsoft Monitoring Agent) 作为虚拟机扩展已添加到群集中的每个节点 - 这意味着,当你缩放群集时,会自动在每个虚拟机上配置此代理,并将它关联到同一个工作区。

部署包含新更改的模板,以升级当前的群集。 部署完成后,应在资源组中看到 Log Analytics 资源。 群集就绪后,将容器化应用程序部署到该群集。 在下一步中,我们将设置对容器的监视。

将容器监视解决方案添加到 Log Analytics 工作区

若要在工作区中设置容器解决方案,请搜索容器监视解决方案, 并创建容器资源(在“监视 + 管理”类别下)。

添加容器解决方案

出现针对 Log Analytics 工作区的提示后,选择已在资源组中创建的工作区,然后选择“创建”。 此操作会将容器监视解决方案添加到工作区,并启动模板部署的 Log Analytics 代理开始收集 docker 日志和统计信息。

重新导航到资源组 ,现在你应该在该位置看到新添加的监视解决方案。 选择它后,登陆页应显示正在运行的容器映像数量。

请注意,我们运行了本教程第二部分中的 fabrikam 容器的五个实例

容器解决方案登陆页面

选择“容器监视解决方案”后,你会转到更加详细的仪表板,在其中可以滚动浏览多个面板并可在 Azure Monitor 日志中运行查询

由于该代理正在收集 docker 日志,因此,默认情况下它会显示 stdout 和 stderr。 如果水平滚动,你将看到容器映像清单、状态、指标和示例查询,你可以运行这些查询以获取更多有用的数据。

容器解决方案仪表板

选择这些面板中的任何一个,即可转到生成显示值的 Kusto 查询。 将此查询更改为 * ,可看到正在收集的所有不同类型的日志。 在此处,你可以查询或筛选容器性能、日志,或查看 Service Fabric 平台事件。 此外,代理也会不断从各个节点发出检测信号,你可以查看这些信号,以确保群集配置更改后是否仍在从所有计算机收集数据。

容器查询

配置 Log Analytics 代理以收集性能计数器

使用 Log Analytics 代理的另一个好处是,可以通过 Log Analytics UI 体验更改想要收集的性能计数器,而不必配置 Azure 诊断代理并每次都基于资源管理器模板进行升级。 若要执行此操作,请选择容器监视(或 Service Fabric)解决方案登陆页上的“OMS 工作区”。

此操作会将你转到 Log Analytics 工作区,可以从中查看解决方案、创建自定义仪表板,以及配置 Log Analytics 代理。

  • 选择“高级设置”以打开“高级设置”菜单。
  • 选择“连接的源”>“Windows Server”,验证是否已连接了 5 个 Windows 计算机。
  • 选择“数据”>“Windows 性能计数器”,搜索并添加新性能计数器 。 此处你会看到 Azure Monitor 日志提供的关于可收集的性能计数器的建议列表,以及用于搜索其他计数器的选项。 验证是否正在收集 Processor(_Total) 处理器时间和 Memory(*)\Available MBytes 计数器。

几分钟后刷新容器监视解决方案,你应开始看到计算机性能数据出现。 这有助于你了解资源的使用情况。 此外,还可以使用这些指标做出适当的群集缩放决策,或者使用它们确认群集是否正在按照预期方式平衡负载。

注意:请确保已正确设置时间筛选器,以便于使用这些指标。

性能计数器 2

后续步骤

在本教程中,你将了解:

  • 为 Service Fabric 群集配置 Azure Monitor 日志
  • 使用 Log Analytics 工作区查看和查询容器和节点中的日志
  • 配置 Log Analytics 代理,以选取容器和节点指标

至此,你已配置对容器化应用程序的监视,请尝试执行以下操作:

  • 按照与本教程类似的步骤操作,为 Linux 群集配置 Azure Monitor 日志。 请参考此模板,对资源管理器模板进行更改。
  • 配置 Azure Monitor 日志,以便设置有助于检测和诊断的自动警报
  • 浏览 Service Fabric 的性能计数器建议列表,以为群集配置它们。
  • 掌握 Azure Monitor 日志中提供的日志搜索和查询功能。