다음을 통해 공유


관찰성 리소스 배포 및 로그 설정

Azure IoT Operations 관찰성은 구성의 모든 계층에 대한 가시성을 제공하고 문제의 실제 동작에 대한 인사이트를 제공하여 사이트 안정성 엔지니어링의 효율성을 높입니다. Azure IoT Operations는 Prometheus 및 Container Insights용 Azure Monitor 관리 서비스에서 제공하는 Azure에서 호스팅되는 사용자 지정 큐레이팅된 Grafana 대시보드를 통해 관찰 가능성을 제공합니다.

이 문서에서는 Azure IoT Operations 관찰성 리소스를 배포하고, Azure Managed Prometheus 및 Grafana를 설정하고, Azure Arc 클러스터에 대해 포괄적인 모니터링을 사용하도록 설정하는 방법을 보여 줍니다.

필수 조건

  • Arc 지원 Kubernetes 클러스터.
  • 클러스터 머신에 설치된 Azure CLI입니다. 지침은 Azure CLI를 설치하는 방법을 참조하세요.
  • 클러스터 머신에 설치된 Helm입니다. 지침은 Helm 설치를 참조 하세요.
  • 클러스터 머신에 설치된 Kubectl입니다. 자세한 내용은 Kubernetes 도구 설치를 참조 하세요.

Azure에서 리소스 만들기

  1. 클러스터가 있는 구독에 공급자를 등록합니다.

    참고 항목

    구독당 한 번만 이 단계를 실행합니다. 리소스 공급자를 등록하려면 구독 /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
    
  2. Azure Arc 지원 클러스터 및 Azure Managed Grafana에 대한 메트릭 컬렉션용 Azure CLI 확장을 설치합니다.

    az extension add --upgrade --name k8s-extension
    az extension add --upgrade --name amg
    
  3. Azure Arc 지원 Kubernetes 클러스터에 대한 메트릭 수집을 사용하도록 설정하는 Azure Monitor 작업 영역을 만듭니다.

    az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
    

    이 명령의 출력에서 Azure Monitor 작업 영역 ID를 저장합니다. 다음 섹션에서 메트릭 컬렉션을 사용하도록 설정할 때 ID를 사용합니다.

  4. Prometheus 메트릭을 시각화하는 Azure Managed Grafana 인스턴스를 만듭니다.

    az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
    

    이 명령의 출력에서 Grafana ID를 저장합니다. 다음 섹션에서 메트릭 컬렉션을 사용하도록 설정할 때 ID를 사용합니다.

  5. 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) 수집 기를 정의하고 배포합니다.

  1. 호출 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
    
  2. otel-collector-values.yaml 파일에서 클러스터에 Azure IoT Operations를 az iot ops create 배포할 때 명령에서 사용하는 다음 값을 기록해 둡니다.

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  3. 파일을 저장 후 닫습니다.

  4. 다음 명령을 실행하여 수집기를 배포합니다.

    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 메트릭 컬렉션을 구성합니다.

  1. 명명된 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
    
  2. 다음 명령을 실행하여 구성 파일을 적용합니다.

    kubectl apply -f ama-metrics-prometheus-config.yaml
    

관찰성 구성 설정

언제든지 Azure IoT Operations 배포의 가시성 구성을 설정할 수 있습니다. 관측성 리소스가 구성되면 명령을 az iot ops upgrade--ops-config 매개 변수를 사용하여 실행하여 새로운 구성 값을 지정해 관측성 구성을 업그레이드할 수 있습니다.

az iot ops upgrade --resource-group <rg name> -n <instance name> --ops-config observability.metrics.openTelemetryCollectorAddress=<>
매개 변수 가치 설명
--ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> otel-collector-values.yaml 파일에서 구성한 OTel(OpenTelemetry) 수집기 주소를 제공합니다.

이 문서의 지침에서는 샘플 값 fullnameOverride=aio-otel-collectorgrpc.endpoint=4317를 사용합니다.
--ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> check_interval otel-collector-values.yaml 파일에 구성한 값을 제공합니다.

이 문서의 지침에서는 샘플 값을 check_interval=60사용합니다.

참고 항목

미리 보기 릴리스에서는 이 명령이 az iot ops upgrade 미리 보기 버전으로 업그레이드하는 데 작동하지 않지만, 준수를 위해 Azure IoT 작업을 구성하는 데 작동합니다.

Grafana에 대시보드 배포

Azure IoT Operations는 Azure IoT Operations 배포의 상태 및 성능을 이해하는 데 필요한 많은 시각화를 제공하도록 설계된 샘플 대시보드를 제공합니다.

다음 단계를 완료하여 Azure IoT Operations 큐레이팅된 Grafana 대시보드를 설치합니다.

  1. azure-iot-operations 리포지토리를 복제하거나 다운로드하여 샘플 Grafana 대시보드 json 파일을 로컬로 https://github.com/Azure/azure-iot-operations가져옵니다.

  2. Grafana 콘솔에 로그인합니다. Azure Portal을 통해 콘솔에 액세스하거나 명령을 사용하여 URL을 az grafana show 검색할 수 있습니다.

    az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
    
  3. Grafana 방문 페이지에서 첫 번째 대시보드 타일 만들기를 선택합니다.

  4. 대시보드 가져오기를 선택합니다.

  5. Azure IoT Operations 리포지토리의 로컬 복사본에서 샘플 대시보드 디렉터리 > grafana-dashboard로 이동한 다음 aio.sample.json 대시보드 파일을 선택합니다.

  6. 애플리케이션이 프롬프트를 표시하면 관리되는 Prometheus 데이터 원본을 선택합니다.

  7. 가져오기를 선택합니다.

다음 단계