Compartilhar via


Introdução: configurar a observabilidade com um script na versão prévia das Operações do Azure IoT

Importante

A Versão Prévia das Operações da Internet das Coisas do Azure – habilitadas pelo Azure Arc – está atualmente em versão prévia. Você não deve usar esse software em versão prévia em ambientes de produção.

Você precisará implantar uma nova instalação das Operações da Internet das Coisas do Azure quando uma versão em disponibilidade geral for disponibilizada. Você não poderá atualizar uma instalação de versão prévia.

Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

A observabilidade fornece visibilidade em todas as camadas da configuração das Operações do Azure IoT. Ele fornece informações sobre o comportamento real dos problemas, o que aumenta a eficácia da engenharia de confiabilidade do site. As Operações do Azure IoT oferecem observabilidade por meio de painéis personalizados do Grafana hospedados no Azure. Esses painéis são alimentados pelo serviço gerenciado do Azure Monitor para Prometheus e pelo Container Insights. Esse artigo mostra como configurar os serviços necessários para a observabilidade.

Pré-requisitos

  • Um cluster do Kubernetes habilitado para Arc.
  • Helm instalado no computador de desenvolvimento. Para obter instruções, consulte Instalar o Helm.
  • Kubectl instalado no computador de desenvolvimento. Para obter instruções, consulte Instalar ferramentas do Kubernetes.
  • CLI do Azure instalada em seu computador de desenvolvimento. Para obter mais informações, confira Como instalar a CLI do Azure.

Configurar sua assinatura

Execute o código a seguir para registrar provedores com a assinatura em que o cluster está localizado.

Observação

Esta etapa só precisa ser executada uma vez por assinatura. Para registrar provedores de recursos, você precisa de permissão para fazer a operação /register/action, que está incluída nas funções Colaborador e Proprietário da assinatura. Confira mais informações em Tipos e provedores de recursos do Azure.

az account set -s <subscription-id>
az provider register -n "Microsoft.Insights"
az provider register -n "Microsoft.AlertsManagement"

Instalar componentes de observabilidade

As etapas nesta seção implantam um Coletor OpenTelemetry (OTel) e instalam recursos de monitoramento compartilhados e configuram o cluster habilitado para Arc, para emitir sinais de observabilidade para estes recursos. Os recursos de monitoramento compartilhado incluem o Espaço Gerenciado do Azure para Grafana, o Workspace do Azure Monitor, o Prometheus Gerenciado do Azure, o Azure Log Analytics e o Insights de Contêiner.

Implantar o coletor do OpenTelemetry

  1. Clone ou baixe o repositório de Operações do Azure IoT no computador local: azure-iot-operations.git.

    Observação

    O repo contém a definição de implantação das Operações Azure IoT e amostras que incluem os dashboards de amostra utilizados nesse artigo.

  2. Navegue até o seguinte caminho na cópia local do repositório:

    azure-iot-operations\tools\setup-3p-obs-infra

  3. Crie um arquivo chamado otel-collector-values.yaml e cole o seguinte código nele para definir um coletor do 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
      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
    
  4. No arquivo otel-collector-values.yaml, anote os seguintes valores que você usa no comando az iot ops init ao implantar as Operações do Azure IoT no cluster:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  5. Salve e feche o arquivo.

  6. Implante o coletor executando os seguintes comandos:

    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
    

Implantar componentes de observabilidade

  • Implante os componentes de observabilidade executando um dos comandos a seguir. Use a ID da assinatura e o grupo de recursos do cluster habilitado para Arc a ser monitorado.

    Observação

    Para descobrir outros parâmetros opcionais que você pode definir, consulte o arquivo bicep. Os parâmetros opcionais podem especificar itens como locais alternativos para recursos de cluster.

    O comando a seguir concede acesso de administrador para a instância do Grafana recém-criada ao usuário:

    az deployment group create \
         --subscription <subscription-id> \
         --resource-group <cluster-resource-group> \
         --template-file observability-full.bicep \
         --parameters grafanaAdminId=$(az ad user show --id $(az account show --query user.name --output tsv) --query=id --output tsv) \
                      clusterName=<cluster-name> \
                      sharedResourceGroup=<shared-resource-group> \
                      sharedResourceLocation=<shared-resource-location> \
         --query=properties.outputs
    

    Se esse acesso não for o que você deseja, o comando a seguir que não configura permissões. Em seguida, configure permissões manualmente usando atribuições de função antes que qualquer pessoa possa acessar a instância do Grafana. Atribua uma das funções do Grafana (Administrador do Grafana, Editor do Grafana, Visualizador do Grafana) dependendo do nível de acesso desejado.

    az deployment group create \
         --subscription <subscription-id> \
         --resource-group <cluster-resource-group> \
         --template-file observability-full.bicep \
         --parameters clusterName=<cluster-name> \
                      sharedResourceGroup=<shared-resource-group> \
                      sharedResourceLocation=<shared-resource-location> \
          --query=properties.outputs
    

    Se a implantação for bem-sucedida, algumas informações serão impressas no final da saída do comando. As informações incluem a URL do Grafana e as IDs de recurso para os recursos do Log Analytics e do Azure Monitor que foram criados. A URL do Grafana permite que você acesse a instância do Grafana configurada em Implantar painéis no Grafana. As duas IDs de recurso permitem configurar outros clusters habilitados para Arc seguindo as etapas em Adicionar um cluster habilitado para o Arc à infraestrutura de observabilidade existente.

Configurar a coleção de métricas do Prometheus

  1. Copie e cole a seguinte configuração em um novo arquivo chamado ama-metrics-prometheus-config.yaml e salve o arquivo:

    apiVersion: v1
    data:
      prometheus-config: |2-
        scrape_configs:
          - job_name: e4k
            scrape_interval: 1m
            static_configs:
              - targets:
                - aio-internal-diagnostics-service.azure-iot-operations.svc.cluster.local:9600
              - job_name: nats
                scrape_interval: 1m
                static_configs:
                - targets:
                  - aio-dp-msg-store-0.aio-dp-msg-store-headless.azure-iot-operations.svc.cluster.local:7777
              - 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. Aplique o arquivo de configuração executando o seguinte comando:

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

Implantar painéis no Grafana

As Operações do Azure IoT fornecem uma coleção de painéis projetados para fornecer muitas das visualizações necessárias para entender a integridade e o desempenho da implantação das Operações do Azure IoT.

Conclua as etapas a seguir para instalar os painéis do Grafana coletados das Operações do Azure IoT.

  1. Entre no console do Grafana e, na área superior direita do aplicativo Grafana, selecione o ícone +

  2. Selecione Importar painel, siga as instruções para navegar até o caminho samples\grafana-dashboards em sua cópia clonada local do repositório e selecione um arquivo de painel JSON

  3. Quando o aplicativo solicitar, selecione a fonte de dados do Prometheus Gerenciado

  4. Selecione Importar