部署可檢視性資源並設定記錄
重要
已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。
當正式推出的版本可使用時,您必須部署新的 Azure IoT 操作安裝。 您將無法升級預覽安裝。
請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
可檢視性可讓您查看 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 資料來源。
選取匯入。