Поделиться через


Использование расширения диагностики Linux 3.0 для мониторинга метрик и журналов

Осторожность

Эта статья ссылается на CentOS, дистрибутив Linux, который является окончанием состояния поддержки. Пожалуйста, учитывайте ваше потребление и планируйте соответствующим образом. Дополнительные сведения см. в руководстве по прекращению поддержки CentOS .

В этом документе описывается версия 3.0 и более новая версия расширения диагностики Linux (LAD).

Это важно

Сведения о версии 2.3 и более ранних версиях см. в статье Мониторинг производительности и диагностических данных виртуальной машины Linux.

Это важно

Миграция с расширения диагностики Azure

Диагностическое расширение Azure будет прекращено 31 марта 2026 г. После этой даты корпорация Майкрософт больше не будет предоставлять поддержку расширения диагностики Azure.

Чтобы обеспечить постоянную поддержку и доступ к новым функциям, необходимо мигрировать с расширений диагностики Azure для Linux (LAD) и Windows (WAD) на агент Azure Monitor, который может собирать одни и те же данные и отправлять их в несколько назначений, включая рабочие области Log Analytics, Центры событий Azure и Azure Storage. Удалите LAD или WAD после настройки агента Azure Monitor, чтобы избежать дублирования данных.

В качестве альтернативы хранилищу следует отправлять данные в таблицу с вспомогательным планом в рабочей области Log Analytics для эффективного ведения журнала.

Чтобы проверить, какие расширения установлены на одной виртуальной машине, выберите "Расширения и приложения " в разделе "Параметры " на виртуальной машине. Чтобы просмотреть расширения, установленные на всех виртуальных машинах в подписках, где у вас есть доступ, используйте следующий запрос в Azure Resource Graph:

resources
| where type contains "extension"
| extend parsedProperties = parse_json(properties)
| extend publisher = tostring(parsedProperties.publisher)
| project-away parsedProperties
| where publisher == "Microsoft.Azure.Diagnostics"
| distinct id

Это приводит к следующим результатам:

Снимок экрана: результаты примера запроса Azure Resource Graph.

Введение

Расширение диагностики Linux помогает пользователю отслеживать работоспособность виртуальной машины Linux, работающей в Microsoft Azure. Оно предоставляет следующие возможности.

  • Собирает метрики производительности системы из виртуальной машины и сохраняет их в определенной таблице в указанной учетной записи хранения.
  • Извлекает события журнала из системного журнала и сохраняет их в определенной таблице в указанной учетной записи хранения.
  • Позволяет пользователям настраивать метрики данных, собираемые и отправленные.
  • Позволяет пользователям настраивать средства системного журнала и уровни серьезности событий, собираемых и отправленных.
  • Позволяет пользователям отправлять указанные файлы журналов в определенную таблицу хранилища.
  • Поддерживает отправку метрик и событий журнала в произвольные конечные точки Центров событий Azure и большие двоичные объекты в формате JSON в указанной учетной записи хранения.

Это расширение работает с обеими моделями развертывания Azure.

Примечание.

Новое! Попробуйте использовать поддержку виртуальной машины для ускорения диагностикиРекомендуется запустить VM Assist для Windows или VM Assist для Linux. Эти средства диагностики на основе скриптов помогают выявить распространенные проблемы, влияющие на гостевой агент виртуальной машины Azure и общую работоспособность виртуальных машин.

Установка расширения на виртуальной машине

Расширение можно включить с помощью командлетов Azure PowerShell, скриптов Azure CLI, шаблонов Azure Resource Monitor (шаблонов ARM) или портала Azure. Дополнительные сведения см. в разделе "Функции расширений".

Примечание.

Некоторые компоненты расширения виртуальной машины LAD также отправляются в расширение виртуальной машины Log Analytics. Из-за этой архитектуры конфликты могут возникать, если оба расширения создаются в одном шаблоне ARM.

Чтобы избежать конфликтов во время установки, используйте dependsOn директиву , чтобы убедиться, что расширения устанавливаются последовательно. Расширения можно устанавливать в любом порядке.

Эти инструкции по установке и скачиваемая пример конфигурации для настройки LAD 3.0:

  • Захватить и сохранить те же метрики, что и в LAD 2.3.
  • Захват полезного набора метрик файловой системы. Эта функция является новой в LAD 3.0.
  • Захватить коллекцию системного журнала по умолчанию, включенную LAD 2.3.
  • Обеспечение построения диаграмм и вывода оповещений на основе метрик виртуальных машин на портале Azure.

Загружаемая конфигурация приводится в качестве примера. Измените его в соответствии с вашими потребностями.

Предпосылки

  • Агент Linux Azure версии 2.2.0 или более поздней версии. Большинство образов в коллекции виртуальных машин Azure на базе Linux включает версию 2.2.7 или более позднюю. Чтобы проверить версию, установленную в виртуальной машине, выполните команду /usr/sbin/waagent -version. Если виртуальная машина выполняет старую версию, обновите гостевой агент.
  • Интерфейс командной строки Azure. При необходимости настройте среду Azure CLI на компьютере.
  • Команда wget. Если у вас его еще нет, установите его с помощью соответствующего диспетчера пакетов.
  • Существующая подписка Azure.
  • Существующая учетная запись хранения общего назначения для хранения данных. Учетные записи хранения общего назначения должны поддерживать хранилище таблиц. Учетная запись хранения BLOB-объектов не будет работать.
  • Python 2.

Требование Python

Для диагностического расширения в Linux требуется Python 2. Если виртуальная машина использует дистрибутив, который не включает Python 2 по умолчанию, необходимо установить его. Следующие примеры команд устанавливают Python 2 в различных дистрибутивах:

  • Red Hat, CentOS, Oracle: yum install -y python2
  • Ubuntu, Debian: apt-get install -y python2
  • SUSE: zypper install -y python2

Исполняемый python2 файл должен быть псевдонимом python. Вот один из методов, чтобы задать этот псевдоним:

  1. Выполните следующую команду, чтобы удалить все существующие псевдонимы.

    sudo update-alternatives --remove-all python
    
  2. Выполните следующую команду, чтобы создать псевдоним.

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
    

Пример установки

Пример конфигурации, скачанный в следующих примерах, собирает набор стандартных данных и отправляет его в хранилище таблиц. URL-адрес и содержимое примера конфигурации могут меняться.

В большинстве случаев следует скачивать копию JSON-файла с параметрами портала и настраивать ее в соответствии со своими потребностями. Затем используйте шаблоны или собственную автоматизацию, чтобы использовать настраиваемую версию файла конфигурации, а не скачивать с URL-адреса каждый раз.

Примечание.

Для следующих примеров заполните правильные значения переменных в первом разделе перед запуском кода.

Пример Azure CLI

# Set your Azure VM diagnostic variables.
my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
my_linux_vm=<your_azure_linux_vm_name>
my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>

# Login to Azure before you do anything else.
az login

# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>

# Download the sample public settings. (You could also use curl or any web browser.)
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json

# Build the VM resource ID. Replace the storage account name and resource ID in the public settings.
my_vm_resource_id=$(az vm show -g $my_resource_group -n $my_linux_vm --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vm_resource_id#g" portal_public_settings.json

# Build the protected settings (storage account SAS token).
my_diagnostic_storage_account_sastoken=$(az storage account generate-sas --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z --permissions wlacu --resource-types co --services bt -o tsv)
my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"

# Finally, tell Azure to install and enable the extension.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group $my_resource_group --vm-name $my_linux_vm --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json

Пример Azure CLI для установки LAD 3.0 в экземпляре масштабируемого набора виртуальных машин

#Set your Azure Virtual Machine Scale Sets diagnostic variables.
$my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
$my_linux_vmss=<your_azure_linux_vmss_name>
$my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>

# Login to Azure before you do anything else.
az login

# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>

# Download the sample public settings. (You could also use curl or any web browser.)
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json

# Build the virtual machine scale set resource ID. Replace the storage account name and resource ID in the public settings.
$my_vmss_resource_id=$(az vmss show -g $my_resource_group -n $my_linux_vmss --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vmss_resource_id#g" portal_public_settings.json

# Build the protected settings (storage account SAS token).
$my_diagnostic_storage_account_sastoken=$(az storage account generate-sas --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z --permissions wlacu --resource-types co --services bt -o tsv)
$my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"

# Finally, tell Azure to install and enable the extension.
az vmss extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group $my_resource_group --vmss-name $my_linux_vmss --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json

Пример для PowerShell

$storageAccountName = "yourStorageAccountName"
$storageAccountResourceGroup = "yourStorageAccountResourceGroupName"
$vmName = "yourVMName"
$VMresourceGroup = "yourVMResourceGroupName"

# Get the VM object
$vm = Get-AzVM -Name $vmName -ResourceGroupName $VMresourceGroup

# Get the public settings template from GitHub and update the templated values for storage account and resource ID
$publicSettings = (Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json).Content
$publicSettings = $publicSettings.Replace('__DIAGNOSTIC_STORAGE_ACCOUNT__', $storageAccountName)
$publicSettings = $publicSettings.Replace('__VM_RESOURCE_ID__', $vm.Id)

# If you have customized public settings, you can inline those rather than using the preceding template: $publicSettings = '{"ladCfg":  { ... },}'

# Generate a SAS token for the agent to use to authenticate with the storage account
$sasToken = New-AzStorageAccountSASToken -Service Blob,Table -ResourceType Service,Container,Object -Permission "racwdlup" -Context (Get-AzStorageAccount -ResourceGroupName $storageAccountResourceGroup -AccountName $storageAccountName).Context -ExpiryTime $([System.DateTime]::Now.AddYears(10))

# Build the protected settings (storage account SAS token)
$protectedSettings="{'storageAccountName': '$storageAccountName', 'storageAccountSasToken': '$sasToken'}"

# Finally, install the extension with the settings you built
Set-AzVMExtension -ResourceGroupName $VMresourceGroup -VMName $vmName -Location $vm.Location -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0

Обновление параметров расширения

После изменения защищенных или общедоступных параметров разверните их на виртуальной машине, выполнив ту же команду. Если параметры изменились, обновления отправляются в расширение. LAD повторно загружает конфигурацию и перезапускается.

Переход с предыдущих версий расширения

Последняя версия расширения — 4.0.

Это важно

Это расширение содержит критические изменения в конфигурации. Одно из таких изменений улучшило безопасность расширения, поэтому обратная совместимость с 2.x не может быть сохранена. Кроме того, издатель расширений для этого расширения отличается от издателя для версий 2.x.

Чтобы перейти с версии 2.x на новую версию, сначала удалите старое расширение (под старым именем издателя). Затем установите версию 3.

Рекомендации.

  • Установите расширение с включенным автоматическим дополнительным обновлением версии.
    • На виртуальных машинах классической модели развертывания укажите версию 3.* , если вы устанавливаете расширение с помощью Azure XPLAT CLI или PowerShell.
    • В шаблон развертывания для виртуальных машин в модели деплоймента Azure Resource Manager включите параметр "autoUpgradeMinorVersion": true.
  • Используйте новую или другую учетную запись хранения для LAD 3.0. LAD 2.3 и LAD 3.0 имеют несколько небольших несовместимости, которые делают общий доступ к учетной записи проблемным:
    • LAD 3.0 хранит события системного журнала в таблице с другим именем.
    • counterSpecifier Строки для builtin метрик отличаются в LAD 3.0.

Защищенные параметры

Этот набор данных конфигурации включает в себя конфиденциальные сведения, которые не должны быть общедоступными. Например, в нем содержатся учетные данные хранилища. Эти параметры передаются и хранятся расширением в зашифрованной форме.

{
    "storageAccountName" : "the storage account to receive data",
    "storageAccountEndPoint": "the hostname suffix for the cloud for this account",
    "storageAccountSasToken": "SAS access token",
    "mdsdHttpProxy": "HTTP proxy settings",
    "sinksConfig": { ... }
}
Имя Ценность
storageAccountName Имя учетной записи хранения, в которой данные записываются расширением.
storageAccountEndPoint Конечная точка, определяющая облако, в котором находится учетная запись хранения (необязательно). Если этот параметр отсутствует, LAD по умолчанию — это общедоступное облако Azure. https://core.windows.net Чтобы использовать учетную запись хранения в Azure в Германии, Azure для государственных организаций или Microsoft Azure под управлением 21Vianet, задайте это значение как необходимое.
storageAccountSasToken Маркер SAS учетной записи для сервисов объектов BLOB и таблиц (ss='bt'). Она применяется к контейнерам и объектам (srt='co'). Он предоставляет разрешения на добавление, создание, получение списка, обновление и запись (sp='acluw'). Не включайте начальный вопросительный знак (?).
mdsdHttpProxy (Необязательно) Сведения о прокси-сервере HTTP, необходимые расширению для подключения к указанной учетной записи хранения и конечной точке.
sinksConfig Сведения об альтернативных местах назначения, в которые могут доставляться метрики и события (необязательно). В следующих разделах рассматриваются сведения о каждом приемнике данных, поддерживаемом расширением.

Чтобы получить маркер SAS в шаблоне ARM, используйте функцию listAccountSas. Пример такого шаблона см. в разделе Пример функции list.

С помощью портала Azure можно создать необходимый маркер SAS:

  1. Выберите учетную запись хранения общего назначения, в которую расширение будет записывать данные.
  2. В меню слева в разделе "Параметры" выберите подписанный URL-адрес.
  3. Сделайте выбор, как описано ранее.
  4. Выберите "Создать SAS".

Снимок экрана: страница подписанного URL-адреса с кнопкой

Скопируйте созданный SAS в storageAccountSasToken поле. Удалите начальный вопросительный знак (?).

sinksConfig

"sinksConfig": {
    "sink": [
        {
            "name": "sinkname",
            "type": "sinktype",
            ...
        },
        ...
    ]
},

Дополнительный sinksConfig раздел определяет больше назначений, в которые расширение отправляет собранные сведения. Массив sink содержит объект для каждого дополнительного приемника данных. Атрибут type определяет другие атрибуты в этих объектах.

Элемент Ценность
имя Строка, которая ссылается на этот приемник в другой точке конфигурации расширения.
тип Тип определяемого приемника. Определяет другие значения (если таковые) в экземплярах этого типа.

LAD версии 3.0 поддерживает два типа приемников: EventHub и JsonBlob.

Приемник EventHub

"sink": [
    {
        "name": "sinkname",
        "type": "EventHub",
        "sasURL": "https SAS URL"
    },
    ...
]

Запись "sasURL" содержит полный URL-адрес, включая маркер SAS, для концентратора событий, в котором должны быть опубликованы данные. LAD требует, чтобы SAS назовет политику, которая включает утверждение отправки.

Рассмотрим пример.

  • Создайте пространство contosohubимен Центров событий Azure.
  • Создайте концентратор событий в этом пространстве имен с именем syslogmsgs.
  • Создайте политику общего доступа в концентраторе событий, которая включает утверждение отправки. Присвойте политике writerимя.

Если sas хорош до полуночи UTC 1 января 2018 г., значение sasURL может выглядеть следующим образом:

https://contosohub.servicebus.windows.net/syslogmsgs?sr=contosohub.servicebus.windows.net%2fsyslogmsgs&sig=xxxxxxxxxxxxxxxxxxxxxxxxx&se=1514764800&skn=writer

Дополнительные сведения о создании маркеров SAS для Центров событий и получении данных о них можно найти в статье Создание маркера SAS.

Приемник JsonBlob

"sink": [
    {
        "name": "sinkname",
        "type": "JsonBlob"
    },
    ...
]

Данные, передаваемые в приемник JsonBlob, сохраняются в BLOB-объектах в службе хранилища Azure. Каждый экземпляр LAD каждый час создает BLOB-объект для каждого имени приемника. Каждый BLOB-объект всегда содержит массив объектов в синтаксически правильном формате JSON. Новые записи добавляются в массив атомарным образом.

BLOB-объекты хранятся в контейнере, имя которого совпадает с именем приемника. Правила службы хранилища Azure для имен контейнеров BLOB-объектов применимы и к именам приемников JsonBlob. Имя должно содержать от 3 до 63 буквенно-цифровых символов ASCII или дефисов.

Общедоступные параметры

Структура общедоступных параметров содержит различные блоки параметров, которые управляют информацией, которую собирает расширение. Каждый параметр является необязательным. Если указать ladCfg, необходимо также указать StorageAccount.

{
    "ladCfg":  { ... },
    "perfCfg": { ... },
    "fileLogs": { ... },
    "StorageAccount": "the storage account to receive data",
    "mdsdHttpProxy" : ""
}
Элемент Ценность
StorageAccount Имя учетной записи хранения, в которой данные записываются расширением. Это должно быть имя, указанное в защищенных параметрах.
mdsdHttpProxy (Необязательно) То же, что и в защищенных параметрах. Общедоступное значение переопределяется частным значением, если оно задано. Поместите параметры прокси-сервера, содержащие секрет, например пароль, в защищенных параметрах.

В следующих разделах приведены сведения о оставшихся элементах.

ladCfg

"ladCfg": {
    "diagnosticMonitorConfiguration": {
        "eventVolume": "Medium",
        "metrics": { ... },
        "performanceCounters": { ... },
        "syslogEvents": { ... }
    },
    "sampleRateInSeconds": 15
}

Структура является необязательной ladCfg . Он управляет сбором метрик и журналов, которые доставляются в службу метрик Azure Monitor и другим приемникам данных. Необходимо указать следующее:

  • Либо или performanceCounterssyslogEvents оба.
  • Структура metrics .
Элемент Ценность
объем события Определяет количество разделов, создаваемых в таблице хранилища (необязательно). Это должно быть "Large", "Medium"или "Small". Если значение не указано, используется "Medium"значение по умолчанию.
sampleRateInSeconds (Необязательно) Интервал по умолчанию между коллекцией необработанных (необработанных) метрик. Минимальная поддерживаемая частота выборки — 15 секунд. Если значение не указано, используется 15значение по умолчанию.

Метрики

"metrics": {
    "resourceId": "/subscriptions/...",
    "metricAggregation" : [
        { "scheduledTransferPeriod" : "PT1H" },
        { "scheduledTransferPeriod" : "PT5M" }
    ]
}
Элемент Ценность
идентификатор ресурса Идентификатор ресурса Azure Resource Manager виртуальной машины или масштабируемого набора, к которому принадлежит виртуальная машина. Этот параметр также должен быть указан, если в конфигурации используется любой JsonBlob приемник.
scheduledTransferPeriod Частота, с которой совокупные метрики должны вычисляться и передаваться в службу метрик Azure Monitor. Частота выражается в формате интервала времени по стандарту IS 8601. Наименьший период передачи составляет 60 секунд, то есть PT1M. Укажите хотя бы один scheduledTransferPeriod.

Выборка метрик, указанных в разделе performanceCounters, производится каждые 15 секунд или с частотой, явно определенной для этого счетчика. Если задано несколько значений частоты scheduledTransferPeriod, как в нашем примере, то каждое агрегирование производится независимо.

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

"performanceCounters": {
    "sinks": "",
    "performanceCounterConfiguration": [
        {
            "type": "builtin",
            "class": "Processor",
            "counter": "PercentIdleTime",
            "counterSpecifier": "/builtin/Processor/PercentIdleTime",
            "condition": "IsAggregate=TRUE",
            "sampleRate": "PT15S",
            "unit": "Percent",
            "annotation": [
                {
                    "displayName" : "Aggregate CPU %idle time",
                    "locale" : "en-us"
                }
            ]
        }
    ]
}

Этот необязательный раздел performanceCounters управляет сбором метрик. Необработанные образцы агрегируются для каждого scheduledTransferPeriod из них для получения следующих значений:

  • Mean
  • Минимум
  • Максимум
  • Последнее собранное значение
  • Количество необработанных выборок для вычисления агрегата
Элемент Ценность
sinks Разделенный запятыми список имен приемников, в которые LAD отправляет агрегированные результаты метрик (необязательно). Все агрегированные метрики публикуются в каждом приемнике из списка. Пример: "EHsink1, myjsonsink". Дополнительные сведения см. в разделе sinksConfig.
тип Определяет фактический поставщик метрики.
class Вместе с "counter" определяет конкретную метрику в пространстве имен поставщика.
counter Вместе с "class" определяет конкретную метрику в пространстве имен поставщика.
counterSpecifier Определяет конкретную метрику в пространстве имен метрик Azure Monitor.
условие (Необязательно) Выбирает конкретный экземпляр объекта, к которому применяется метрика. Или выбирает агрегирование для всех экземпляров этого объекта.
sampleRate Интервал IS 8601, определяющий частоту, с которой собираются необработанные выборки этой метрики. Если значение не задано, интервал сбора задается значением sampleRateInSeconds. Минимальная поддерживаемая частота выборки — 15 секунд (PT15S).
единица Определяет единицу измерения для метрики. Допустимыми значениями являются такие строки: "Count", "Bytes", "Seconds", "Percent", "CountPerSecond", "BytesPerSecond", "Millisecond". Потребители собранных данных ожидают, что значения собранных данных выражены в этой единице. LAD игнорирует это поле.
displayName Метка, присоединенная к данным в метриках Azure Monitor. Эта метка указывается на языке, определенном в соответствующем параметре локализации. LAD игнорирует это поле.

counterSpecifier — произвольный идентификатор. Потребители метрик, такие как функция диаграммы и оповещения портала Azure, используются counterSpecifier в качестве ключа, определяющего метрику или экземпляр метрики.

Для метрик builtin рекомендуется использовать значения counterSpecifier, начинающиеся с /builtin/. Если вы собираете конкретный экземпляр метрики, рекомендуется прикрепить идентификатор экземпляра к значению counterSpecifier .

Ниже приведены некоторые примеры.

  • /builtin/Processor/PercentIdleTime — среднее время простоя для всех виртуальных ЦП
  • /builtin/Disk/FreeSpace(/mnt) — свободное место для файловой /mnt системы
  • /builtin/Disk/FreeSpace — свободное место в среднем во всех подключенных файловых системах

На портале Azure и в LAD не ожидается, что значение counterSpecifier соответствует какому-то шаблону. Соблюдайте единый формат при создании значений counterSpecifier.

Если вы укажете performanceCounters, расширение LAD всегда записывает данные в таблицу в Azure Storage. Эти же данные могут записываться в BLOB-объекты JSON и (или) в Центры событий. Но вы не можете отключить хранение данных в таблицу.

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

Параметр eventVolume позволяет распределять записи по нескольким разделам: 1 раздел (малый), 10 (средний) или 100 (большой). Чтобы избежать регулирования трафика, обычно достаточно средних перегородок.

Функция метрик Azure Monitor на портале Azure использует данные в этой таблице для создания графов или активации оповещений. Имя таблицы образуется путем сцепления следующих строк:

  • WADMetrics
  • "scheduledTransferPeriod" для агрегированных значений, хранящихся в таблице;
  • P10DV2S
  • Дата, в форме "ГГГГММДД", которая изменяется каждые 10 дней

Примеры: WADMetricsPT1HP10DV2S20170410 и WADMetricsPT1MP10DV2S20170609.

события syslog

"syslogEvents": {
    "sinks": "",
    "syslogEventConfiguration": {
        "facilityName1": "minSeverity",
        "facilityName2": "minSeverity",
        ...
    }
}

Необязательный раздел syslogEvents управляет сбором событий из системного журнала. Если этот раздел отсутствует, события системного журнала не фиксируются.

Коллекция syslogEventConfiguration содержит одну запись для каждой интересующей программы регистрации событий syslog. Если параметр minSeverity равен "NONE" для конкретного объекта либо если этот объект отсутствует в элементе, события от этого объекта не собираются.

Элемент Ценность
sinks Список, разделенный запятыми, с именами приемников, куда публикуются отдельные события журнала. Все события журнала, соответствующие ограничениям в syslogEventConfiguration, публикуются в каждом приемнике из списка. Пример: "EHforsyslog"
Название объекта Имя службы системного журнала, например "LOG_USER" или "LOG\LOCAL0". Дополнительные сведения см. в разделе "Объект" страницы "Человек системного журнала".
minSeverity Уровень серьезности системного журнала, например "LOG_ERR" или "LOG_INFO". Дополнительные сведения см. в разделе "Уровень" страницы "Человек системного журнала". Расширение фиксирует события, отправленные на объект, на указанном или более высоком уровне.

При указании syslogEvents LAD всегда записывает данные в таблицу с именем LinuxSyslogVer2v0 в службе хранилища Azure. Эти же данные могут записываться в BLOB-объекты JSON и (или) в Центры событий. Но вы не можете отключить хранение данных в таблицу.

perfCfg

Этот perfCfg раздел является необязательным. Он управляет выполнением произвольных запросов инфраструктуры управления открытым доступом (OMI ).

"perfCfg": [
    {
        "namespace": "root/scx",
        "query": "SELECT PercentAvailableMemory, PercentUsedSwap FROM SCX_MemoryStatisticalInformation",
        "table": "LinuxOldMemory",
        "frequency": 300,
        "sinks": ""
    }
]
Элемент Ценность
namespace (Необязательно) Пространство имен OMI, в котором должен выполняться запрос. Если не указано, значение по умолчанию "root/scx". Она реализована кроссплатформенными поставщиками System Center.
запрос Выполняемый запрос OMI.
таблица (Необязательно) Таблица хранилища Azure в указанной учетной записи хранения. Дополнительные сведения см. в разделе "Защищенные параметры".
частота (Необязательно) Количество секунд между выполнением запроса. Значение по умолчанию — 300 (5 минут). Минимальное значение — 15 секунд.
sinks (Необязательно) Список имен приемников с разделителями-запятыми, в котором должны быть опубликованы необработанные результаты выборки метрик. Агрегирование этих необработанных примеров не вычисляется расширением или метриками Azure Monitor.

Необходимо указать значение "table" и (или) "sinks".

fileLogs

Раздел fileLogs управляет записью файлов журналов. LAD записывает новые текстовые строки по мере их записи в файл. Он записывает их в строки таблицы и (или) любые указанные приемники (JsonBlob или EventHub).

Примечание.

Данные fileLogs собираются подкомпонентом LAD с именем omsagent. Для сбора fileLogs убедитесь, что у пользователя omsagent есть права доступа на чтение указанных файлов. Пользователь также должен иметь разрешения на выполнение всех каталогов в пути к файлу. После установки LAD можно проверить разрешения, выполнив команду sudo su omsagent -c 'cat /path/to/file'.

"fileLogs": [
    {
        "file": "/var/log/mydaemonlog",
        "table": "MyDaemonEvents",
        "sinks": ""
    }
]
Элемент Ценность
файл Полное имя пути файла журнала для просмотра и записи. Имя пути должно называть один файл. Он не может назвать каталог или содержать подстановочные знаки. Учетная запись пользователя omsagent должна иметь доступ на чтение ко всем каталогам в пути к этому файлу.
таблица (Необязательно) Таблица службы хранилища Azure, в которую записываются новые строки из "хвоста" файла. Эта таблица должна находиться в учетной записи хранения, которая указана в защищенной конфигурации.
sinks Разделенный запятыми список имен множества приемников, в которые отправляются строки из журнала (необязательно).

Необходимо указать либо "table" или и то, и "sinks"другое.

Метрики, поддерживаемые встроенным поставщиком

Поставщик метрик builtin является источником метрик, наиболее интересных широкому кругу пользователей. Эти метрики делятся на пять основных классов:

  • Процессор
  • Память
  • Сеть
  • Файловая система
  • Disk

Встроенные метрики для класса "Процессор"

Класс метрик "Процессор" предоставляет сведения об использовании процессоров в виртуальной машине. В результате статистической обработки процентных значений получается среднее значение по всем ЦП.

Если в виртуальной машине с двумя виртуальными ЦП нагрузка на один ЦП равна 100 %, а второй полностью бездействует, то PercentIdleTime получает значение 50. Если в течение аналогичного же периода каждый виртуальный процессор был загружен на 50 %, значение счетчика также будет равно 50. Если на виртуальной машине с четырьмя виртуальными ЦП один из виртуальных ЦП загружен на 100 %, а остальные простаивают, то PercentIdleTime получает значение 75.

Counter Значение
ПроцентВремениПростоя Процент времени в течение агрегационного окна, когда процессоры выполняли цикл простоя ядра.
Процент времени обработки процессора Процент времени выполнения потока бездействия
PercentIOWaitTime Процент времени ожидания завершения операций ввода-вывода
PercentInterruptTime Процент времени выполнения аппаратных или программных прерываний и ЦП (отложенные вызовы процедур)
PercentUserTime От времени бездействия в окне агрегирования процент времени, затраченного в пользовательском режиме в обычном приоритете
PercentNiceTime От времени бездействия процент, потраченный на пониженный (хороший) приоритет
PercentPrivilegedTime От времени бездействия процент, потраченный в режиме привилегированного (ядра)

Сумма показаний первых четырех счетчиков должна составлять 100 %. Последние три счетчика также дают в сумме 100 %. Сумма PercentProcessorTime, PercentIOWaitTime и PercentInterruptTime распределяется между этими тремя счетчиками.

Чтобы агрегировать одну метрику во всех процессорах, задайте."condition": "IsAggregate=TRUE" Чтобы получить метрику для определенного процессора, например второй логический процессор виртуальной машины с четырьмя виртуальными ЦП, установите."condition": "Name=\\"1\\"" Логические номера процессора находятся в диапазоне [0..n-1].

Встроенные метрики для класса "Память"

Класс метрик "Память" предоставляет сведения об использовании памяти, разбиении по страницам и подкачке.

Counter Значение
Доступная память Доступный объем физической памяти в МиБ.
PercentAvailableMemory Доступный объем физической памяти в процентах от общего объема памяти
Использованная память Используемый объем физической памяти (МиБ).
ПроцентИспользуемойПамяти Используемый объем физической памяти в процентах от общего объема памяти.
Страницы_в_секунду Общее количество операций подкачки (чтения и записи).
Чтение страниц в секунду Страницы, считанные из резервного хранилища, например файл подкачки, файл программы и сопоставленный файл
PagesWrittenPerSec Страницы, записанные в резервное хранилище, такие как файл подкачки и сопоставленный файл
AvailableSwap Размер неиспользуемой области подкачки (МиБ).
PercentAvailableSwap Размер неиспользуемой области подкачки в процентах от общего размера области подкачки
UsedSwap Размер используемой области подкачки (МиБ).
PercentUsedSwap Размер используемой области подкачки в процентах от общего размера области подкачки

Этот класс метрик имеет только один экземпляр. Атрибут "condition" не имеет полезных параметров и его следует опускать.

Встроенные метрики для класса "Сеть"

Класс метрик "Сеть" предоставляет сведения о сетевой активности в отдельных сетевых интерфейсах с момента запуска.

LAD не выводит метрики пропускной способности. Эти метрики можно получить из метрик хоста.

Counter Значение
Переданные байты Общее количество байт, отправленных с момента запуска.
BytesReceived Общее количество байт, полученных с момента запуска.
Общее количество байтов Общее количество байт, отправленных или полученных с момента запуска.
Переданные пакеты Общее количество пакетов, отправленных с момента запуска.
PacketsReceived Общее количество пакетов, полученных с момента запуска
TotalRxErrors Количество ошибок приема с момента запуска.
TotalTxErrors Количество ошибок передачи с момента запуска
ОбщееКоличествоСтолкновений Число столкновений, сообщённых сетевыми портами с момента запуска

Хотя класс Network экземплярен, LAD не поддерживает сбор метрик сети, агрегированных на всех сетевых устройствах. Чтобы получить метрики для определенного интерфейса, например eth0, задайте "condition": "InstanceID=\\"eth0\\"".

Встроенные метрики для класса "Файловая система"

Класс метрик "Файловая система" предоставляет сведения об использовании файловой системы. Абсолютные и процентные значения отображаются обычным пользователем (а не корневым).

Counter Значение
Свободное пространство Доступное дисковое пространство в байтах.
UsedSpace Используемое дисковое пространство в байтах.
PercentFreeSpace Процент свободного места
ПроцентИспользованногоПространства Процент используемого пространства
PercentFreeInodes Процент неиспользуемых индексных узлов (инодов)
PercentUsedInodes Процент выделенных (используемых) индексных дескрипторов по всем файловым системам
BytesReadPerSecond Число прочитанных байт за секунду.
BytesWrittenPerSecond Число записанных байт за секунду.
Байты в секунду Число прочитанных или записанных байт за секунду.
ReadsPerSecond Число операций чтения за секунду.
WritesPerSecond Число операций записи за секунду.
TransfersPerSecond Число операций чтения или записи за секунду.

Агрегированные значения во всех файловых системах можно получить, задав параметр "condition": "IsAggregate=True". Получение значений для определенной подключенной файловой системы, например "/mnt", по параметру "condition": 'Name="/mnt"'.

Примечание.

Если вы работаете на портале Azure вместо JSON, форма поля условия — Name='/mnt'это .

Встроенные метрики для класса "Диск"

Класс метрик "Диск" предоставляет сведения об использовании дискового устройства. Эти статистические данные относятся ко всему диску.

Если на устройстве несколько файловых систем, счетчики для этого устройства фактически агрегируются по всем файловым системам.

Counter Значение
ReadsPerSecond Число операций чтения за секунду.
WritesPerSecond Число операций записи за секунду.
TransfersPerSecond Общее число операций за секунду.
Среднее время чтения Среднее число секунд на операцию чтения.
AverageWriteTime Среднее число секунд на операцию записи.
Среднее время передачи Среднее число секунд на операцию.
AverageDiskQueueLength Среднее число операций с диском, помещенных в очередь.
ReadBytesPerSecond Количество прочитанных байт за секунду.
WriteBytesPerSecond Количество записанных байт за секунду.
Байты в секунду Количество прочитанных или записанных байт за секунду.

Статистические значения можно получить на всех дисках, задав параметр "condition": "IsAggregate=True". Чтобы получить сведения для конкретного устройства (например, /dev/sdf1), задайте."condition": "Name=\\"/dev/sdf1\\""

Установка и настройка LAD 3.0

Azure CLI (интерфейс командной строки Azure)

Если защищенные параметры находятся в файле ProtectedSettings.json , а сведения о общедоступной конфигурации находятся в PublicSettings.json, выполните следующую команду.

az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group <resource_group_name> --vm-name <vm_name> --protected-settings ProtectedSettings.json --settings PublicSettings.json

Эта команда предполагает, что вы используете режим Azure Resource Manager в Azure CLI. Чтобы настроить LAD для виртуальных машин классической модели развертывания, перейдите в режим asm (azure config mode asm) и опустите имя группы ресурсов в команде.

Дополнительные сведения см. в документации по кроссплатформенному интерфейсу командной строки.

PowerShell

Если защищенные параметры находятся в переменной $protectedSettings, а сведения об общедоступной конфигурации находятся в переменной $publicSettings, запустите следующую команду:

Set-AzVMExtension -ResourceGroupName <resource_group_name> -VMName <vm_name> -Location <vm_location> -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0

Пример конфигурации LAD 3.0

В соответствии с предыдущими определениями в этом разделе приведен пример конфигурации расширения LAD 3.0 и некоторые объяснения. Чтобы применить этот пример к вашему делу, используйте собственное имя учетной записи хранения, маркер SAS учетной записи и маркеры SAS Центров событий.

Примечание.

В зависимости от того, используется ли Azure CLI или PowerShell для установки LAD, метод предоставления общедоступных и защищенных параметров отличается:

  • Если вы используете Azure CLI, сохраните приведенные ниже параметры в файлах ProtectedSettings.json и PublicSettings.json, чтобы применить их с приведенным ранее примером команды.
  • Если вы используете PowerShell, сохраните следующие параметры и $protectedSettings$publicSettings выполните его.$protectedSettings = '{ ... }'

Защищенные параметры

Эти защищенные параметры настраивают следующее:

  • Учетная запись для хранения данных.
  • Соответствующий маркер SAS учетной записи.
  • Несколько приемников (JsonBlob или EventHub с маркерами SAS).
{
  "storageAccountName": "yourdiagstgacct",
  "storageAccountSasToken": "sv=xxxx-xx-xx&ss=bt&srt=co&sp=wlacu&st=yyyy-yy-yyT21%3A22%3A00Z&se=zzzz-zz-zzT21%3A22%3A00Z&sig=fake_signature",
  "sinksConfig": {
    "sink": [
      {
        "name": "SyslogJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "FilelogJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "LinuxCpuJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "MyJsonMetricsBlob",
        "type": "JsonBlob"
      },
      {
        "name": "LinuxCpuEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=fake_signature&se=1808096361&skn=yourehpolicy"
      },
      {
        "name": "MyMetricEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&skn=yourehpolicy"
      },
      {
        "name": "LoggingEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&se=1808096361&skn=yourehpolicy"
      }
    ]
  }
}

Общедоступные параметры

Настройки общего доступа заставляют LAD:

  • Отправка метрик процента процессорного времени и используемого дискового пространства в таблицу WADMetrics*.
  • Загрузить сообщения из источника syslog "user" с уровнем серьезности "info" в таблицу LinuxSyslog*.
  • Отправьте необработанные результаты запроса OMI (PercentProcessorTime и PercentIdleTime) в именованную LinuxCPU таблицу.
  • Отправка строк, добавленных к файлу /var/log/myladtestlog, в таблицу MyLadTestLog.

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

  • Хранилище BLOB-объектов Azure. Имя контейнера определено в приемнике JsonBlob.
  • Конечная точка Центров событий, как указано в приемнике EventHub .
{
  "StorageAccount": "yourdiagstgacct",
  "ladCfg": {
    "sampleRateInSeconds": 15,
    "diagnosticMonitorConfiguration": {
      "performanceCounters": {
        "sinks": "MyMetricEventHub,MyJsonMetricsBlob",
        "performanceCounterConfiguration": [
          {
            "unit": "Percent",
            "type": "builtin",
            "counter": "PercentProcessorTime",
            "counterSpecifier": "/builtin/Processor/PercentProcessorTime",
            "annotation": [
              {
                "locale": "en-us",
                "displayName": "Aggregate CPU %utilization"
              }
            ],
            "condition": "IsAggregate=TRUE",
            "class": "Processor"
          },
          {
            "unit": "Bytes",
            "type": "builtin",
            "counter": "UsedSpace",
            "counterSpecifier": "/builtin/FileSystem/UsedSpace",
            "annotation": [
              {
                "locale": "en-us",
                "displayName": "Used disk space on /"
              }
            ],
            "condition": "Name=\"/\"",
            "class": "Filesystem"
          }
        ]
      },
      "metrics": {
        "metricAggregation": [
          {
            "scheduledTransferPeriod": "PT1H"
          },
          {
            "scheduledTransferPeriod": "PT1M"
          }
        ],
        "resourceId": "/subscriptions/your_azure_subscription_id/resourceGroups/your_resource_group_name/providers/Microsoft.Compute/virtualMachines/your_vm_name"
      },
      "eventVolume": "Large",
      "syslogEvents": {
        "sinks": "SyslogJsonBlob,LoggingEventHub",
        "syslogEventConfiguration": {
          "LOG_USER": "LOG_INFO"
        }
      }
    }
  },
  "perfCfg": [
    {
      "query": "SELECT PercentProcessorTime, PercentIdleTime FROM SCX_ProcessorStatisticalInformation WHERE Name='_TOTAL'",
      "table": "LinuxCpu",
      "frequency": 60,
      "sinks": "LinuxCpuJsonBlob,LinuxCpuEventHub"
    }
  ],
  "fileLogs": [
    {
      "file": "/var/log/myladtestlog",
      "table": "MyLadTestLog",
      "sinks": "FilelogJsonBlob,LoggingEventHub"
    }
  ]
}

В resourceId конфигурации должно совпадать значение виртуальной машины или масштабируемого набора виртуальных машин.

  • Функции построения диаграмм и вывода оповещений на основе метрик платформы Azure известны для данной виртуальной машины resourceId, на которой вы работаете. Ожидается, что данные для виртуальной машины будут находиться с помощью resourceId ключа подстановки.
  • Если вы используете автомасштабирование Azure, resourceId то в конфигурации автомасштабирования должно соответствовать используемому resourceId LAD.
  • Идентификатор resourceId встраивается в имена BLOB-объектов в формате JSON, которые сохраняются расширением LAD.

Просмотр данных

Используйте портал Azure для просмотра данных о производительности или задания оповещений:

Снимок экрана: портал Azure. Выбрано используемое место на диске метрик. Показана результирующая диаграмма.

Данные performanceCounters всегда хранятся в таблице службы хранилища Azure. Интерфейсы API службы хранилища Azure доступны для множества языков и платформ.

Данные, отправляемые в приемники JsonBlob, сохраняются в BLOB-объектах в учетной записи хранения, указанной в защищенных параметрах. Данные BLOB-объектов можно использовать с помощью любых API хранилища BLOB-объектов Azure.

Для доступа к данным в службе хранилища Azure также можно использовать следующие средства пользовательского интерфейса:

На следующем снимку экрана сеанса обозревателя службы хранилища Azure показаны созданные таблицы и контейнеры службы хранилища Azure из правильно настроенного расширения LAD 3.0 на тестовой виртуальной машине. Образ не соответствует образцу конфигурации LAD 3.0.

Снимок экрана: Обозреватель службы хранилища Azure.

Сведения об использовании сообщений, публикуемых в конечной точке Центров событий, см. в соответствующей документации по Центрам событий.

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