部署可檢視性資源並設定記錄
可檢視性可讓您查看 Azure IoT 操作每一層的設定。 它可讓您深入解析問題的實際行為,進而提升網站可靠性工程的效益。 Azure IoT 作業可透過裝載在 Azure 中的自訂策展 Grafana 儀錶板來提供可檢視性。 這些儀錶板由適用於 Prometheus 的 Azure 監視器受管理服務和 Container Insights 技術支援。 本指南說明如何設定 Azure Managed Prometheus 和 Grafana,並啟用 Azure Arc 叢集的監視。
請先完成本文 中的步驟,再 將 Azure IoT 作業部署至您的叢集。
必要條件
- 已啟用 Arc 的 Kubernetes 叢集。
- 安裝在叢集機器上的 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 Arc 的叢集和 Azure 受控 Grafana 安裝適用於計量集合的 Azure CLI 擴充功能。
az extension add --name k8s-extension az extension add --name amg
建立 Azure 監視器工作區,以啟用已啟用 Azure Arc 的 Kubernetes 叢集的計量集合。
az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
從此命令的輸出儲存 Azure 監視器工作區識別碼。 在下一節中啟用計量集合時,您會使用標識符。
建立 Azure 受控 Grafana 實例,以可視化您的 Prometheus 計量。
az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
從此命令的輸出儲存 Grafana 識別符。 在下一節中啟用計量集合時,您會使用標識符。
建立 Container Insights 的 Log Analytics 工作區。
az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
從此命令的輸出儲存Log Analytics工作區標識碼。 在下一節中啟用計量集合時,您會使用標識符。
啟用叢集的計量集合
更新 Azure Arc 叢集以收集計量,並將其傳送至先前建立的 Azure 監視器工作區。 您也會連結此工作區與 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 監視器和 Grafana 並連結至您的叢集,以取得可觀察性和計量集合。
部署 OpenTelemetry 收集器
定義 OpenTelemetry (OTel) 收集器並將其部署至已啟用 Arc 的 Kubernetes 叢集。
建立名為
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
,記下您在叢集上部署 Azure IoT 作業時,在 命令中使用的az iot ops create
下列值:- 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 IoT 作業提供範例 儀錶板 ,其設計目的是讓您瞭解 Azure IoT 作業部署的健康情況和效能所需的許多視覺效果。
完成下列步驟以安裝 Azure IoT 操作策劃的 Grafana 儀錶板。
複製或下載 azure-iot-operations 存放庫,以在本機取得範例 Grafana 儀錶板 json 檔案: https://github.com/Azure/azure-iot-operations。
登入 Grafana 控制台。 您可以透過 Azure 入口網站 存取控制台,或使用
az grafana show
命令來擷取 URL。az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
在 Grafana 應用程式中,選取 + 圖示。
選取 [匯入儀表板]。
流覽至 Azure IoT Operations 存放庫本機複本中的範例儀錶板目錄、azure-iot-operations>範例>grafana-dashboard,然後選取
aio.sample.json
儀錶板檔案。當應用程式提示時,請選取受控 Prometheus 資料來源。
選取匯入。