更新时间:2026-09-15 GMT+08:00
分享

流量监控

购买网格时,基础配置 中的“ 可观测性配置”选择对接APM服务,则可以通过流量监控来监测流量概况、组件运行状态、调用链等信息,并在系统业务异常时快速定位到问题点。

适用场景

适用于1.15之前版本的网格,且APM服务在需要监控网格的region已开通。

约束与限制

  • 流量监控记录的是组件过去24小时内的数据,所以当部分组件删除后并不能及时的在拓扑图上消失,而是会仍然存在一段时间。
  • 企业版网格多集群场景下,只支持集群内部服务之间的流量监控,暂时不支持跨集群服务之间的流量监控。

查看流量监控情况

  1. 登录应用服务网格控制台,单击已对接APM的服务网格名称进入详情页面。
  2. 在左侧导航栏中选择“监控中心”-“流量监控”。
  3. 查看整个系统的监控情况。

    拓扑图中显示了系统处于运行中和未就绪的应用数量。

    图1 流量拓扑

  4. 查看某个组件的监控情况。

    选择服务网格、集群及命名空间,单击拓扑图上的组件,进入组件监控详情页面,如图2所示。

    图2 流量监控详情页
    其中,
    • 流量概况:展示了应用详细的流量信息,包含请求总数、错误计数、平均时延、最大时延等。
    • 部署信息:显示了组件内的所有实例状态及信息。
    • 调用链:通过时间维度和组件版本来查看调用情况,支持使用高级搜索中的选项进行精准搜索。使用istio做服务治理时,无需在微服务代码中进行调用链埋点。但微服务代码在接收和发送请求时需要传递调用链相关的Header信息,才能构造成完整的调用链路,详情请参见如何使用Istio调用链埋点。

如何使用Istio调用链埋点

Header信息包括如下内容,更多关于调用链的信息请参见https://istio.io/docs/tasks/telemetry/distributed-tracing/。

  • x-request-id
  • x-b3-traceid
  • x-b3-spanid
  • x-b3-parentspanid
  • x-b3-sampled
  • x-b3-flags
  • x-ot-span-context

下面以一个典型的例子来说明如何在接收和发送请求时,通过修改代码来传递调用链相关Header信息。

  • Python代码示例
    服务接收端在处理请求时,从请求端解析相关Header。在调用后端请求时,传递Trace相关的header。
    def getForwardHeaders(request):
        headers = {}
    
    if 'user' in session:
        headers['end-user'] = session['user']
    
    incoming_headers = ['x-request-id',
        'x-b3-traceid',
        'x-b3-spanid',
        'x-b3-parentspanid',
        'x-b3-sampled',
        'x-b3-flags',
        'x-ot-span-context'
    ]
    
    return headers
    
    
    @ app.route('/productpage')
    def front():
        product_id = 0# TODO: replace
    default value
    headers = getForwardHeaders(request)
    user = session.get('user', '')
    product = getProduct(product_id)
    detailsStatus, details = getProductDetails(product_id, headers)
    reviewsStatus, reviews = getProductReviews(product_id, headers)
    return render_template(
        'productpage.html',
        detailsStatus = detailsStatus,
        reviewsStatus = reviewsStatus,
        product = product,
        details = details,
        reviews = reviews,
        user = user)
  • Java代码示例

    在java Rest接口上除了解析一般业务参数外,需要从header中解析trace相关信息。同样在调用下一个服务时传递该header信息。

    @GET
    @Path("/reviews/{productId}")
    public Response bookReviewsById(@PathParam("productId") int productId,
    @HeaderParam("end-user") String user,
    @HeaderParam("x-request-id") String xreq,
    @HeaderParam("x-b3-traceid") String xtraceid,
    @HeaderParam("x-b3-spanid") String xspanid,
    @HeaderParam("x-b3-parentspanid") String xparentspanid,
    @HeaderParam("x-b3-sampled") String xsampled,
    @HeaderParam("x-b3-flags") String xflags,
    @HeaderParam("x-ot-span-context") String xotspan) {
    	int starsReviewer1 = -1;
    	int starsReviewer2 = -1;
    	if (ratings_enabled) {
    		JsonObject ratingsResponse = getRatings(Integer.toString(productId), user, xreq, xtraceid, xspanid, xparentspanid, xsampled, xflags, xotspan);
    		if (ratingsResponse != null) {
    			if (ratingsResponse.containsKey("ratings")) {
    				JsonObject ratings = ratingsResponse.getJsonObject("ratings");
    				if (ratings.containsKey("Reviewer1")){
    					starsReviewer1 = ratings.getint("Reviewer1");
    				}
    				if (ratings.containsKey("Reviewer2")){
    					starsReviewer2 = ratings.getint("Reviewer2");
    				}
    			}
    		}
    	}
    	String jsonResStr = getJsonResponse(Integer.toString(productId), starsReviewer1, starsReviewer2);
    	return Response.ok().type(MediaType.APPLICATION_JSON).entity(jsonResStr).build();
    }
    }

关闭 APM 1.0 服务对接

为提供更优质、高效的服务体验,APM 1.0 版本即将停止使用。如您当前已对接 APM 1.0 服务,可按以下步骤关闭对接。

约束与限制

  • 仅支持网格版本升级到1.18.7及以上时可关闭对接到 APM 1.0。
  • Istio 1.18 之前版本的应用指标仅支持对接 APM 1.0,1.18及后续版本网格仅支持对接 AOM。

判断是否对接到 APM 1.0

  1. 登录应用服务网格控制台。
  2. 单击服务网格名称,进入服务网格详情页。
  3. 单击左侧导航栏 “网格配置”,选择 “网格扩展” 页签。
  4. 进入“可观测性配置”页面。
  5. 查看“应用指标”或“调用链”的“选择使用服务”是否显示为 APM。若显示为 APM,表示已对接到 APM 1.0。

关闭 APM 1.0 服务

  1. 登录应用服务网格控制台。
  2. 单击服务网格名称,进入服务网格详情页。
  3. 单击左侧导航栏“网格配置”,选择“网格扩展”页签。
  4. 进入“可观测性配置”页面。
  5. 在“应用指标”或“调用链”处,单击“关闭”按钮。
  6. 在弹窗中确认关闭操作。

应用指标和调用链会被同时关闭,单击任一处操作即可。

相关文档