Implantar recursos de observabilidade e configurar logs
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. Este guia mostra como configurar o Espaço Gerenciado do Azure para Grafana e Prometheus e habilitar o monitoramento para o cluster do Azure Arc.
Conclua as etapas neste artigo antes de implantar as Operações de IoT do Azure em seu cluster.
Pré-requisitos
- Um cluster do Kubernetes habilitado para Arc.
- CLI do Azure instalada em seu computador de cluster. Para obter as instruções, confira Como instalar a CLI do Azure.
- Helm instalado em seu computador de cluster. Para obter instruções, consulte Instalar o Helm.
- Kubectl instalado em seu computador de cluster. Para obter instruções, consulte Instalar ferramentas do Kubernetes.
Criar recursos no Azure
Registre 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 --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
Instale as extensões da CLI do Azure para a coleta de métricas para clusters habilitados para Azure Arc e Espaço Gerenciado do Azure para Grafana.
az extension add --name k8s-extension az extension add --name amg
Crie um workspace do Azure Monitor para habilitar a coleta de métricas para o cluster Kubernetes habilitado para Azure Arc.
az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
Salve a ID do workspace do Azure Monitor na saída desse comando. Use a ID ao habilitar a coleta de métricas na próxima seção.
Crie uma instância do Espaço Gerenciado do Azure para Grafana para visualizar suas métricas do Prometheus.
az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
Salve a ID do Grafana da saída deste comando. Use a ID ao habilitar a coleta de métricas na próxima seção.
Crie um workspace do Log Analytics para os Insights de Contêiner.
az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
Salve a ID do workspace do Log Analytics na saída desse comando. Use a ID ao habilitar a coleta de métricas na próxima seção.
Habilitar a coleta de métricas para o cluster
Atualize o cluster do Azure Arc para coletar métricas e enviá-las para o workspace do Azure Monitor criado anteriormente. Você também vincula esse workspace à instância do 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>
Habilite logs dos Insights de Contêiner para a coleta de logs.
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>
Depois que essas etapas forem concluídas, você terá o Azure Monitor e o Grafana configurados e vinculados ao cluster para observabilidade e coleta de métricas.
Implantar o coletor do OpenTelemetry
Defina e implante um Coletor OTel (OpenTelemetry) no cluster Kubernetes habilitado para Arc.
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 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
No arquivo
otel-collector-values.yaml
, anote os seguintes valores que você usa no comandoaz iot ops create
ao implantar as Operações do Azure IoT no cluster:- fullnameOverride
- grpc.endpoint
- check_interval
Salve e feche o arquivo.
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
Configurar a coleção de métricas do Prometheus
Configure a coleta de métricas do Prometheus em seu cluster.
Crie um arquivo chamado
ama-metrics-prometheus-config.yaml
e cole a seguinte configuração: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
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 um painel de exemplo projetado 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.
Clone ou baixe o repositório azure-iot-operations para obter o arquivo JSON do Painel do Grafana de exemplo localmente: https://github.com/Azure/azure-iot-operations.
Entre no console do Grafana. Você pode acessar o console por meio do portal do Azure ou usar o comando
az grafana show
para recuperar a URL.az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
No aplicativo Grafana, selecione o ícone +.
Selecione Importar painel.
Navegue até o diretório do painel de exemplo em sua cópia local do repositório das Operações do Azure IoT, azure-iot-operations>samples>grafana-dashboard, e selecione o arquivo
aio.sample.json
do painel.Quando o aplicativo for solicitado, selecione a fonte de dados do Prometheus Gerenciado.
Selecione Importar.