Поделиться через


Развертывание ресурсов наблюдаемости и настройка журналов

Наблюдаемость обеспечивает видимость каждого уровня конфигурации операций Интернета вещей Azure. Он дает представление о фактическом поведении проблем, что повышает эффективность проектирования надежности сайта. Операции Интернета вещей Azure обеспечивают наблюдаемость с помощью пользовательских курируемых панелей мониторинга Grafana, размещенных в Azure. Эти панели мониторинга поддерживаются управляемой службой Azure Monitor для Prometheus и службой Container Insights. В этом руководстве показано, как настроить Управляемый Prometheus и Grafana Azure и включить мониторинг для кластера Azure Arc.

Выполните действия, описанные в этой статье , прежде чем развертывать операции Интернета вещей Azure в кластере.

Необходимые компоненты

  • Кластер Kubernetes с поддержкой Arc.
  • 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 CLI для коллекции метрик для кластеров с поддержкой Azure Arc и Управляемой Grafana Azure.

    az extension add --name k8s-extension
    az extension add --name amg
    
  3. Создайте рабочую область Azure Monitor, чтобы включить коллекцию метрик для кластера Kubernetes с поддержкой Azure Arc.

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

    Сохраните идентификатор рабочей области Azure Monitor из выходных данных этой команды. Идентификатор используется при включении коллекции метрик в следующем разделе.

  4. Создайте экземпляр Azure Managed Grafana, чтобы визуализировать метрики Prometheus.

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

    Сохраните идентификатор Grafana из выходных данных этой команды. Идентификатор используется при включении коллекции метрик в следующем разделе.

  5. Создайте рабочую область Log Analytics для Container Insights.

    az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
    

    Сохраните идентификатор рабочей области Log Analytics из выходных данных этой команды. Идентификатор используется при включении коллекции метрик в следующем разделе.

Включение сбора метрик для кластера

Обновите кластер Azure Arc, чтобы собирать метрики и отправлять их в ранее созданную рабочую область Azure Monitor. Вы также связываете эту рабочую область с экземпляром 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

Определите и разверните сборщик OpenTelemetry (OTel) в кластере Kubernetes с поддержкой Arc.

  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 В файле запишите следующие значения, которые вы используете в команде az iot ops create при развертывании операций Интернета вещей Azure в кластере:

    • 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
    

Развертывание панелей мониторинга в Grafana

Операции Интернета вещей Azure предоставляют пример панели мониторинга , предназначенной для многих визуализаций, необходимых для понимания работоспособности и производительности развертывания Операций Интернета вещей Azure.

Выполните следующие действия, чтобы установить проверенные панели мониторинга Grafana для операций Интернета вещей Azure.

  1. Клонируйте или скачайте репозиторий azure-iot-operations, чтобы получить пример json-файла панели мониторинга Grafana локально: https://github.com/Azure/azure-iot-operations

  2. Войдите в консоль Grafana. Вы можете получить URL-адрес через консоль через портал Azure или воспользоваться командойaz grafana show.

    az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
    
  3. В приложении Grafana выберите + значок.

  4. Выберите " Импортировать панель мониторинга".

  5. Перейдите к примеру каталога панели мониторинга в локальной копии репозитория операций Интернета вещей Azure, azure-iot-operations>samples>grafana-dashboard, а затем выберите aio.sample.json файл панели мониторинга.

  6. Когда приложение запрашивает, выберите управляемый источник данных Prometheus.

  7. Выберите Импорт.