관찰성 리소스 배포 및 로그 설정
가시성은 Azure IoT 작업 구성의 모든 계층에 대한 표시 여부를 제공합니다. 문제의 실제 동작에 대한 인사이트를 제공하여 사이트 안정성 엔지니어링의 효율성을 높입니다. Azure IoT 작업은 Azure에서 호스트되는 사용자 지정 큐레이팅된 Grafana 대시보드를 통해 가시성성을 제공합니다. 이러한 대시보드는 Azure Monitor Prometheus용 관리 서비스 및 Container Insights를 통해 제공됩니다. 이 가이드에서는 Azure Managed Prometheus 및 Grafana를 설정하고 Azure Arc 클러스터에 대한 모니터링을 사용하도록 설정하는 방법을 보여 줍니다.
클러스터에 Azure IoT 작업을 배포하기 전에 이 문서의 단계를 완료합니다.
필수 조건
- Arc 지원 Kubernetes 클러스터.
- 클러스터 머신에 설치된 Azure CLI입니다. 지침은 Azure CLI를 설치하는 방법을 참조하세요.
- 클러스터 머신에 설치된 Helm입니다. 지침은 Helm 설치를 참조 하세요.
- 클러스터 머신에 설치된 Kubectl입니다. 자세한 내용은 Kubernetes 도구 설치를 참조 하세요.
Azure에서 리소스 만들기
클러스터가 있는 구독에 공급자를 등록합니다.
참고 항목
이 단계는 구독당 한 번만 실행하면 됩니다. 리소스 공급자를 등록하려면 구독 기여자 및 소유자 역할에 포함된
/register/action
작업을 수행할 수 있는 권한이 필요합니다. 자세한 내용은 Azure 리소스 공급자 및 형식을 참조하세요.az account set -s <SUBSCRIPTION_ID> az provider register --namespace Microsoft.AlertsManagement az provider register --namespace Microsoft.Monitor az provider register --namespace Microsoft.Dashboard az provider register --namespace Microsoft.Insights az provider register --namespace Microsoft.OperationalInsights
Azure Arc 지원 클러스터 및 Azure Managed Grafana에 대한 메트릭 컬렉션용 Azure CLI 확장을 설치합니다.
az extension add --name k8s-extension az extension add --name amg
Azure Monitor 작업 영역을 만들어 Azure Arc 지원 Kubernetes 클러스터에 대한 메트릭 수집을 사용하도록 설정합니다.
az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
이 명령의 출력에서 Azure Monitor 작업 영역 ID를 저장합니다. 다음 섹션에서 메트릭 컬렉션을 사용하도록 설정할 때 ID를 사용합니다.
Prometheus 메트릭을 시각화하는 Azure Managed Grafana 인스턴스를 만듭니다.
az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
이 명령의 출력에서 Grafana ID를 저장합니다. 다음 섹션에서 메트릭 컬렉션을 사용하도록 설정할 때 ID를 사용합니다.
Container Insights에 대한 Log Analytics 작업 영역을 만듭니다.
az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
이 명령의 출력에서 Log Analytics 작업 영역 ID를 저장합니다. 다음 섹션에서 메트릭 컬렉션을 사용하도록 설정할 때 ID를 사용합니다.
클러스터에 대한 메트릭 컬렉션 사용
메트릭을 수집하고 이전에 만든 Azure Monitor 작업 영역으로 보내도록 Azure Arc 클러스터를 업데이트합니다. 또한 이 작업 영역을 Grafana 인스턴스와 연결합니다.
az k8s-extension create --name azuremonitor-metrics --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics --configuration-settings azure-monitor-workspace-resource-id=<AZURE_MONITOR_WORKSPACE_ID> grafana-resource-id=<GRAFANA_ID>
로그 컬렉션에 대해 Container Insights 로그를 사용하도록 설정합니다.
az k8s-extension create --name azuremonitor-containers --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings logAnalyticsWorkspaceResourceID=<LOG_ANALYTICS_WORKSPACE_ID>
이러한 단계가 완료되면 Azure Monitor와 Grafana를 모두 설정하고 클러스터에 연결하여 관찰 가능성 및 메트릭 수집을 수행합니다.
OpenTelemetry 수집기 배포
Arc 지원 Kubernetes 클러스터에 OTel(OpenTelemetry) 수집 기를 정의하고 배포합니다.
호출
otel-collector-values.yaml
된 파일을 만들고 다음 코드를 붙여넣어 OpenTelemetry 수집기를 정의합니다.mode: deployment fullnameOverride: aio-otel-collector image: repository: otel/opentelemetry-collector tag: 0.107.0 config: processors: memory_limiter: limit_percentage: 80 spike_limit_percentage: 10 check_interval: '60s' receivers: jaeger: null prometheus: null zipkin: null otlp: protocols: grpc: endpoint: ':4317' http: endpoint: ':4318' exporters: prometheus: endpoint: ':8889' resource_to_telemetry_conversion: enabled: true add_metric_suffixes: false service: extensions: - health_check pipelines: metrics: receivers: - otlp exporters: - prometheus logs: null traces: null telemetry: null extensions: memory_ballast: size_mib: 0 resources: limits: cpu: '100m' memory: '512Mi' ports: metrics: enabled: true containerPort: 8889 servicePort: 8889 protocol: 'TCP' jaeger-compact: enabled: false jaeger-grpc: enabled: false jaeger-thrift: enabled: false zipkin: enabled: false
otel-collector-values.yaml
파일에서 클러스터에 Azure IoT Operations를az iot ops create
배포할 때 명령에서 사용하는 다음 값을 기록해 둡니다.- fullnameOverride
- grpc.endpoint
- check_interval
파일을 저장 후 닫습니다.
다음 명령을 실행하여 수집기를 배포합니다.
kubectl get namespace azure-iot-operations || kubectl create namespace azure-iot-operations helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo update helm upgrade --install aio-observability open-telemetry/opentelemetry-collector -f otel-collector-values.yaml --namespace azure-iot-operations
Prometheus 메트릭 컬렉션 구성
클러스터에서 Prometheus 메트릭 컬렉션을 구성합니다.
명명된
ama-metrics-prometheus-config.yaml
파일을 만들고 다음 구성을 붙여넣습니다.apiVersion: v1 data: prometheus-config: |2- scrape_configs: - job_name: otel scrape_interval: 1m static_configs: - targets: - aio-otel-collector.azure-iot-operations.svc.cluster.local:8889 - job_name: aio-annotated-pod-metrics kubernetes_sd_configs: - role: pod relabel_configs: - action: drop regex: true source_labels: - __meta_kubernetes_pod_container_init - action: keep regex: true source_labels: - __meta_kubernetes_pod_annotation_prometheus_io_scrape - action: replace regex: ([^:]+)(?::\\d+)?;(\\d+) replacement: $1:$2 source_labels: - __address__ - __meta_kubernetes_pod_annotation_prometheus_io_port target_label: __address__ - action: replace source_labels: - __meta_kubernetes_namespace target_label: kubernetes_namespace - action: keep regex: 'azure-iot-operations' source_labels: - kubernetes_namespace scrape_interval: 1m kind: ConfigMap metadata: name: ama-metrics-prometheus-config namespace: kube-system
다음 명령을 실행하여 구성 파일을 적용합니다.
kubectl apply -f ama-metrics-prometheus-config.yaml
Grafana에 대시보드 배포
Azure IoT Operations는 Azure IoT Operations 배포의 상태 및 성능을 이해하는 데 필요한 많은 시각화를 제공하도록 설계된 샘플 대시보드를 제공합니다.
다음 단계를 완료하여 Azure IoT 작업 큐레이팅된 Grafana 대시보드를 설치합니다.
azure-iot-operations 리포지토리를 복제하거나 다운로드하여 샘플 Grafana 대시보드 json 파일을 로컬로 https://github.com/Azure/azure-iot-operations가져옵니다.
Grafana 콘솔에 로그인합니다. Azure Portal을 통해 콘솔에 액세스하거나 명령을 사용하여 URL을
az grafana show
검색할 수 있습니다.az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
Grafana 애플리케이션에서 아이콘을 + 선택합니다.
대시보드 가져오기를 선택합니다.
Azure IoT Operations 리포지토리의 로컬 복사본에 있는 샘플 대시보드 디렉터리, azure-iot-operations>샘플>grafana-dashboard로 이동한 다음, 대시보드 파일을 선택합니다.
aio.sample.json
애플리케이션이 프롬프트를 표시하면 관리되는 Prometheus 데이터 원본을 선택합니다.
가져오기를 선택합니다.