Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Внимание
Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.
В этом руководстве описывается, как настроить Azure Monitor Application Insights для рабочих нагрузок Службы Azure Kubernetes (AKS) без изменения исходного кода.
Мы рассмотрим установку расширения Azure CLI для aks-preview, регистрации флага компонента AzureMonitorAppMonitoringPreview, подготовки кластера, подключения развертываний и перезапуска развертываний. Эти шаги приводят к тому, что в "pods" приложения автоматически внедряется дистрибутив Azure Monitor OpenTelemetry для создания телеметрии. Дополнительные сведения об автоинструментации и ее преимуществах см. в статье "Что такое автоинструментация для Azure Monitor Application Insights?".
Предпосылки
- Кластер AKS с развертыванием Kubernetes, использующим Java или Node.js, в публичном облаке Azure
- Ресурс Application Insights, основанный на рабочей области.
- Azure CLI 2.60.0 или более поздней версии. Дополнительные сведения см. в статье "Установка Azure CLI", " Какая версия Azure CLI установлена?", а также как обновить Azure CLI.
Предупреждение
- Эта функция несовместима с пулами узлов Windows (любой архитектуры) и Linux Arm64.
Установите расширение Azure CLI aks-preview
Внимание
Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.
aks-preview
Установите расширение:
az extension add --name aks-preview
Обновите до последней версии расширения:
az extension update --name aks-preview
Убедитесь, что установленная версия Azure CLI соответствует требованию в разделе предварительных требований :
az version
Если версия не соответствует требованию, выполните описанные ранее действия, чтобы установить и обновить Azure CLI.
Регистрация флага компонента AzureMonitorAppMonitoringPreview
# Log into Azure CLI
az login
# Register the feature flag for Azure Monitor App Monitoring in preview
az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorAppMonitoringPreview"
# List the registration state of the Azure Monitor App Monitoring Preview feature
# It could take hours for the registration state to change from Registering to Registered
az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AzureMonitorAppMonitoringPreview')].{Name:name,State:properties.state}"
# Once the feature shows as Registered in the prior step, re-register the Microsoft.ContainerService provider to apply the new feature settings
az provider register --namespace "Microsoft.ContainerService"
# Check the registration state of the Microsoft.ContainerService provider
az provider show --namespace "Microsoft.ContainerService" --query "registrationState"
Подготовка кластера
Чтобы подготовить кластер, выполните следующую команду Azure CLI.
az aks update --resource-group={resource_group} --name={cluster_name} --enable-azure-monitor-app-monitoring
Подсказка
Кластеры AKS можно подготовить к этой функции во время создания кластера. Дополнительные сведения см. в статье "Подготовка кластера во время создания кластера AKS".
Развертывание на борту
Развертывания можно подключить двумя способами: на уровне пространства имен или по одному развертыванию. Используйте метод на уровне пространства имен для подключения всех развертываний в пространстве имен. Для выборочного или вариативной настройки включения в нескольких развертываниях используйте подход на уровне каждого развертывания.
Подключение по всему пространству имен
Чтобы включить все развертывания в пространстве имен, создайте один настраиваемый ресурс инструментирования под названием default
в каждом пространстве имен. Обновите applicationInsightsConnectionString
, чтобы она содержала строку подключения вашего ресурса Application Insights.
Подсказка
Вы можете получить строку подключения на странице обзора вашего ресурса Application Insights.
apiVersion: monitor.azure.com/v1
kind: Instrumentation
metadata:
name: default
namespace: mynamespace1
spec:
settings:
autoInstrumentationPlatforms: []
destination: # required
applicationInsightsConnectionString: "InstrumentationKey=11111111-1111-1111-1111-111111111111;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/"
Как минимум, требуется следующая конфигурация:
-
spec.settings.autoInstrumentationPlatforms
: одно или несколько значений на основе языков, на которых выполняются модули pod. -
spec.destination.applicationInsightsConnectionString
: строка подключений ресурса Application Insights.
Подсказка
- Используйте аннотации, если требуются переопределения на уровне развертывания. Дополнительные сведения см. в заметках.
- Перезапустите развертывания , чтобы параметры вступили в силу.
Настройка при каждом развертывании
Используйте онбординг для каждого развертывания, чтобы обеспечить инструментирование развертываний с определенными языками или направление телеметрии в отдельные ресурсы Application Insights.
Создайте уникальный настраиваемый ресурс инструментирования для каждого сценария. Избегайте использования имени
default
, которое используется для подключения на уровне пространства имен.Создайте пользовательские ресурсы для инструментирования, чтобы настроить Application Insights в каждом неймспейсе. Обновите
applicationInsightsConnectionString
, чтобы она содержала строку подключения вашего ресурса Application Insights.Подсказка
Вы можете получить строку подключения на странице обзора вашего ресурса Application Insights.
apiVersion: monitor.azure.com/v1 kind: Instrumentation metadata: name: cr1 namespace: mynamespace1 spec: settings: autoInstrumentationPlatforms: [] destination: # required applicationInsightsConnectionString: "InstrumentationKey=11111111-1111-1111-1111-111111111111;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/"
Как минимум, требуется следующая конфигурация:
-
spec.destination.applicationInsightsConnectionString
: строка подключений ресурса Application Insights.
-
Свяжите каждое развертывание с соответствующим пользовательским ресурсом с помощью заметок. Аннотация переопределяет язык, установленный в пользовательском ресурсе.
Внимание
Чтобы избежать добавления их в заметки развертывания по ошибке, добавьте заметки на
spec.template.metadata.annotations
уровне развертывания.Примеры:
- Ява:
instrumentation.opentelemetry.io/inject-java: "cr1"
- Node.js:
instrumentation.opentelemetry.io/inject-nodejs: "cr1"
Размещение заметок должно выглядеть следующим образом.
apiVersion: apps/v1 kind: Deployment ... spec: template: metadata: annotations: instrumentation.opentelemetry.io/inject-nodejs: "cr1"
- Ява:
Подсказка
Перезапустите развертывания , чтобы параметры вступили в силу.
Подключение в смешанном режиме
Используйте смешанный режим, если большинство развертываний используют конфигурацию по умолчанию и несколько развертываний должны использовать разные конфигурации.
- Реализуйте подключение по всему пространству имен для определения конфигурации по умолчанию.
- Создайте конфигурации подключения для каждого развертывания , которые переопределяют конфигурацию по умолчанию для определенных ресурсов.
Перезапуск развертывания
Выполните следующую команду после создания всех настраиваемых ресурсов и при необходимости аннотировать развертывания.
kubectl rollout restart deployment <deployment-name> -n mynamespace1
Эта команда приводит к тому, что автоинструментация вступает в силу, включая Application Insights. Вы можете проверить, включен ли Application Insights, создав трафик и перейдя к ресурсу. Приложение представлено как облачная роль в возможностях Application Insights. Вы можете использовать все возможности Application Insights, кроме динамических метрик и функций анализа кода Application Insights. Дополнительные сведения о доступных возможностях Application Insights см. здесь.
Удаление автоматической инструментализации для AKS
Убедитесь, что у вас нет инструментированных развертываний. Чтобы неинструментировать инструментированное развертывание, удалите связанный пользовательский ресурс инструментирования и запустите kubectl rollout restart
его в развертывании. Затем выполните следующую команду.
az aks update --resource-group={resource_group} --name={cluster_name} --disable-azure-monitor-app-monitoring
Примечание.
Если инструментированные развертывания остаются после отключения функции, они продолжают оставаться инструментированными, пока их не развернут повторно в их исходное неинструментированное состояние или не удалят.
Аннотации
Отключение автоинструментации
Следующие заметки отключают автоинструментацию для указанного языка.
Ява:
instrumentation.opentelemetry.io/inject-java
Node.js:
instrumentation.opentelemetry.io/inject-nodejs
instrumentation.opentelemetry.io/inject-java: "false"
Чтобы включить автоинструментацию после отключения.
instrumentation.opentelemetry.io/inject-java: "true"
Размещение заметок должно выглядеть следующим образом.
apiVersion: apps/v1
kind: Deployment
...
spec:
template:
metadata:
annotations:
instrumentation.opentelemetry.io/inject-java: "false"
Включение журналов в Application Insights
Вы можете выбрать сбор журналов в Application Insights в качестве дополнения или замены журналов Container Insights.
Включение логов в Application Insights позволяет получить коррелированные логи, что обеспечивает пользователям легкий доступ к просмотру распределенных трассировок вместе с их связанными логами. Кроме того, некоторые микрослужбы не записывают журналы в консоль, поэтому Аналитика контейнеров не может собирать их, и только инструментация Application Insights собирает эти журналы.
И наоборот, Application Insights может не иметь возможности инструментировать все микрослужбы. Например, те, кто использует NGINX или неподдерживаемые языки. Пользователи могут использовать журналы Container Insights только для таких микрослужб.
Вы также можете включить оба источника для журналов, если у вас есть несколько команд наблюдения, например инженеры инфраструктуры, использующие Container Insights, и разработчики, использующие Application Insights.
Просмотрите конфигурации ведения журнала консоли в коде приложения, чтобы определить, следует ли включить журналы Application Insights, журналы Container Insights или оба. Если вы отключите журналы Container Insights, ознакомьтесь с параметрами Container Insights.
Внимание
Чтобы избежать ненужного дублирования и увеличения затрат, включите журналы в Application Insights, чтобы функция позволяла собирать журналы приложений из стандартных платформ ведения журналов и отправлять их в Application Insights.
Используйте следующую аннотацию для включения журналов в Application Insights
- monitor.azure.com/enable-application-logs
Внимание
Чтобы избежать добавления их в заметки развертывания по ошибке, добавьте заметки на spec.template.metadata.annotations
уровне развертывания.
monitor.azure.com/enable-application-logs: "true"
Подготовьте кластер при создании кластера AKS
Кластеры AKS можно подготовить к этой функции во время создания кластера. Выполните следующую команду Azure CLI, если вы предпочитаете, чтобы кластер был предварительно создан во время создания. Мониторинг приложений не включается автоматически при подготовке кластера. Необходимо развернуть приложение и подключить приложение к этой функции.
az aks create --resource-group={resource_group} --name={cluster_name} --enable-azure-monitor-app-monitoring --generate-ssh-keys
Следующие шаги
- Чтобы просмотреть часто задаваемые вопросы (часто задаваемые вопросы) см. статью "Автоинструментация" для службы Azure Kubernetes. Вопросы и ответы
- Чтобы просмотреть наше специальное руководство по устранению неполадок, см. Устранение неполадок автоинструментации для службы Azure Kubernetes.
- Дополнительные сведения об Azure Monitor и Application Insights.
- Узнайте, что может сделать карта приложений для вашего бизнеса.