Бөлісу құралы:


Отслеживание метрик и журналов с помощью диагностического расширения для Linux 3.0

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который является состоянием "Конец жизни" (EOL). Обратите внимание на использование и план соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

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

Внимание

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

Введение

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

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

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

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

Это расширение можно включить с помощью командлетов Azure PowerShell, скриптов Azure CLI, шаблонов Azure Resource Manager (шаблонов 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

# 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 или PowerShell.
    • В виртуальных машинах на основе модели развертывания с помощью Azure Resource Manager включите в шаблон развертывания виртуальных машин параметр "autoUpgradeMinorVersion": true.
  • Для LAD 3.0 следует использовать новую или другую учетную запись хранения. LAD 2.3 и LAD 3.0 имеют несколько небольших несовместимости, которые делают общий доступ к учетной записи проблемным:
    • LAD 3.0 сохраняет события системного журнала в таблице с другим именем.
    • Также в LAD 3.0 используются другие строки counterSpecifier для метрик builtin.

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

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

{
    "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.

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

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

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

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

sinksConfig

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

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

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

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

Приемник EventHub

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

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

Например:

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

Если SAS имеет срок действия до 1 января 2018 года (время в формате UTC), значение 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 и другие приемники данных. Необходимо указать следующие данные:

  • performanceCounters и (или) syslogEvents;
  • структура metrics;
Элемент Значение
eventVolume Определяет количество разделов, создаваемых в таблице хранилища (необязательно). Допустимые варианты: "Large", "Medium" или "Small". Если значение не указано, по умолчанию используется "Medium".
sampleRateInSeconds Интервал по умолчанию между сбором необработанных (не объединенных) метрик (необязательно). Минимальная поддерживаемая частота выборки — 15 секунд. Если значение не указано, по умолчанию используется 15.

Метрики

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

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

performanceCounters

"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, и по ним вычисляются следующие значения:

  • Среднее
  • Минимум
  • Максимум
  • Последнее собранное значение
  • Количество необработанных выборок для вычисления агрегата
Элемент Значение
Приемники Разделенный запятыми список имен приемников, в которые LAD отправляет агрегированные результаты метрик (необязательно). Все агрегированные метрики публикуются в каждом приемнике из списка. Пример: "EHsink1, myjsonsink". Дополнительные сведения см. в разделе sinksConfig.
type Определяет фактический поставщик метрики.
class Вместе с элементом "counter" определяет конкретную метрику в пространстве имен поставщика.
людей Irisys Вместе с элементом "class" определяет конкретную метрику в пространстве имен поставщика.
counterSpecifier Определяет конкретную метрику в пространстве имен метрик Azure Monitor.
condition Выбирает конкретный экземпляр объекта, к которому применяется метрика (необязательно). Или выбирает агрегирование по всем экземплярам этого объекта.
sampleRate Интервал IS 8601, определяющий частоту, с которой собираются необработанные выборки этой метрики. Если значение не задано, интервал сбора данных определяется значением sampleRateInSeconds. Минимальная поддерживаемая частота выборки — 15 секунд (PT15S).
unit Определяет единицу измерения для метрики. Допустимыми значениями являются такие строки: "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. Эти же данные могут записываться в BLOB-объекты JSON и (или) в Центры событий. Однако нельзя отключить сохранение данных в таблице.

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

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

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

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

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

syslogEvents

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

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

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

Элемент Значение
Приемники Разделенный запятыми список имен приемников, в которых публикуются отдельные события журнала. Все события журнала, соответствующие ограничениям в syslogEventConfiguration, публикуются в каждом приемнике из списка. Пример: "EHforsyslog"
facilityName Имя субъекта системного журнала, например "LOG_USER" или "LOG\LOCAL0". Дополнительные сведения см. в разделе Facility (субъект) на справочной странице системного журнала.
minSeverity Уровень серьезности системного журнала, например "LOG_ERR" или "LOG_INFO". Дополнительные сведения см. в разделе Level (уровень) на справочной странице системного журнала. Расширение собирает события, отправляемые субъекту, с указанным или более высоким уровнем.

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

perfCfg

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

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

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

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

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

  • Процессор
  • Память
  • Network
  • Файловая система
  • Диск

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

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

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

Счетчик Значение
PercentIdleTime Процентная доля от периода статистической обработки, в течение которой процессоры выполняли цикл простоя ядра.
PercentProcessorTime Процентная доля времени, затраченного на выполнение любых потоков, кроме бездействующего.
PercentIOWaitTime Процентная доля времени, затраченного на ожидание завершения операций ввода-вывода.
PercentInterruptTime Процент времени, затраченный на выполнение аппаратных или программных прерываний и отложенных вызовов процедур
PercentUserTime Процентная доля времени, затраченного на выполнение операций в пользовательском режиме с обычным приоритетом, от периода статистической обработки за вычетом времени бездействия.
PercentNiceTime Процент времени, не являющегося временем бездействия, затраченный на выполнение операций с пониженным приоритетом (nice).
PercentPrivilegedTime Процент времени, не являющегося временем бездействия, затраченный на выполнение операций в привилегированном режиме (режиме ядра).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

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

Azure CLI

Если защищенные параметры находятся в файле 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 CLI режим Azure Resource Manager. Чтобы настроить 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 Центров событий.

Примечание.

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

  • Если вы используете 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*.
  • Отправка сообщений из субъекта системного журнала "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.

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

Следующие шаги