Istio Observability

理解Istio可观察性

kiali

Istio默认自带了Kiali可视化系统

$ istioctl dashboard kiali

alt

分布式追踪

分布式追踪可以让用户对跨多个分布式服务网格的 1 个请求进行追踪分析。

Istio 利用 Envoy 的分布式追踪功能提供了开箱即用的追踪集成。

原理:Istio利用应用程序传入请求和传出的请求中的请求头信息,proxy将相关span信息发送至后端服务,然后通过span信息将服务间调用信息串联起来

请求头信息列表:

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

在业务应用中增加信息:

@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) {

  if (ratings_enabled) {
    JsonObject ratingsResponse = getRatings(Integer.toString(productId), user, xreq, xtraceid, xspanid, xparentspanid, xsampled, xflags, xotspan);

Istio默认对每条请求都进行采样,可以通过参数values.pilot.traceSampling调整采样率

部署:

istioctl manifest apply --set profile=demo --set values.tracing.enabled=true

打开Jaeger页面:

istioctl dashboard jaeger

Istio默认后端为Jaeger

刷新几次http://localhost:5678/productpage后,可以就可以看到Jaeger中的调用跟踪数据了

alt

Mixer

新版本的Istio默认未启用Mixer,采样更优方案Proxy-wasm替代

打开Mixer:

$ istioctl manifest apply --set profile=demo --set values.prometheus.enabled=true --set values.telemetry.v1.enabled=true --set values.telemetry.v2.enabled=false --set components.citadel.enabled=true --set components.telemetry.enabled=true --set values.tracing.enabled=true

日志

配置Mixer:

$ kubectl apply -f samples/bookinfo/telemetry/log-entry.yaml
  • instances,定义需要采样哪些指标属性
  • handlers,定义指标处理后端系统
  • rules,定义instance和handler的绑定关系
$ istioctl dashboard prometheus

alt

监控

配置Mixer:

$ kubectl apply -f samples/bookinfo/telemetry/metrics.yaml
$ istioctl dashboard grafana

Istio默认提供了系统各个组件的监控看板

Proxy-wasm