Azure Monitor 로그를 사용하여 컨테이너 그룹 및 인스턴스 로깅
Log Analytics 작업 영역은 Azure 리소스뿐만 아니라 온-프레미스 리소스 및 다른 클라우드의 리소스에서도 로그 데이터를 저장 및 쿼리할 수 있는 중앙 집중식 위치를 제공합니다. Azure Container Instances는 Azure Monitor 로그로 로그 및 이벤트 데이터를 전송할 수 있는 기능을 기본 제공합니다.
Azure Monitor 로그로 컨테이너 그룹 로그 및 이벤트 데이터를 전송하려면 컨테이너 그룹을 구성할 때 기존의 Log Analytics 작업 영역 ID와 작업 영역 키를 지정합니다.
다음 섹션은 로깅 사용 컨테이너 그룹을 만드는 방법과 로그를 쿼리하는 방법에 대해 설명합니다. 작업 영역 ID 및 작업 영역 키를 사용하여 컨테이너 그룹을 업데이트하여 로깅을 사용하도록 설정할 수도 있습니다.
참고 항목
이 문서는 Log Analytics 대신 Azure Monitor 로그라는 용어를 사용하도록 최근에 업데이트되었습니다. 로그 데이터는 여전히 Log Analytics 작업 영역에 저장되며 동일한 Log Analytics 서비스에 의해 계속 수집 및 분석됩니다. Azure Monitor에서 로그의 역할을 보다 잘 반영하기 위해 용어를 업데이트하고 있습니다. 자세한 내용은 Azure Monitor 용어 변경을 참조하세요.
필수 조건
컨테이너 인스턴스에서 로깅을 사용하도록 설정하려면 다음과 같은 필수 구성 요소가 필요합니다.
Log Analytics 자격 증명 가져오기
Azure Container Instances에 Log Analytics 작업 영역에 데이터를 전송할 권한이 있어야 합니다. 이 권한을 부여하고 로깅을 사용하도록 설정하려면 컨테이너 그룹을 만들 때 Log Analytics 작업 영역 ID와 키(기본 키 또는 보조 키 중 하나)를 제공해야 합니다.
로그 분석 작업 영역 ID 및 기본 키를 가져오려면:
- Azure Portal에서 Log Analytics 작업 영역으로 이동
- 설정에서 에이전트 관리를 선택합니다.
- 다음을 기록해 둡니다.
- 작업 영역 ID
- 기본 키
컨테이너 그룹 만들기
로그 분석 작업 영역 ID와 기본 키를 알고 있으므로 로깅을 사용하도록 설정된 컨테이너 그룹을 만들 수 있습니다.
다음 예제에서는 단일 fluentd 컨테이너로 구성된 컨테이너 그룹을 만드는 두 가지 방법인 Azure CLI 및 YAML 템플릿이 있는 Azure CLI를 보여 줍니다. Fluentd 컨테이너는 기본 구성에서 여러 줄의 출력을 생성합니다. 이 출력은 Log Analytics 작업 영역으로 전송되므로 로그를 보고 쿼리하는 방법을 보여주기에 효과적입니다.
Azure CLI를 사용하여 배포
Azure CLI를 사용하여 배포하려면 az container create 명령에서 --log-analytics-workspace
및 --log-analytics-workspace-key
매개 변수를 지정합니다. 다음 명령을 실행하기 전에 이전 단계에서 얻은 값으로 두 작업 영역 값을 바꾸고 리소스 그룹 이름을 업데이트합니다.
참고 항목
다음 예제에서는 Docker 허브에서 공용 컨테이너 이미지를 가져옵니다. 익명의 끌어오기 요청을 하는 대신 Docker Hub 계정을 사용하여 인증하도록 끌어오기 비밀을 설정하는 것이 좋습니다. 공용 콘텐츠를 사용할 때 신뢰성을 향상시키려면 개인 Azure Container Registry에서 이미지를 가져오고 관리하세요. 공용 이미지 사용에 대해 자세히 알아봅니다.
az container create \
--resource-group myResourceGroup \
--name mycontainergroup001 \
--image fluent/fluentd:v1.3-debian-1 \
--log-analytics-workspace <WORKSPACE_ID> \
--log-analytics-workspace-key <WORKSPACE_KEY>
YAML을 사용하여 배포
YAML을 사용하여 컨테이너 그룹을 배포하려는 경우 이 메서드를 사용합니다. 다음 YAML은 단일 컨테이너로 컨테이너 그룹을 만듭니다. 새 파일에 YAML을 복사한 다음, LOG_ANALYTICS_WORKSPACE_ID
및 LOG_ANALYTICS_WORKSPACE_KEY
를 이전 단계에서 구한 값으로 바꿉니다. 파일을 deploy-aci.yaml로 저장합니다.
참고 항목
다음 예제에서는 Docker 허브에서 공용 컨테이너 이미지를 가져옵니다. 익명의 끌어오기 요청을 하는 대신 Docker Hub 계정을 사용하여 인증하도록 끌어오기 비밀을 설정하는 것이 좋습니다. 공용 콘텐츠를 사용할 때 신뢰성을 향상시키려면 개인 Azure Container Registry에서 이미지를 가져오고 관리하세요. 공용 이미지 사용에 대해 자세히 알아봅니다.
apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
containers:
- name: mycontainer001
properties:
environmentVariables: []
image: fluent/fluentd:v1.3-debian-1
ports: []
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
osType: Linux
restartPolicy: Always
diagnostics:
logAnalytics:
workspaceId: LOG_ANALYTICS_WORKSPACE_ID
workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups
다음으로, 다음 명령을 실행하여 컨테이너 그룹을 배포합니다. myResourceGroup
은 구독의 리소스 그룹으로 바꿉니다(또는 먼저 "myResourceGroup"이라는 리소스 그룹 만들기).
az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml
명령 실행 즉시 Azure에서 배포 세부 정보가 포함된 응답이 수신되어야 합니다.
로그 보기
컨테이너 그룹을 배포한 후 첫 번째 로그 항목이 Azure Portal에 표시되는 데 몇 분(최대 10분)이 걸릴 수 있습니다.
ContainerInstanceLog_CL
테이블에서 컨테이너 그룹의 로그를 보려면 다음을 수행합니다.
- Azure Portal에서 Log Analytics 작업 영역으로 이동
- 일반 아래에서 로그 선택
- 다음 쿼리 입력:
ContainerInstanceLog_CL | limit 50
- 실행을 선택합니다.
쿼리에서 몇 가지 결과를 표시해야 합니다. 처음에 아무 결과도 표시되지 않으면 몇 분 정도 기다린 다음, 실행 단추를 선택하여 쿼리를 다시 실행합니다. 기본적으로 로그 항목이 테이블 형식으로 표시됩니다. 그런 다음, 행을 확장하여 개별 로그 항목의 내용을 볼 수 있습니다.
이벤트 보기
Azure Portal에서 컨테이너 인스턴스에 대한 이벤트를 볼 수도 있습니다. 이벤트에는 인스턴스가 생성된 시간 및 인스턴스가 시작된 시간이 포함됩니다. ContainerEvent_CL
테이블에서 이벤트 데이터를 보려면 다음을 수행합니다.
- Azure Portal에서 Log Analytics 작업 영역으로 이동
- 일반 아래에서 로그 선택
- 다음 쿼리 입력:
ContainerEvent_CL | limit 50
- 실행을 선택합니다.
쿼리에서 몇 가지 결과를 표시해야 합니다. 처음에 아무 결과도 표시되지 않으면 몇 분 정도 기다린 다음, 실행 단추를 선택하여 쿼리를 다시 실행합니다. 기본적으로 항목이 테이블 형식으로 표시됩니다. 그런 다음, 행을 확장하여 개별 항목의 콘텐츠를 볼 수 있습니다.
쿼리 컨테이너 로그
Azure Monitor 로그에는 약 수천 줄의 로그 출력에서 정보를 가져오기 위한 광범위한 쿼리 언어가 포함되어 있습니다.
쿼리의 기본 구조는 원본 테이블(이 문서에서는 ContainerInstanceLog_CL
또는 ContainerEvent_CL
)이며 그 뒤에 파이프 문자(|
)로 구분된 일련의 연산자가 있습니다. 여러 연산자를 묶어 결과를 구체화하고 고급 기능을 수행할 수 있습니다.
예제 쿼리 결과를 보려면 다음 쿼리를 쿼리 텍스트 상자에 붙여넣고 실행 단추를 선택하여 쿼리를 실행합니다. 이 쿼리는 "메시지" 필드에 "warn"이라는 단어가 포함된 모든 로그 항목을 표시합니다.
ContainerInstanceLog_CL
| where Message contains "warn"
더 복잡한 쿼리도 지원됩니다. 예를 들어 이 쿼리는 지난 1시간 이내에 생성된 "mycontainergroup001" 컨테이너 그룹의 로그 항목만 표시합니다.
ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))
로그 스키마
Log Analytics용 Azure Monitor 레거시 스키마에 대해 알아보려면 레거시 Log Analytics 테이블을 참조하세요.
진단 설정 사용
최신 테이블에서는 정보를 Log Analytics로 라우팅하기 위해 진단 설정을 사용해야 합니다. Container Instances에 대한 진단 설정 기능은 공개 미리 보기로 제공되며 Azure Portal의 미리 보기 기능 옵션을 통해 사용하도록 설정할 수 있습니다.
자세한 내용은 Azure Monitor Log Analytics 테이블을 참조하세요.
다음 단계
Azure Monitor 로그
Azure Monitor 로그에서 로그를 쿼리하고 경고를 구성하는 방법에 대한 자세한 내용은 다음을 참조하세요.
컨테이너 CPU 및 메모리 모니터링
컨테이너 인스턴스 CPU 및 메모리 리소스 모니터링에 대한 자세한 내용은 다음을 참조하세요.