Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Мониторинг работоспособности приложения предоставляет важные сведения, которые позволяют определить, когда требуется администрирование и обновление развертывания. Azure Масштабируемые наборы виртуальных машин предоставляют поддержку последовательного обновления, включая автоматическое обновление образа ОС и автоматическое исправление гостевой виртуальной машины, которые зависят от мониторинга работоспособности отдельных экземпляров для обновления вашего развертывания. Вы также можете использовать расширение Application Health Extension для мониторинга работоспособности каждого экземпляра в вашем масштабируемом наборе и проведения ремонтных работ с помощью автоматического восстановления экземпляров.
В этой статье описывается, как использовать два типа расширения "Работоспособность приложений", "Двоичные состояния работоспособности" или "Богатые состояния здоровья" для мониторинга работоспособности приложений, развернутых на Масштабируемые наборы виртуальных машин.
Предварительные условия
Для работы с этой статьей нужны знания в следующих областях:
- Расширения виртуальной машины Azure.
- Изменение масштабируемых наборов виртуальных машин
Внимание
Расширение работоспособности приложений ожидает согласующегося ответа на проверку на настроенный порт tcp
или запрос по пути http/https
, чтобы обозначить виртуальную машину как работающую нормально. Если приложение не запущено на виртуальной машине или не удается настроить ответ пробы, виртуальная машина будет отображаться как неработоспособная (Состояния работоспособности 2-х значений) или неизвестная (Богатые состояния работоспособности). См. примеры для оценки состояния приложения, чтобы ознакомиться с примерами ответов зондов, отправляемых на локальную конечную точку.
Примечание.
Для масштабируемого набора виртуальных машин можно использовать только один источник мониторинга работоспособности, расширение работоспособности приложения или пробу работоспособности. Если у вас включены оба варианта, необходимо удалить один из них, прежде чем использовать службы оркестрации, такие как восстановление экземпляров или автоматическое обновление ОС.
Когда использовать расширение "Работоспособность приложения"
Расширение работоспособности приложений развертывается в экземпляре масштабируемого набора виртуальных машин и сообщает о работоспособности приложений из экземпляра масштабируемого набора. Модуль проверяет конечную точку локального приложения и обновляет состояние работоспособности на основе ответов TCP/HTTP(S), полученных от приложения. Это состояние работоспособности используется Azure для запуска восстановления неработоспособных экземпляров и определения того, имеет ли экземпляр право на операции обновления.
Расширение сообщает о состоянии из виртуальной машины и может использоваться в ситуациях, когда внешние проверки, например запросы состояния в Azure Load Balancer, использовать нельзя.
Бинарные и сложные состояния здоровья
Расширения здоровья приложений имеют два варианта: двойичные состояния здоровья и богатые состояния здоровья. В следующей таблице перечислены некоторые ключевые различия между двумя параметрами. В конце этого раздела приведены общие рекомендации.
Функции | Двоичные состояния здоровья | Богатые состояния здоровья |
---|---|---|
Доступные состояния здоровья | Два доступных состояния: здоровый, нездоровый | Четыре доступных состояния: в рабочем состоянии, неработоспособный, инициализация, неизвестно1 |
Отправка сигналов здоровья | Сигналы работоспособности отправляются через коды ответов HTTP/HTTPS или TCP-подключения. | Сигналы работоспособности по протоколу HTTP/HTTPS отправляются через код отклика пробы и текст ответа. Сигналы состояния системы через протокол TCP остаются неизменными по сравнению с двоичными состояниями работоспособности. |
Определение нездоровых экземпляров | Экземпляры автоматически попадают в неработоспособное состояние, если исправный сигнал не получен от приложения. Неработоспособный экземпляр может указать либо проблему с конфигурацией расширения (например, недоступной конечной точкой), либо проблему с приложением (например, код состояния, отличный от 200). | Экземпляры будут переходить только в неработоспособное состояние, если приложение выдает неработоспособный ответ проверки. Пользователи несут ответственность за реализацию пользовательской логики для идентификации и пометки экземпляров с неработоспособными приложениями2. Экземпляры с неправильными параметрами расширения (например, недоступная конечная точка) или недопустимые ответы проверок работоспособности будут попадать в состояние "Неизвестно"2. |
Инициализация состояния для вновь созданных экземпляров | Состояние инициализации недоступно. Новые инстанции могут занять некоторое время, прежде чем достичь устойчивого состояния. | Состояние инициализации позволяет вновь созданным экземплярам стабилизироваться в устойчивом состоянии работоспособности, прежде чем сделать экземпляр пригодным для поэтапного обновления или операций по восстановлению экземпляров. |
Протокол HTTP/HTTPS | Поддерживается | Поддерживается |
Протокол TCP. | Поддерживается | Ограниченная поддержка— неизвестное состояние недоступно в протоколе TCP. См. таблицу протокола Rich Health States для поведения состояний работоспособности в TCP. |
1 Неизвестное состояние недоступно в протоколе TCP. 2 Применимо только для протокола HTTP/HTTPS. Протокол TCP будет следовать тому же процессу определения неисправных экземпляров, как и в двоичных состояниях работоспособности.
В целом, следует использовать Rich Health States, если:
- Вы отправляете сигналы работоспособности через протокол HTTP/HTTPS и можете отправлять сведения о работоспособности через текст ответа проверки.
- Вы хотите использовать пользовательскую логику для идентификации и маркировки неработоспособных экземпляров
- Вы хотите установить льготный период инициализации для вновь созданных экземпляров, чтобы они достигли устойчивого состояния работоспособности, прежде чем они будут готовы для поочередного обновления или ремонта.
- Вам нужно более контролировать процесс упорядочивания и обновления с помощью последовательного обновления, предоставляя пользовательские метрики
Вам следует использовать двоичные состояния работоспособности, если:
- Вы не заинтересованы в настройке пользовательской логики для идентификации и флагирования нездорового экземпляра
- Не требуется инициализация льготного периода для только что созданных экземпляров
- При выполнении последовательного обновления на виртуальных машинах не нужно использовать пользовательские метрики .
Богатые состояния здоровья
Отчеты о богатых состояниях здравоохранения содержат четыре состояния здоровья, инициализацию, работоспособность, неработоспособную и неизвестнаю. В следующих таблицах приводится краткое описание настройки каждого состояния работоспособности.
Протокол HTTP/HTTPS
Протокол | Состояние работоспособности | Описание |
---|---|---|
http/https | Здоровый | Чтобы отправить Healthy сигнал, приложение должно вернуть ответ пробы с: Кодом ответа пробы: Состояние 2xx, Телом ответа пробы: {"ApplicationHealthState": "Healthy"} |
http/https | Unhealthy | Чтобы отправить сигнал Unhealthy, приложение должно вернуть ответ на проверку со следующими данными: Код ответа проверки: статус 2xx, Тело ответа проверки: {"ApplicationHealthState": "Unhealthy"} |
http/https | Инициализация | Экземпляр автоматически переходит в состояние Инициализация при начале расширения. Дополнительные сведения см. в разделе "Инициализация состояния". |
http/https | Неизвестно |
Неизвестное состояние может возникать в следующих сценариях: если код состояния, отличный от 2xxx, возвращается приложением, когда время ожидания запроса пробы истекает, когда конечная точка приложения недоступна или неправильно настроена, когда отсутствует или недопустимое значение предоставляется ApplicationHealthState в тексте ответа или когда срок действия льготного периода истекает. Дополнительные сведения см. в разделе "Неизвестное состояние". |
Протокол TCP
Протокол | Состояние работоспособности | Описание |
---|---|---|
TCP | Здоровый | Чтобы отправить корректный сигнал, необходимо установить успешное соединение с предоставленной конечной точкой приложения. |
TCP | Нездоровый | Экземпляр будет помечен как неисправный, если при взаимодействии с предоставленной конечной точкой приложения произошел сбой или неполное рукопожатие. |
TCP | Инициализация | Экземпляр автоматически переходит в состояние инициализации при запуске расширения. Дополнительные сведения см. в разделе "Инициализация состояния". |
Инициализация состояния
Это состояние относится только к богатым состояниям здравоохранения. Состояние инициализации происходит только один раз во время начала расширения и может быть настроено параметрами gracePeriod
расширения и numberOfProbes
.
При запуске расширения работоспособность приложения останется в состоянии инициализации до тех пор, пока не произойдет одно из двух сценариев:
- То же состояние работоспособности (работоспособное или неработоспособное) сообщается последовательное число раз, как настроено с помощью numberOfProbes.
- Срок
gracePeriod
действия истекает
Если одно и то же состояние работоспособности (работоспособное или неработоспособное) сообщается последовательно, работоспособность приложения переходит из состояния инициализации и в сообщаемое состояние работоспособности (работоспособное или неработоспособное).
Пример
Если numberOfProbes
= 3, это означает:
- Чтобы перейти от инициализации к работоспособному состоянию: расширение работоспособности приложения должно получать три последовательных сигналов работоспособности через протокол HTTP/HTTPS или TCP
- Для перехода из состояния Инициализация в состояние Неработоспособность расширение работоспособности приложения должно получать три последовательных сигнала Неработоспособность через протокол HTTP/HTTPS или TCP.
gracePeriod
Если срок действия истекает до того, как приложение сообщает о последовательных состояниях работоспособности, работоспособность экземпляра будет определена следующим образом:
- Протокол HTTP/HTTPS: работоспособность приложения переходит от инициализации к неизвестному
- ПРОТОКОЛ TCP: работоспособность приложения переходит от инициализации к неработоспособной
Неизвестное состояние
Это состояние относится только к богатым состояниям здравоохранения. Неизвестное состояние сообщается только для http- или https-запросов и возникает в следующих сценариях:
- Если приложением возвращается код состояния, неравный 2xx.
- Когда время ожидания запроса пробы истекает
- Если конечная точка приложения недоступна или неправильно настроена
- Когда в теле ответа предоставлено отсутствующее или недопустимое значение для
ApplicationHealthState
- Когда истекает льготный период
Экземпляр в состоянии "Неизвестно" рассматривается аналогично экземпляру в состоянии "Неработоспособно". Если этот параметр включен, восстановление экземпляра будет выполнено в неизвестном экземпляре во время приостановки обновлений, пока экземпляр не вернется в работоспособное состояние.
В следующей таблице показана интерпретация состояния работоспособности для скользящего обновления и восстановления экземпляров:
Состояние работоспособности | Интерпретация последовательного обновления | Запуск восстановления экземпляра |
---|---|---|
Инициализация | Дождитесь до тех пор, пока состояние не станет работоспособным, неработоспособным или неизвестным | Нет |
Здоровый | Здоровый | No |
Unhealthy | Нездоровый | Да |
Неизвестно | Нездоровый | Да |
Схема расширения для полноценных состояний здоровья
Следующий JSON-файл показывает схему расширения "Rich Health States". Для расширения требуется как минимум запрос http или https с соответствующим портом или путем запроса соответственно. Также поддерживаются пробы TCP, но они не смогут установить ApplicationHealthState
через тело ответа пробы и не будут иметь доступа к состоянию Неизвестно.
{
"extensionProfile" : {
"extensions" : [
{
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5,
"numberOfProbes": 1,
"gracePeriod": 600
}
}
}
]
}
}
Значения свойств
Имя. | Значение и пример | Тип данных |
---|---|---|
версия_API | 2018-10-01 |
Дата |
издатель | Microsoft.ManagedServices |
строка |
тип |
ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
строка |
typeHandlerVersion | 2.0 |
строка |
Настройки
Имя. | Значение и пример | Тип данных |
---|---|---|
протокол |
http или https или tcp |
строка |
порт | Необязательно, если используется протокол http или https ; обязательно, если используется протокол tcp |
INT |
requestPath | Обязательно, если используется протокол http или https ; недопустимо, если используется протокол tcp |
строка |
интервалВСекундах | Необязательно, значение по умолчанию — 5 секунд. Это интервал между каждой проверкой состояния. Например, если интервалInSeconds == 5, проба будет отправляться в локальную конечную точку приложения каждые 5 секунд. | INT |
количествоПроб.Тестов | Необязательно, значение по умолчанию — 1. Это число последовательных проб, необходимых для изменения состояния работоспособности. Например, если numberOfProblems == 3, вам потребуется 3 последовательных сигнала "В норме" для изменения состояния работоспособности с "Не в норме"/"Неизвестно" в состояние "В норме". Это же требование применяется к изменению состояния работоспособности на состояние "Неработоспособное" или "Неизвестно". | INT |
льготный период | Необязательный, по умолчанию = intervalInSeconds * numberOfProbes ; максимальный льготный период составляет 7200 секунд |
INT |
Двоичные состояния работоспособности
Отчеты о состоянии работоспособности двоичного состояния содержат два состояния работоспособности, работоспособность и неработоспособность. В следующих таблицах представлено краткое описание настройки состояний здоровья.
Протокол HTTP/HTTPS
Протокол | Состояние работоспособности | Описание |
---|---|---|
http/https | Здоровый | Чтобы отправить здоровый сигнал, приложение должно вернуть код ответа 200. |
http/https | Unhealthy | Экземпляр будет помечен как нездоровый если код ответа 200 не получен от приложения. |
Протокол TCP
Протокол | Состояние работоспособности | Описание |
---|---|---|
TCP | Здоровый | Чтобы отправить Healthy сигнал, необходимо установить успешное соединение с предоставленной конечной точкой приложения. |
TCP | Нездоровый | Экземпляр будет помечен как нездоровый, если произошел сбой или неполное рукопожатие с предоставленной точкой доступа приложения. |
К некоторым сценариям, которые могут привести к неработоспособному состоянию , относятся:
- Когда конечная точка приложения возвращает код состояния, отличный от 200
- Если в экземплярах виртуальной машины не настроена конечная точка приложения для передачи состояния работоспособности приложения.
- конечная точка приложения настроена неправильно;
- Когда конечная точка приложения недоступна
Схема расширения для двоичных состояний работоспособности
В следующем JSON показана схема расширения "Здоровье приложения". Для расширения требуется как минимум запрос "tcp", "http" или "https" с указанным соответственно портом или путем запроса.
{
"extensionProfile" : {
"extensions" : [
{
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5,
"numberOfProbes": 1
}
}
}
]
}
}
Значения свойств
Имя. | Значение и пример | Тип данных |
---|---|---|
версия API | 2018-10-01 |
Дата |
издатель | Microsoft.ManagedServices |
строка |
type |
ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
строка |
typeHandlerVersion | 1.0 |
строка |
Настройки
Имя. | Значение и пример | Тип данных |
---|---|---|
protocol |
http или https или tcp |
строка |
port | Необязательно, если используется протокол http или https ; обязательно, если используется протокол tcp |
INT |
requestPath | Обязательно, если используется протокол http или https ; недопустимо, если используется протокол tcp |
строка |
интервалВСекундах | Необязательно, значение по умолчанию — 5 секунд. Это интервал между каждой пробой работоспособности. Например, если интервалInSeconds == 5, проба будет отправляться в локальную конечную точку приложения каждые 5 секунд. | INT |
numberOfProbes | Необязательно, значение по умолчанию — 1. Это число последовательных проб, необходимых для изменения состояния работоспособности. Например, если numberOfProblems == 3, вам потребуется 3 последовательных сигнала "Исправное состояние" для изменения состояния с "Неисправное" в состояние "Исправное состояние". Это же требование применяется к изменению состояния работоспособности в состояние "Неработоспособное". | INT |
Разверните расширение "Здоровье приложения"
Существует несколько способов развертывания расширения для мониторинга состояния приложений в ваших масштабируемых наборах, как описано в следующих примерах.
Регионы с высоким уровнем здравоохранения
В следующем примере добавляется расширение «Работоспособность приложений — богатые состояния» (с именем myHealthExtension
) в extensionProfile
модель масштабируемого набора Windows.
Этот пример также можно использовать для обновления существующего расширения с двоичного до расширенных состояний работоспособности, путем вызова PATCH вместо PUT.
PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
"name": "myHealthExtension",
"location": "<location>",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": <intervalInSeconds>,
"numberOfProbes": <numberOfProbes>,
"gracePeriod": <gracePeriod>
}
}
}
Используйте PATCH
для изменения уже развернутого расширения.
Обновите виртуальные машины, чтобы установить расширение.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Двоичные состояния здоровья
В следующем примере расширение "Работоспособность приложения" (с именем myHealthExtension) добавляется в атрибут extensionProfile в модели масштабируемого набора на основе Windows.
Этот пример также можно использовать для изменения существующего расширения с состояния "Высокая работоспособность" на двоичное состояние работоспособности, выполняя запрос PATCH вместо PUT.
PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
"name": "myHealthExtension",
"location": "<location>",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>"
}
}
}
Используйте PATCH
для изменения уже развернутого расширения.
Обновите виртуальные машины, чтобы установить расширение.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Устранение неполадок
Нужна помощь в настройке ответа пробы
Смотрите примеры работоспособности приложения для примеров ответов проб работоспособности, передаваемых на локальную конечную точку.
Просмотр VMHealth — один экземпляр
Get-AzVmssVM
-InstanceView `
-ResourceGroupName <rgName> `
-VMScaleSetName <vmssName> `
-InstanceId <instanceId>
Просмотр VMHealth — пакетный вызов
Это доступно только для масштабируемых наборов виртуальных машин с единообразной оркестрацией.
GET on `/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>/virtualMachines/?api-version=2022-03-01&$expand=instanceview`
Состояние здоровья не отображается
Если состояние работоспособности не отображается на портале Azure или через запрос GET, убедитесь, что виртуальная машина обновлена до последней версии. Если виртуальная машина не соответствует последней модели, обновите виртуальную машину, и отобразится статус работоспособности.
Журнал выходных данных выполнения расширения
Выходные данные выполнения расширения регистрируются в файле, расположенном в следующих каталогах:
C:\WindowsAzure\Logs\Plugins\Microsoft.ManagedServices.ApplicationHealthWindows\<version>\
/var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-<extension_version>/status
/var/log/azure/applicationhealth-extension
Журналы также периодически записывают состояние работоспособности приложения.
Следующие шаги
Узнайте, как развернуть приложение на масштабируемых наборах виртуальных машин.