你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Azure Kubernetes 服务的基于 Istio 的服务网格加载项的遥测 API
Istio 可以为网格中的所有工作负载生成指标、分布式跟踪和访问日志。 基于 Istio 的 Azure Kubernetes 服务 (AKS) 服务网格加载项通过共享的 MeshConfig 和 Istio 遥测 API v1
(适用于 Istio 插件次要修订版 asm-1-22
及更高版本)提供遥测自定义选项。
备注
虽然 Istio MeshConfig 还提供了在网格中全局配置遥测的选项,但遥测 API 可以根据每个服务或每个工作负载提供对遥测设置的更精细的控制。 随着 Istio 社区不断投资开发遥测 API,它现在已成为遥测配置的首选方法。 建议迁移到遥测 API,以便配置要在网格中收集的遥测数据。
- 必须使用修订版
asm-1-22
或更高版本。 有关如何执行次要版本升级的信息,请参阅 Istio 加载项升级文档。
以下示例演示了如何使用 asm-1-22
(根据需要调整修订),通过遥测 API 为 Istio 附加组件在多个网格中启用 Envoy 访问日志记录。 有关该加载项的其他遥测 API 自定义的指导,请参阅遥测 API 支持范围部分和 Istio 文档。
为挎斗注入标记命名空间:
kubectl label ns default istio.io/rev=asm-1-22
部署 sleep
应用程序并设置 SOURCE_POD
环境变量:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/sleep/sleep.yaml
export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})
然后,部署 httpbin
应用程序:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/httpbin/httpbin.yaml
部署以下 Istio v1
遥测 API 资源,为整个网格启用 Envoy 访问日志记录:
cat <<EOF | kubectl apply -n aks-istio-system -f -
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-logging-default
spec:
accessLogging:
- providers:
- name: envoy
EOF
将请求从 sleep
发送到 httpbin
:
kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418
验证访问日志是否对 sleep
Pod 可见:
kubectl logs -l app=sleep -c istio-proxy
应会看到以下输出:
[2024-08-13T00:31:47.690Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 12 11 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" outbound|8000||httpbin.default.svc.cluster.local 10.244.0.12:53336 10.0.112.220:8000 10.244.0.12:42360 - default
现在,验证访问日志是否对 httpbin
Pod 可见:
kubectl logs -l app=httpbin -c istio-proxy
应会看到以下输出:
[2024-08-13T00:31:47.696Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 2 1 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" inbound|8080|| 127.0.0.6:55401 10.244.0.13:8080 10.244.0.12:53336 outbound_.8000_._.httpbin.default.svc.cluster.local default
对于 AKS 的 Istio 服务网格加载项,遥测 API 字段分为 allowed
、supported
和 blocked
值。 有关 Istio 加载项对功能和网格配置的支持策略的详细信息,请参阅 Istio 加载项支持策略文档。
对于 Istio 加载项,以下遥测 API 配置的值是 allowed
或 supported
。 此表中未包含的任何字段都是 blocked
。
遥测 API 字段 | 支持/允许 | 说明 |
---|---|---|
accessLogging.match |
支持 | - |
accessLogging.disabled |
支持 | - |
accessLogging.providers |
允许 | 支持默认 envoy 访问日志提供程序。 有关日志收集和查询的托管体验,请参阅 Azure Monitor 容器见解日志分析。 第三方或开源日志收集和分析解决方案为 allowed ,但不受支持。 |
metrics.overrides |
支持 | - |
metrics.providers |
允许 | 支持使用 Azure Monitor 托管 Prometheus 收集指标。 第三方或开源指标抓取解决方案为 allowed ,但不受支持。 |
tracing.* |
允许 | 所有跟踪配置均为 allowed ,但不受支持。 |