Развертывание ресурсов наблюдаемости и настройка журналов
Наблюдаемость обеспечивает видимость каждого уровня конфигурации операций Интернета вещей 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
Зарегистрируйте поставщиков в подписке, в которой находится кластер.
Примечание.
Этот шаг необходимо выполнить только один раз для каждой подписки. Чтобы зарегистрировать поставщиков ресурсов, необходимо разрешение на
/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
Установите расширения Azure CLI для коллекции метрик для кластеров с поддержкой Azure Arc и Управляемой Grafana Azure.
az extension add --name k8s-extension az extension add --name amg
Создайте рабочую область Azure Monitor, чтобы включить коллекцию метрик для кластера Kubernetes с поддержкой Azure Arc.
az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
Сохраните идентификатор рабочей области Azure Monitor из выходных данных этой команды. Идентификатор используется при включении коллекции метрик в следующем разделе.
Создайте экземпляр Azure Managed Grafana, чтобы визуализировать метрики Prometheus.
az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
Сохраните идентификатор Grafana из выходных данных этой команды. Идентификатор используется при включении коллекции метрик в следующем разделе.
Создайте рабочую область 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.
Создайте файл с именем
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
otel-collector-values.yaml
В файле запишите следующие значения, которые вы используете в командеaz iot ops create
при развертывании операций Интернета вещей Azure в кластере:- fullnameOverride
- grpc.endpoint
- check_interval
Сохранить и закрыть файл.
Разверните сборщик, выполнив следующие команды:
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 в кластере.
Создайте файл с именем
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
Примените файл конфигурации, выполнив следующую команду:
kubectl apply -f ama-metrics-prometheus-config.yaml
Развертывание панелей мониторинга в Grafana
Операции Интернета вещей Azure предоставляют пример панели мониторинга , предназначенной для многих визуализаций, необходимых для понимания работоспособности и производительности развертывания Операций Интернета вещей Azure.
Выполните следующие действия, чтобы установить проверенные панели мониторинга Grafana для операций Интернета вещей Azure.
Клонируйте или скачайте репозиторий azure-iot-operations, чтобы получить пример json-файла панели мониторинга Grafana локально: https://github.com/Azure/azure-iot-operations
Войдите в консоль Grafana. Вы можете получить URL-адрес через консоль через портал Azure или воспользоваться командой
az grafana show
.az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
В приложении Grafana выберите + значок.
Выберите " Импортировать панель мониторинга".
Перейдите к примеру каталога панели мониторинга в локальной копии репозитория операций Интернета вещей Azure, azure-iot-operations>samples>grafana-dashboard, а затем выберите
aio.sample.json
файл панели мониторинга.Когда приложение запрашивает, выберите управляемый источник данных Prometheus.
Выберите Импорт.