探索可观测性功能

本文将指导您如何使用 Istio 为 Bookinfo 应用注入 Sidecar,并探索可观测性功能。

开始之前,请确保:

步骤 1:管理命名空间

进入平台管理,导航至服务网格 > 服务网格,然后单击服务网格名称进入详情页面。在命名空间部分,单击托管命名空间。选择 demo-dev,然后单击确认

步骤 2:注入 Sidecar

  1. 使用 kubectl 部署
    打开容器平台或平台管理页面,然后单击右下角的 kubectl 工具。

  2. 应用 YAML 文件
    将以下脚本粘贴到终端中并执行:

    #!/bin/bash
    apiVersion: asm.alauda.io/v1beta3
    kind: MicroService
    metadata:
      labels:
        app.cpaas.io/microservice-type: service-mesh
        asm.cpaas.io/isolatepod: enabled
      name: details
    spec:
      deployments:
      - name: details-v1
      services:
      - name: details
      sidecar:
        enabled: true
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
    ---
    apiVersion: asm.alauda.io/v1beta3
    kind: MicroService
    metadata:
      labels:
        app.cpaas.io/microservice-type: service-mesh
        asm.cpaas.io/isolatepod: enabled
      name: ratings
    spec:
      deployments:
      - name: ratings-v1
      services:
      - name: ratings
      sidecar:
        enabled: true
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
    ---
    apiVersion: asm.alauda.io/v1beta3
    kind: MicroService
    metadata:
      labels:
        app.cpaas.io/microservice-type: service-mesh
        asm.cpaas.io/isolatepod: enabled
      name: reviews
    spec:
      deployments:
      - name: reviews-v1
      services:
      - name: reviews
      sidecar:
        enabled: true
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
    ---
    apiVersion: asm.alauda.io/v1beta3
    kind: MicroService
    metadata:
      labels:
        app.cpaas.io/microservice-type: service-mesh
        asm.cpaas.io/isolatepod: enabled
      name: productpage
    spec:
      deployments:
      - name: productpage-v1
      services:
      - name: productpage
      sidecar:
        enabled: true
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
    EOF
    kubectl apply -f sidecar.yaml -n demo-dev
    rm sidecar.yaml
  3. 确认注入成功
    导航至服务网格,在服务中,您应看到四个 Bookinfo 服务的 Sidecar 注入状态均为 Enabled

步骤 3:探索可观测性功能

  1. 生成流量
    要探索可观测性功能,Bookinfo 应用需要有流量,以便 Istio 从服务中收集指标和追踪数据。使用以下脚本生成流量。
    注意:GATEWAY_IP_PORT 替换为 ingress gateway 的实际 IP。我们之前已在 [访问 Bookinfo] 部分获取 GATEWAY_IP_PORT

    将以下脚本保存为 send-requests.sh

    #!/bin/sh
    export GATEWAY_IP_PORT=192.168.130.0:30665
    while true; do
        result=$(curl -m 5 -s -o /dev/null -I -w "%{http_code}" "http://$GATEWAY_IP_PORT/productpage")
        echo date: $(date), status code: "$result"
        sleep 1
    done

    为脚本添加执行权限并运行:

    chmod +x send-requests.sh
    ./send-requests.sh

    此脚本每 1 秒向 Bookinfo 产品页面发送一个请求。一段时间后,您可以在 UI 中探索可观测性功能。

  2. 服务拓扑

    • 运行流量生成脚本 1–5 分钟后,导航至服务网格 > 拓扑。在此处,您可以看到显示 ingress gateway 与四个 Bookinfo 服务之间依赖关系的拓扑。您还可以在拓扑图上查看与流量和错误率相关的指标。

    • 单击拓扑中 public-ingressgwproductpage 节点之间的链接。两者之间的流量信息将显示在拓扑右侧。

  3. 追踪详情

    • 流量信息页面上,单击查看追踪以打开追踪详情页面。查询时间和参数将自动填充。左侧的 Span 列表将显示与查询条件匹配的 Span 数据。

    • 单击任意 Span,即可在右侧查看完整的 Trace 数据。

    • 在 Trace 数据中单击查看日志,检查追踪涉及的 Pod 的持久化日志数据。