Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве вы добавите сборщик OpenTelemetry в качестве контейнера боковика в приложение Linux (перенос собственного кода) в службе приложение Azure. Сведения о пользовательских контейнерах см. в руководстве по настройке контейнера на стороне для пользовательского контейнера в службе приложение Azure.
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Контейнеры-сайдкары в службе приложений позволяют развертывать дополнительные сервисы и функции в приложениях Linux без тесного связывания их со встроенным или пользовательским основным контейнером. Контейнеры-сайдкары запускаются вместе с основным контейнером приложения в том же плане App Service.
Вы можете добавить до девяти контейнеров сайдкара для каждого приложения Linux в службе App Service. Например, можно добавить мониторинг, ведение журнала, конфигурацию и сетевые службы в качестве контейнеров на стороне. Боковой контейнер коллектора OpenTelemetry - это один из примеров для мониторинга.
1. Настройка необходимых ресурсов
Сначала вы создадите ресурсы, используемые в руководстве. Они используются для этого конкретного сценария и не требуются для контейнеров боковинка в целом.
В Azure Cloud Shell выполните следующие команды. Обязательно укажите
<environment-name>.git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs cd app-service-sidecar-tutorial-prereqs azd env new <environment-name> azd provisionПри появлении запроса укажите подписку и регион выбранного региона. Например:
- Подписка: ваша подписка.
- Регион: (Европа) Западная Европа.
После завершения развертывания вы увидите следующие выходные данные:
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=... Azure container registry name = <registry-name> Managed identity resource ID = <managed-identity-resource-id> Managed identity client ID = <managed-identity-client-id> Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/<subscription-id>/resourceGroups/<group-name>
Скопируйте эти выходные значения для последующего копирования. Их также можно найти на портале на страницах управления соответствующих ресурсов.
Примечание.
azd provisionиспользует включенные шаблоны для создания следующих ресурсов Azure:- Группа ресурсов на основе имени среды.
-
Реестр контейнеров с двумя образами, развернутыми:
- Изображение Nginx с модулем OpenTelemetry.
- Образ сборщика OpenTelemetry, настроенный для экспорта в Azure Monitor.
- Управляемое удостоверение, назначаемое пользователем, с разрешением
AcrPullна группу ресурсов (извлечение образов из реестра). - Рабочая область Log Analytics.
- Компонент Application Insights .
2. Создание веб-приложения
На этом шаге вы развернете шаблон ASP.NET Core. Вернитесь в Azure Cloud Shell, выполните следующие команды. Замените <app-name> уникальным именем приложения.
cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux
Через несколько минут веб-приложение .NET развертывается как MyFirstAzureWebApp.dll в новом приложении Служба приложений.
3. Добавление контейнера боковинка
В этом разделе описано, как добавить контейнер боковой машины в приложение Linux.
В портал Azure перейдите на страницу управления приложением
На странице управления приложения в меню слева выберите Центр развертывания.
Выберите баннер , интересующийся добавлением контейнеров для запуска вместе с приложением? Щелкните здесь, чтобы дать ему попробовать.
Когда страница перезагрузит, перейдите на вкладку "Контейнеры" (новая).
Выберите " Добавить " и настройте новый контейнер следующим образом:
- Имя: otel-collector
- Источник изображения: Реестр контейнеров Azure
- Проверка подлинности: учетные данные администратора
-
Реестр: реестр, созданный с помощью
azd provision - Изображение: otel-collector
- Тег: последняя версия
Выберите Применить.
4. Настройка переменных среды
В примере сценария на стороне otel-сборщика настроен экспорт данных OpenTelemetry в Azure Monitor, но он нуждается в строка подключения в качестве переменной среды (см. файл конфигурации OpenTelemetry для образа otel-сборщика).
Вы настраиваете переменные среды для контейнеров, таких как любое приложение Служба приложений, путем настройки параметров приложения. Параметры приложения доступны для всех контейнеров в приложении.
Перейдите на страницу управления Служба приложений приложения.
В меню слева выберите переменные среды.
Добавьте параметр приложения, выбрав "Добавить " и настройте его следующим образом:
- Имя: APPLICATIONINSIGHTS_CONNECTION_STRING
-
Значение: строка подключения в выходных
azd provisionданных . Если вы потеряли сеанс Cloud Shell, его также можно найти на странице обзора ресурса Application Insights в разделе "Строка подключения".
Нажмите кнопку "Применить", а затем "Применить", а затем подтвердите.
5. Настройка инструментирования при запуске
На этом шаге вы создадите инструментирование для приложения в соответствии с инструкциями, описанными в инструментировании openTelemetry .NET нулевого кода.
Вернитесь в Cloud Shell, создайте startup.sh со следующими строками.
cat > startup.sh << 'EOF' #!/bin/bash # Download the bash script curl -sSfL https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/otel-dotnet-auto-install.sh -O # Install core files sh ./otel-dotnet-auto-install.sh # Enable execution for the instrumentation script chmod +x $HOME/.otel-dotnet-auto/instrument.sh # Setup the instrumentation for the current shell session . $HOME/.otel-dotnet-auto/instrument.sh export OTEL_SERVICE_NAME="MyFirstAzureWebApp-Azure" export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318" export OTEL_TRACES_EXPORTER="otlp" export OTEL_METRICS_EXPORTER="otlp" export OTEL_LOGS_EXPORTER="otlp" # Run your application with instrumentation OTEL_SERVICE_NAME=myapp OTEL_RESOURCE_ATTRIBUTES=deployment.environment=staging,service.version=1.0.0 dotnet /home/site/wwwroot/MyFirstAzureWebApp.dll EOFРазверните этот файл в приложении с помощью следующей команды Azure CLI. Если вы все еще находитесь в каталоге ~/MyFirstAzureWebApp , то другие параметры не нужны, так как
az webapp upуже заданы значения по умолчанию для группы ресурсов и имени приложения.az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type staticСовет
Этот подход развертывает файл startup.sh отдельно от приложения. Таким образом, конфигурация инструментирования отличается от кода приложения. Однако для развертывания скрипта вместе с приложением можно использовать другие методы развертывания.
Вернитесь на страницу управления приложения в меню слева выберите "Конфигурация".
Задайте для командызапуска значение /home/site/startup.sh. Это тот же путь, который вы развернули на предыдущем шаге.
Нажмите кнопку "Сохранить", а затем "Продолжить".
5. Проверка в Application Insights
Теперь боковой контейнер otel-сборщика должен экспортировать данные в Application Insights.
Вернитесь на вкладку
https://<app-name>.azurewebsites.netбраузера, обновите страницу несколько раз, чтобы создать некоторые веб-запросы.Вернитесь на страницу обзора группы ресурсов, а затем выберите созданный ресурс
azd upApplication Insights. Теперь в диаграммах по умолчанию должны отображаться некоторые данные.
Примечание.
В этом очень распространенном сценарии мониторинга Application Insights — это только один из целевых объектов OpenTelemetry, которые можно использовать, например Jaeger, Prometheus и Zipkin.
6. Очистка ресурсов
Если вам больше не нужна среда, можно удалить группы ресурсов и все связанные ресурсы. Просто выполните следующие команды в Cloud Shell:
cd ~/MyFirstAzureWebApp
az group delete --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down