天天看點

第四章、Istio可觀察性-Envoy 通路日志

摘要

Istio 最簡單的日志類型是 Envoy 的通路日志。Envoy 代理列印通路資訊到标準輸出。Envoy 容器的标準輸出能夠通過 kubectl logs 指令列印出來。

實作效果

擷取資料平面(Data Plane)中代理(Envoy)的日志, Istio 架構中代理負責協調和控制微服務之間的所有網絡通信,他們收集和報告所有網格流量的遙測資料,

本示例中以擷取productpage 的代理(Envoy)的日志為例,通路 https://istio.bbx.com/productpage ,觀察通路日志。

第四章、Istio可觀察性-Envoy 通路日志

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
第四章、Istio可觀察性-Envoy 通路日志

擷取日志

  • 擷取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

第四章、Istio可觀察性-Envoy 通路日志
  • 日志格式,詳細資訊請參考官方文檔: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% 接收位元組
%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

繼續閱讀