你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
部署可观测性资源并设置日志
可观测性提供对 Azure IoT 操作配置的每一层的可见性。 它让你深入了解问题的实际行为,从而提高站点可靠性工程的有效性。 Azure IoT 操作通过托管在 Azure 中的自定义策展 Grafana 仪表板提供可观测性。 这些仪表板由适用于 Prometheus 的 Azure Monitor 托管服务和容器见解提供支持。 本指南介绍如何设置 Azure 托管 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 Monitor 工作区,为已启用 Azure Arc 的 Kubernetes 群集启用指标收集。
az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
保存此命令的输出中的 Azure Monitor 工作区 ID。 在下一部分中启用指标收集时,会用到该 ID。
创建 Azure 托管 Grafana 实例来可视化 Prometheus 指标。
az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
保存此命令的输出中的 Grafana ID。 在下一部分中启用指标收集时,会用到该 ID。
为容器见解创建 Log Analytics 工作区。
az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
保存此命令的输出中的 Log Analytics 工作区 ID。 在下一部分中启用指标收集时,会用到该 ID。
为群集启用指标收集
更新 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>
启用容器见解日志以收集日志。
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) 收集器 并将其部署到已启用 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 操作存储库本地副本中的示例仪表板目录(“azure-iot-operations”>“示例”>“grafana-dashboard”),然后选择
aio.sample.json
仪表板文件。当应用程序提示时,选择托管 Prometheus 数据源。
选择“导入” 。