Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве вы добавите сборщик OpenTelemetry в качестве контейнера sidecar в приложение Linux (с использованием собственного кода) в службе Служба приложений Azure. Сведения о пользовательских контейнерах см. в руководстве по настройке контейнера sidecar для пользовательского контейнера в службе Служба приложений Azure.
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Контейнеры-сайдкары в службе приложений позволяют развертывать дополнительные сервисы и функции в приложениях Linux без тесного связывания их со встроенным или пользовательским основным контейнером. Контейнеры-сайдкары запускаются вместе с основным контейнером приложения в том же плане App Service.
Вы можете добавить до девяти контейнеров сайдкара для каждого приложения Linux в службе App Service. Например, можно добавить мониторинг, ведение журнала, конфигурацию и сетевые службы в качестве сайдкар-контейнеров. Боковой контейнер коллектора OpenTelemetry - это один из примеров для мониторинга.
1. Настройте необходимые ресурсы
Сначала вы создадите ресурсы, используемые в руководстве. Они используются для этого конкретного сценария и не требуются для sidecar-контейнеров в целом.
В 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> на уникальное глобальное название приложения и eastus на предпочитаемый регион.
Создайте пример приложения:
cd ~ dotnet new webapp -n MyFirstAzureWebApp --framework net8.0 cd MyFirstAzureWebAppСоздайте группу ресурсов, план Linux App Service и веб-приложение:
az group create --name myWebAppResourceGroup --location eastus az appservice plan create --name myWebAppPlan --resource-group myWebAppResourceGroup --sku P0v3 --is-linux az webapp create --name <app-name> --resource-group myWebAppResourceGroup --plan myWebAppPlan --runtime "DOTNETCORE:8.0"Создайте приложение и упаковайте содержимое каталога публикации:
dotnet publish --configuration Release --output publish cd publish zip -r ../app.zip . cd ..Разверните пакет.
az webapp deploy --name <app-name> --resource-group myWebAppResourceGroup --src-path app.zip --type zip
Через несколько минут веб-приложение .NET развёртывается в новом приложении App Service как MyFirstAzureWebApp.dll.
3. Добавьте контейнер sidecar
В этом разделе описано, как добавить sidecar-контейнер в приложение Linux.
В портале Azure перейдите на страницу управления приложением
На странице управления приложения в меню слева выберите Центр развертывания.
Выберите баннер Хотите добавить контейнеры для запуска вместе с вашим приложением? Щелкните здесь, чтобы попробовать.
Когда страница перезагрузится, выберите вкладку "Контейнеры" (новая).
Выберите " Добавить " и настройте новый контейнер следующим образом:
- Имя: otel-collector
- Источник изображения: Реестр контейнеров Azure
- Аутентификация: учетные данные администратора
-
Реестр: реестр, созданный с помощью
azd provision - Изображение: otel-collector
- Тег: последний
Выберите Применить.
4. Настройка переменных среды
В примере сценария sidecar otel-collector настроен на экспорт данных OpenTelemetry в Azure Monitor, но ему нужна строка подключения в качестве переменной среды (см. файл конфигурации OpenTelemetry для образа otel-collector).
Вы настраиваете переменные среды для контейнеров, как для любого приложения App Service, путем настройки приложения. Параметры приложения доступны для всех контейнеров в приложении.
Перейдите на страницу управления приложения App Service.
В меню слева выберите Переменные среды.
Добавьте параметр приложения, выбрав Добавить, и настройте его следующим образом:
- Имя: APPLICATIONINSIGHTS_CONNECTION_STRING
-
Значение: строка подключения в выходных данных
azd provision. Если вы потеряли сеанс Cloud Shell, его также можно найти на странице обзора ресурса Application Insight в разделе Строка подключения.
Выберите Применить, затем Применить, затем Подтвердить.
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. Замените
<app-name>на имя, которое вы использовали при создании приложения.az webapp deploy --resource-group myWebAppResourceGroup --name <app-name> --src-path startup.sh --target-path /home/site/startup.sh --type staticСовет
Этот подход развертывает файл startup.sh отдельно от приложения. Таким образом, конфигурация инструментирования отделена от кода приложения. Однако для развертывания скрипта вместе с приложением можно использовать другие методы развертывания.
Вернитесь на страницу управления приложения, в меню слева выберите Конфигурация.
Задайте для команды запуска значение /home/site/startup.sh. Это тот же путь, по которому вы выполнили развертывание на предыдущем шаге.
Нажмите кнопку "Сохранить", а затем "Продолжить".
5. Проверьте в Application Insights
Теперь контейнер sidecar otel-collector должен экспортировать данные в Application Insights.
Вернитесь на вкладку
https://<app-name>.azurewebsites.netбраузера, обновите страницу несколько раз, чтобы создать некоторые веб-запросы.Вернитесь на страницу обзора группы ресурсов, а затем выберите ресурс Application Insights, созданный с помощью
azd up. Теперь в диаграммах по умолчанию должны отображаться некоторые данные.
Примечание
В этом очень распространенном сценарии мониторинга Application Insights — это лишь один из получателей OpenTelemetry, которые можно использовать, например Jaeger, Prometheus и Zipkin.
6. Очистка ресурсов
Если вам больше не нужна среда, можно удалить группы ресурсов и все связанные ресурсы. Просто выполните следующие команды в Cloud Shell:
cd ~/MyFirstAzureWebApp
az group delete --name myWebAppResourceGroup --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down