Implantar recursos de observabilidade e configurar logs
A observabilidade fornece visibilidade em cada camada da sua configuração de 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. O Azure IoT Operations oferece observabilidade por meio de painéis Grafana personalizados e selecionados que são 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 Azure Managed Prometheus e o Grafana e habilitar o monitoramento para seu cluster do Azure Arc.
Conclua as etapas neste artigo antes de implantar o Azure IoT Operations em seu cluster.
Pré-requisitos
- Um cluster Kubernetes habilitado para Arc.
- CLI do Azure instalada em sua máquina de cluster. Para obter instruções, consulte Como instalar a CLI do Azure.
- Leme instalado em sua máquina de cluster. Para obter instruções, consulte Instalar leme.
- Kubectl instalado em sua máquina de cluster. Para obter instruções, consulte Instalar ferramentas do Kubernetes.
Criar recursos no Azure
Registe fornecedores com a subscrição onde o cluster está localizado.
Nota
Esta etapa só precisa ser executada uma vez por assinatura. Para registrar provedores de recursos, você precisa de permissão para fazer a
/register/action
operação, que está incluída nas funções de Colaborador e Proprietário da assinatura. Para obter mais informações, consulte 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 coleta de métricas para clusters habilitados para Azure Arc e Azure Managed Grafana.
az extension add --name k8s-extension az extension add --name amg
Crie um espaço de trabalho do Azure Monitor para habilitar a coleta de métricas para seu 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 espaço de trabalho do Azure Monitor na saída deste comando. Você usa o ID quando habilita a coleta de métricas na próxima seção.
Crie uma instância do Azure Managed Grafana para visualizar suas métricas do Prometheus.
az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
Salve o ID do Grafana na saída deste comando. Você usa o ID quando habilita a coleta de métricas na próxima seção.
Crie um espaço de trabalho do Log Analytics para o Container Insights.
az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
Salve o ID do espaço de trabalho do Log Analytics na saída deste comando. Você usa o ID quando habilita 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 espaço de trabalho do Azure Monitor criado anteriormente. Você também vincula esse espaço de trabalho à 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 os logs do Container Insights 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>
Quando 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 OpenTelemetry Collector
Defina e implante um coletor OpenTelemetry (OTel) em seu cluster Kubernetes habilitado para Arc.
Crie um arquivo chamado
otel-collector-values.yaml
e cole o seguinte código nele para definir um OpenTelemetry Collector: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
No arquivo, anote os seguintes valores que você usa no comando ao implantar oaz iot ops create
Azure IoT Operations no cluster:- fullnameOverride
- grpc.ponto final
- check_interval
Guarde e feche o ficheiro.
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 coleção 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
O Azure IoT Operations fornece um painel de exemplo projetado para fornecer muitas das visualizações necessárias para entender a integridade e o desempenho de sua implantação do Azure IoT Operations.
Conclua as etapas a seguir para instalar os painéis Grafana com curadoria de Operações do Azure IoT.
Clone ou baixe o repositório azure-iot-operations para obter o arquivo json do Grafana Dashboard de exemplo localmente: https://github.com/Azure/azure-iot-operations.
Inicie sessão na consola do Grafana. Você pode acessar o console por meio do portal do Azure ou usar o
az grafana show
comando 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 de exemplo do painel em sua cópia local do repositório de Operações do Azure IoT, azure-iot-operations>samples>grafana-dashboard e selecione o arquivo do
aio.sample.json
painel.Quando o aplicativo solicitar, selecione sua fonte de dados Prometheus gerenciada.
Selecione Importar.