이 자습서에서는 OpenTelemetry 수집기를 사이드카 컨테이너로 Azure App Service의 Linux 사용자 지정 컨테이너 앱에 추가하는 방법을 보여줍니다.
App Service의 사이드카 컨테이너를 사용하면 기본 제공 또는 사용자 지정 기본 컨테이너에 긴밀하게 결합하지 않고도 추가 서비스 및 기능을 Linux 앱에 배포할 수 있습니다. 사이드카 컨테이너는 동일한 App Service 계획의 기본 애플리케이션 컨테이너와 함께 실행됩니다.
App Service의 각 Linux 앱에 대해 최대 9개의 사이드카 컨테이너를 추가할 수 있습니다. 예를 들어 모니터링, 로깅, 구성 및 네트워킹 서비스를 사이드카 컨테이너로 추가할 수 있습니다. 모니터링의 한 예로 OpenTelemetry 컬렉터 사이드카가 있습니다.
자체 코드를 사용하는 Linux 앱의 경우 자습서: Azure App Service에서 Linux 앱용 사이드카 컨테이너 구성을 참조하세요.
필수 조건
-
Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
이 자습서에서는 브라우저를 통해 Azure 서비스를 사용하는 대화형 셸인 Azure Cloud Shell을 사용하여 명령을 실행할 수 있습니다. Cloud Shell을 사용하려면 다음을 수행합니다.
브라우저에서 Cloud Shell을 열려면 다음 Cloud Shell 시작 버튼을 선택하거나 https://shell.azure.com로 이동하세요.
필요한 경우 Azure에 로그인하고 Cloud Shell의 Bash 환경에 있는지 확인합니다.
코드 블록에서 복사 를 선택하고, 코드를 Cloud Shell에 붙여넣고, 실행합니다.
이
azd자습서의 명령은 Azure에서 앱 리소스 프로비저닝 및 배포를 가속화하는 오픈 소스 도구인 Azure 개발자 CLI를 사용합니다.
1. 자습서 리소스 설정
샘플 리포지토리를 복제하고 이 자습서에 대한 리소스를 만들려면 Cloud Shell에서 다음 명령을 실행합니다. 메시지가 표시되면 사용하려는 Azure 구독 및 Azure 지역을 선택합니다.
git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
cd app-service-sidecar-tutorial-prereqs
azd env new my-sidecar-env
azd provision
이 azd provision 명령은 포함된 템플릿을 사용하여 다음 Azure 리소스를 포함하는 Azure my-sidecar-env_group 리소스 그룹을 만듭니다.
- 다음 이미지가 있는 두 개의 리포지토리가 있는 컨테이너 레지스트리 입니다.
-
nginxOpenTelemetry 모듈이 있는 이미지입니다. -
otel-collectorAzure Monitor로 내보내도록 구성된 OpenTelemetry 수집기 이미지입니다.
-
- Log Analytics 작업 영역
- Application Insights 구성 요소.
- 사용자가 할당한 관리 ID라는
id-my-sidecar-env_group.
배포가 완료되면 다음 예제와 유사한 출력이 표시됩니다.
Success!
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=aaaaaaaa-0b0b-1c1c-2d2d-333333333333;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/;ApplicationId=00001111-aaaa-2222-bbbb-3333cccc4444
Azure container registry name = acro2lc774l6vjgg
Managed identity resource ID = /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id-my-sidecar-env_group
Managed identity client ID = 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group
나중에 이 튜토리얼에서 사용할 값을 APPLICATIONINSIGHTS_CONNECTION_STRING 복사하고, 저장하십시오.
Azure Portal에서 프로비전된 리소스 그룹을 열려는 링크를 Open resource group in the portal 선택합니다.
2. 사이드카 사용 앱 만들기
Azure Portal의 리소스 그룹에서 사이드카 지원을 사용하여 Linux 사용자 지정 컨테이너 앱을 만들고 기본 컨테이너를 구성합니다.
Azure Portal의 리소스 그룹 페이지에서 만들기를 선택합니다.
Marketplace 페이지에서 웹앱을 검색하고, 웹앱 타일에서 만들기 옆에 있는 아래쪽 화살표를 선택하고, 웹앱을 선택합니다.
웹앱 만들기 페이지의 기본 사항 탭에서 다음 정보를 제공합니다.
- 이름: 웹앱의 고유한 이름을 입력합니다.
- 게시: 컨테이너를 선택합니다.
- 운영 체제: Linux를 선택합니다.
-
지역: 선택한 지역과 동일한 지역을
azd provision선택합니다. - Linux 계획: 제공된 (새) App Service 계획을 선택합니다.
나머지 설정은 그대로 두고 페이지 맨 위에 있는 컨테이너 탭을 선택합니다.
컨테이너 탭에서 다음 정보를 제공합니다.
- 사이드카 지원: 사이드카 지원이 설정된 고급 구성으로 설정합니다.
- 이미지 원본에서 Azure Container Registry를 선택합니다.
- 이름: 기본 이 표시되는지 확인합니다.
-
레지스트리: 에서 만든
azd provision레지스트리를 선택합니다. - 인증: 관리 ID를 선택합니다.
-
ID: 에서 만든
azd provision관리 ID를 선택합니다. - 이미지: nginx를 입력합니다.
- 태그: 최신을 입력합니다.
- 포트: 아직 설정되지 않은 경우 80 을 입력합니다.
참고
사이드카가 사용 설정된 앱에서는 이러한 설정이 사이드카가 사용되지 않는 앱과 다르게 구성됩니다. 자세한 내용은 사이드카 사용 사용자 지정 컨테이너의 차이점을 확인하십시오.
검토 + 만들기를 선택하고 유효성 검사를 통과하면 만들기를 선택합니다.
배포가 완료되면 리소스로 이동을 선택합니다.
앱 페이지에서 기본 nginx 페이지를 보려면 새 브라우저 탭에서
https://<app-name>.azurewebsites.net옆에 있는 URL을 엽니다.
3. 앱에 사이드카 컨테이너 추가
Linux 사용자 지정 컨테이너 앱에 사이드카 컨테이너를 추가합니다.
Azure Portal의 앱 페이지에서 왼쪽 탐색 메뉴의 배포 아래에서 배포 센터를 선택합니다. 배포 센터 페이지에는 현재 주 컨테이너만 있는 앱의 모든 컨테이너가 표시됩니다.
컨테이너를 선택합니다.
사용자 지정 컨테이너>를 선택합니다.
컨테이너 추가 창에서 다음 정보를 완료합니다.
- 이름: otel-collector를 입력합니다.
- 이미지 원본: Azure Container Registry를 선택합니다.
-
레지스트리: 에서 만든
azd provision레지스트리를 선택합니다. - 인증: 관리 ID를 선택합니다.
-
아이덴티티: 사용자가 할당한 상태에서
azd provision에서 생성된 관리 ID를 선택합니다. - 이미지: otel-collector를 입력합니다.
- 이미지 태그: 최신을 입력합니다.
- 포트: 4317을 입력합니다.
적용을 선택합니다.
이제 배포 센터에 Main 및 Sidecar로 레이블이 지정된 두 개의 컨테이너가 있습니다. 앱에는 하나의 기본 컨테이너가 있어야 하며 여러 사이드카 컨테이너를 가질 수 있습니다.
4. 환경 변수 구성
샘플 시나리오 otel-collector 에서 사이드카는 연결 문자열을 환경 변수로 사용하여 OpenTelemetry 데이터를 Azure Monitor로 내보내도록 구성됩니다. 자세한 내용은 otel 수집기 이미지에 대한 OpenTelemetry 구성 파일을 참조하세요.
앱에 대한 앱 설정을 구성하여 컨테이너에 대한 환경 변수를 구성합니다. 앱 설정은 앱의 모든 컨테이너에서 액세스할 수 있습니다.
Azure Portal의 앱 페이지에서 왼쪽 탐색 메뉴의 설정 아래에서 환경 변수를 선택합니다.
환경 변수 페이지의 앱 설정 탭에서 추가를 선택합니다.
애플리케이션 추가/편집 설정 창에서 다음 값을 입력합니다.
- 이름: APPLICATIONINSIGHTS_CONNECTION_STRING
-
값:
APPLICATIONINSIGHTS_CONNECTION_STRING의 출력에서azd provision의 값입니다. 리소스 그룹의 Application Insight 리소스 개요 페이지에서 이 값을 연결 문자열로 찾을 수도 있습니다.
적용을 선택한 다음 적용을 다시 선택한 다음 확인을 선택합니다. 이제 APPLICATIONINSIGHTS_CONNECTION_STRING 앱 설정이 앱 설정 탭에 표시됩니다.
참고
일부 앱 설정은 사이드카 사용 앱에 적용되지 않습니다. 자세한 내용은 사이드카 사용 사용자 지정 컨테이너의 차이점을 확인하십시오.
5. Application Insights에서 확인
이제 otel-collector 사이드카가 데이터를 Application Insights로 내보냅니다.
새 브라우저 탭에서 앱으로 이동하고 페이지를 몇 번 새로 고쳐 일부 웹 요청을 생성합니다.
Azure Portal의 리소스 그룹 페이지에서 Application Insights 리소스를 선택합니다. 이제 Application Insights 개요 페이지의 기본 차트에 일부 데이터가 표시됩니다.
참고
이 일반적인 모니터링 시나리오에서 Application Insights는 Jaeger, Prometheus 및 Zipkin과 같이 사용할 수 있는 OpenTelemetry 대상 중 하나일 뿐입니다.
6. 리소스 정리
이 자습서에 대해 만든 환경이 더 이상 필요하지 않은 경우 리소스 그룹을 삭제하여 앱 서비스 및 모든 관련 리소스를 제거할 수 있습니다. Cloud Shell의 복제된 리포지토리에서 다음 명령을 실행합니다.
azd down