探索可观测性功能

本文将指导你如何使用 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 替换为入口网关的实际 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 分钟后,导航至 服务网格 > 拓扑。在这里,你可以看到显示入口网关与四个 Bookinfo 服务之间依赖关系的拓扑。你还可以在拓扑图中查看与流量和错误率相关的指标。

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

  3. 跟踪详情

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

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

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