探索可观测性功能

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

开始之前,请确保:

目录

第 1 步:管理命名空间

进入 平台管理,导航至 Service Mesh > Service Meshes,点击服务网格名称进入详情页。在 Namespaces 区域,点击 Managed Namespace。选择 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. 确认注入成功
    进入 Service Mesh,在 Services 中,您应看到所有四个 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

    该脚本将每秒向 Bookinfo 产品页面发送一次请求。运行一段时间后,您即可在 UI 中探索可观测性功能。

  2. 服务拓扑

    • 运行流量生成脚本 1–5 分钟后,进入 Service Mesh > Topologies。这里可以看到 ingress gateway 与四个 Bookinfo 服务之间的依赖拓扑图。您还可以在拓扑图上查看与流量和错误率相关的指标。

    • 点击拓扑中 public-ingressgwproductpage 节点之间的连线,右侧将显示它们之间的流量信息

  3. 追踪详情

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

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

    • 在 Trace 数据中点击 View Log,可查看参与该追踪的 Pod 的持久化日志数据。