Отслеживание метрик и журналов с помощью диагностического расширения для 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. Вот один из способов настройки этого псевдонима:
Выполните следующую команду, чтобы удалить все существующие псевдонимы.
sudo update-alternatives --remove-all python
Выполните следующую команду, чтобы создать нужный псевдоним.
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:
- Выберите учетную запись хранения общего назначения, в которую расширение будет записывать данные.
- В меню слева в разделе Параметры выберите Подписанный URL-адрес.
- Выберите требуемые элементы, как описано ранее.
- Щелкните Создать SAS.
Скопируйте созданный 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 (уровень) на справочной странице системного журнала. Расширение собирает события, отправляемые субъекту, с указанным или более высоким уровнем. |
При указании 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": ""
}
]
Элемент | Значение |
---|---|
пространство имен | Пространство имен 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.
Данные performanceCounters
всегда хранятся в таблице службы хранилища Azure. Интерфейсы API службы хранилища Azure доступны для множества языков и платформ.
Данные, отправляемые в приемники JsonBlob
, сохраняются в BLOB-объектах в учетной записи хранения, указанной в защищенных параметрах. Вы можете использовать данные BLOB-объектов с помощью любых API Хранилища BLOB-объектов Azure.
Для доступа к данным в службе хранилища Azure также можно использовать следующие средства пользовательского интерфейса:
- Обозреватель серверов в Visual Studio.
- Обозреватель службы хранилища Azure
Снимок экрана: сеанс Обозреватель службы хранилища Azure с таблицами и контейнерами службы хранилища Azure, созданными правильно настроенным расширением LAD 3.0 на тестовой виртуальной машине. Это изображение не полностью соответствует примеру конфигурации LAD 3.0.
Сведения об использовании сообщений, публикуемых в конечной точке Центров событий, см. в соответствующей документации по Центрам событий.
Следующие шаги
- Создайте оповещения для собираемых метрик в Azure Monitor.
- Создайте диаграммы мониторинга для метрик.
- Создайте масштабируемый набор виртуальных машин, используя метрики для управления автоматическим масштабированием.