Поделиться через


Руководство по настройке контейнера на стороне для приложения Linux в службе приложение Azure

В этом руководстве вы добавите сборщик OpenTelemetry в качестве контейнера боковика в приложение Linux (перенос собственного кода) в службе приложение Azure. Сведения о пользовательских контейнерах см. в руководстве по настройке контейнера на стороне для пользовательского контейнера в службе приложение Azure.

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

Контейнеры-сайдкары в службе приложений позволяют развертывать дополнительные сервисы и функции в приложениях Linux без тесного связывания их со встроенным или пользовательским основным контейнером. Контейнеры-сайдкары запускаются вместе с основным контейнером приложения в том же плане App Service.

Вы можете добавить до девяти контейнеров сайдкара для каждого приложения Linux в службе App Service. Например, можно добавить мониторинг, ведение журнала, конфигурацию и сетевые службы в качестве контейнеров на стороне. Боковой контейнер коллектора OpenTelemetry - это один из примеров для мониторинга.

1. Настройка необходимых ресурсов

Сначала вы создадите ресурсы, используемые в руководстве. Они используются для этого конкретного сценария и не требуются для контейнеров боковинка в целом.

  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
    
  2. При появлении запроса укажите подписку и регион выбранного региона. Например:

    • Подписка: ваша подписка.
    • Регион: (Европа) Западная Европа.

    После завершения развертывания вы увидите следующие выходные данные:

     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>
     
  3. Скопируйте эти выходные значения для последующего копирования. Их также можно найти на портале на страницах управления соответствующих ресурсов.

    Примечание.

    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.

  1. В портал Azure перейдите на страницу управления приложением

  2. На странице управления приложения в меню слева выберите Центр развертывания.

  3. Выберите баннер , интересующийся добавлением контейнеров для запуска вместе с приложением? Щелкните здесь, чтобы дать ему попробовать.

  4. Когда страница перезагрузит, перейдите на вкладку "Контейнеры" (новая).

  5. Выберите " Добавить " и настройте новый контейнер следующим образом:

    • Имя: otel-collector
    • Источник изображения: Реестр контейнеров Azure
    • Проверка подлинности: учетные данные администратора
    • Реестр: реестр, созданный с помощью azd provision
    • Изображение: otel-collector
    • Тег: последняя версия
  6. Выберите Применить.

    Снимок экрана: настройка контейнера бокового контейнера в центре развертывания веб-приложения.

4. Настройка переменных среды

В примере сценария на стороне otel-сборщика настроен экспорт данных OpenTelemetry в Azure Monitor, но он нуждается в строка подключения в качестве переменной среды (см. файл конфигурации OpenTelemetry для образа otel-сборщика).

Вы настраиваете переменные среды для контейнеров, таких как любое приложение Служба приложений, путем настройки параметров приложения. Параметры приложения доступны для всех контейнеров в приложении.

  1. Перейдите на страницу управления Служба приложений приложения.

  2. В меню слева выберите переменные среды.

  3. Добавьте параметр приложения, выбрав "Добавить " и настройте его следующим образом:

    • Имя: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Значение: строка подключения в выходных azd provisionданных . Если вы потеряли сеанс Cloud Shell, его также можно найти на странице обзора ресурса Application Insights в разделе "Строка подключения".
  4. Нажмите кнопку "Применить", а затем "Применить", а затем подтвердите.

    Снимок экрана: страница конфигурации веб-приложения с двумя параметрами приложения.

5. Настройка инструментирования при запуске

На этом шаге вы создадите инструментирование для приложения в соответствии с инструкциями, описанными в инструментировании openTelemetry .NET нулевого кода.

  1. Вернитесь в 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
    
  2. Разверните этот файл в приложении с помощью следующей команды Azure CLI. Если вы все еще находитесь в каталоге ~/MyFirstAzureWebApp , то другие параметры не нужны, так как az webapp up уже заданы значения по умолчанию для группы ресурсов и имени приложения.

    az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type static
    

    Совет

    Этот подход развертывает файл startup.sh отдельно от приложения. Таким образом, конфигурация инструментирования отличается от кода приложения. Однако для развертывания скрипта вместе с приложением можно использовать другие методы развертывания.

  3. Вернитесь на страницу управления приложения в меню слева выберите "Конфигурация".

  4. Задайте для командызапуска значение /home/site/startup.sh. Это тот же путь, который вы развернули на предыдущем шаге.

  5. Нажмите кнопку "Сохранить", а затем "Продолжить".

    Снимок экрана: настройка пользовательского файла запуска для приложения Служба приложений в портал Azure.

5. Проверка в Application Insights

Теперь боковой контейнер otel-сборщика должен экспортировать данные в Application Insights.

  1. Вернитесь на вкладку https://<app-name>.azurewebsites.netбраузера, обновите страницу несколько раз, чтобы создать некоторые веб-запросы.

  2. Вернитесь на страницу обзора группы ресурсов, а затем выберите созданный ресурс azd up Application Insights. Теперь в диаграммах по умолчанию должны отображаться некоторые данные.

    Снимок экрана: страница Application Insights с данными на диаграммах по умолчанию.

Примечание.

В этом очень распространенном сценарии мониторинга Application Insights — это только один из целевых объектов OpenTelemetry, которые можно использовать, например Jaeger, Prometheus и Zipkin.

6. Очистка ресурсов

Если вам больше не нужна среда, можно удалить группы ресурсов и все связанные ресурсы. Просто выполните следующие команды в Cloud Shell:

cd ~/MyFirstAzureWebApp
az group delete --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down

Дополнительные ресурсы