摘要 Istio 最简单的日志类型是 Envoy 的访问日志。Envoy 代理打印访问信息到标准输出。Envoy 容器的标准输出能够通过 kubectl logs 命令打印出来。 实现效果 获取数据平面( Data Plane )中代理(Envoy)的日志, Istio 架构中代理负责协调和控制微服务之间的所有网络通信,他们收集和报告所有网格流量的遥测数据, 本示例中以获取productpage 的代理(Envoy)的日志为例,访问 https://istio.bbx.com/productpage ,观察访问日志。 Istio 架构图前置条件Kubernetes 集群 正确部署bookinfo 示例,本示例中配置通过域名访问 正确安装istio ,可以注入 sidecar 开启Envoy 的访问日志Istio 提供了多种方式,推荐使用 遥测API 进行 使用遥测API 开启访问日志 ---关于Telemetry 的详细信息 请访问Istio官网:https://istio.io/latest/docs/reference/config/telemetry/ # mesh-default.yaml apiVersion: telemetry.istio.io/v1alpha1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: accessLogging: - providers: - name: envoy kubectl apply -f mesh-default.yaml kubectl get telemetry -n istio-system访问服务从浏览器请求 https://istio.bbx.com/productpage 获取日志获取productpage 代理的日志 kubectl logs -f -l app=productpage -c istio-proxy # -f: 动态查看日志 # -l: 指定查看的label#如果没有指定 accessLogFormat ,使用的是默认的日志格式 #从productpage 发起访问 /details 的日志 --出方向 [2022-10-18T02:54:38.826Z] "GET /details/0 HTTP/1.1" 200 - via_upstream - "-" 0 178 2 2 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42" "ae498530-0993-9ee7-9dcc-ce300f5fb14a" "details:9080" "10.233.70.92:9080" outbound|9080||details.default.svc.cluster.local 10.233.118.37:49836 11.233.43.194:9080 10.233.118.37:51802 - default #从productpage 发起访问 /reviews 的日志 --出方向 [2022-10-18T02:54:38.832Z] "GET /reviews/0 HTTP/1.1" 200 - via_upstream - "-" 0 375 17 16 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42" "ae498530-0993-9ee7-9dcc-ce300f5fb14a" "reviews:9080" "10.233.108.99:9080" outbound|9080||reviews.default.svc.cluster.local 10.233.118.37:58706 11.233.6.43:9080 10.233.118.37:56388 - default #从浏览器访问 productpage 的日志 ---入方向 [2022-10-18T02:54:38.821Z] "GET /productpage HTTP/1.1" 200 - via_upstream - "-" 0 5299 31 30 "11.11.11.11,192.168.0.164" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42" "ae498530-0993-9ee7-9dcc-ce300f5fb14a" "istio.bbx.com" "10.233.118.37:9080" inbound|9080|| 127.0.0.6:42287 10.233.118.37:9080 192.168.0.164:0 outbound_.9080_._.productpage.default.svc.cluster.local default 日志格式,详细信息请参考官方文档:https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#format-rules Log operator access log in sleep 示例 [%START_TIME%] 开始时间 [2022-10-18T02:54:38.821Z] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" 方法路径协议 "GET /productpage HTTP/1.1" %RESPONSE_CODE% 响应码 200
%RESPONSE_FLAGS% 响应标志 - %RESPONSE_CODE_DETAILS% via_upstream %CONNECTION_TERMINATION_DETAILS% - "%UPSTREAM_TRANSPORT_FAILURE_REASON%" "-" %BYTES_RECEIVED% 接收字节 0
%BYTES_SENT% 发送字节 5299
%DURATION% 31
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% 30
"%REQ(X-FORWARDED-FOR)%" "11.11.11.11,192.168.0.164" "%REQ(USER-AGENT)%" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42" "%REQ(X-REQUEST-ID)%" 请求ID "ae498530-0993-9ee7-9dcc-ce300f5fb14a" "%REQ(:AUTHORITY)%" "istio.bbx.com" "%UPSTREAM_HOST%" 上游主机 "10.233.118.37:9080" %UPSTREAM_CLUSTER% inbound|9080|| %UPSTREAM_LOCAL_ADDRESS% 上游地址 127.0.0.6:42287 %DOWNSTREAM_LOCAL_ADDRESS% 下游本地地址 10.233.118.37:9080 %DOWNSTREAM_REMOTE_ADDRESS% 下游远端地址 192.168.0.164:0 %REQUESTED_SERVER_NAME% 请求服务名称 outbound_.9080_._.productpage.default.svc.cluster.local %ROUTE_NAME% default