Руководство по Мониторинг контейнеров Windows в Service Fabric с помощью журналов Azure Monitor

Это третья часть руководства, в которой описывается настройка журналов Azure Monitor для мониторинга контейнеров Windows, управляемых в Service Fabric.

В этом руководстве описано следующее:

  • настройка журналов Azure Monitor для кластера Service Fabric;
  • использование рабочей области Log Analytics для просмотра и запроса журналов из контейнеров и узлов;
  • настройка агента Log Analytics для сбора метрик контейнеров и узлов.

Примечание

Сведения из данной статьи были недавно обновлены. Теперь вместо термина "Log Analytics" используется термин "журналы Azure Monitor". Данные журнала по-прежнему хранятся в рабочей области Log Analytics, собираются и анализируются той же службой Log Analytics. Целью обновления терминологии является лучшее отражение роли журналов в Azure Monitor. Дополнительные сведения см. в статье Изменения фирменной символики Azure Monitor.

Предварительные требования

Для работы с этим руководством вам потребуется:

Настройка журналов Azure Monitor для кластера в шаблоне Resource Manager

В случае, если вы использовали шаблон, предоставленный в первой части этого руководства, он должен содержать указанные ниже дополнения к универсальному шаблону Azure Resource Manager для Service Fabric. В случае, если вы использовали собственный кластер, для которого необходимо настроить мониторинг контейнеров с помощью журналов Azure Monitor, сделайте следующее.

  • Внесите приведенные ниже изменения в шаблон Resource Manager.
  • Разверните этот шаблон с помощью PowerShell, чтобы обновить кластер. Azure Resource Manager определит, что ресурс уже существует, поэтому обновит его.

Добавление журналов 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. Добавьте имя решения и решение в раздел variables.

    "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 в качестве отдельного ресурса. Добавьте приведенный ниже код в раздел resources после ресурса масштабируемых наборов виртуальных машин.

    {
        "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 в группу ресурсов. Рабочая область продолжит собирать события платформы Service Fabric из таблиц хранилища, настроенных для агента Диагностики Azure для Windows. Агент 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. Вам не придется настраивать агент системы диагностики Azure и каждый раз выполнять обновление с помощью шаблона Resource Manager. Чтобы сделать это, на целевой странице решения мониторинга контейнеров (или Service Fabric) выберите Рабочая область OMS.

В рабочей области Log Analytics можно просматривать решения, создавать настраиваемые панели мониторинга, а также настраивать агент Log Analytics.

  • Чтобы открыть меню дополнительных параметров, выберите Дополнительные параметры;
  • выберите Подключенные источники > Серверы с Windows, чтобы убедиться в наличии 5 подключенных компьютеров Windows;
  • выберите Данные > Счетчики производительности Windows, чтобы найти и добавить новые счетчики производительности. Здесь можно увидеть список рекомендаций журналов Azure Monitor по собранным счетчикам производительности, а также производить поиск других счетчиков. Убедитесь, что собираются данные со счетчиков Процессор(_всего)% Загруженность процессора и Память(*)\Доступно мегабайт.

Через несколько минут обновите решение для мониторинга контейнеров. В нем должны начать появляться данные о производительности компьютеров. Это поможет вам понять, как используются ресурсы. Кроме того, эти метрики можно использовать для принятия правильных решений о масштабировании кластера или для проверки соответствия балансировки нагрузки кластера ожидаемым показателям.

Примечание. Убедитесь, что фильтры времени правильно настроены для использования этих метрик.

Счетчики производительности 2

Дальнейшие действия

В этом руководстве вы узнали, как выполнять следующие задачи:

  • настройка журналов Azure Monitor для кластера Service Fabric;
  • использование рабочей области Log Analytics для просмотра и запроса журналов из контейнеров и узлов;
  • настройка агента Log Analytics для сбора метрик контейнеров и узлов.

Теперь, когда вы настроили мониторинг для контейнерного приложения, попробуйте выполнить следующее: