日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

自定義數(shù)據(jù)面訪問日志

部署在數(shù)據(jù)平面(即加入網(wǎng)格的Kubernetes集群)的Envoy Proxy可以輸出所有訪問日志。ASM支持自定義Envoy Proxy輸出的訪問日志內(nèi)容。本文介紹如何自定義Envoy Proxy輸出的訪問日志內(nèi)容。

前提條件

步驟一:啟用訪問日志

ASM實例版本為1.17.2.35以下

  1. 登錄ASM控制臺,在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,單擊目標實例名稱,然后在左側(cè)導(dǎo)航欄,選擇網(wǎng)格實例 > 基本信息

  3. 基本信息頁面右上角,單擊功能設(shè)置

  4. 功能設(shè)置更新面板,選中開啟訪問日志并將其打印到容器標準輸出,然后單擊確定

    istio-proxy容器默認輸出包含以下字段的日志。如果關(guān)閉訪問日志,istio-proxy容器將不會產(chǎn)生JSON格式的訪問日志。

    展開查看日志詳情

    
        "authority_for":"%REQ(:AUTHORITY)%",
        "bytes_received":"%BYTES_RECEIVED%",
        "bytes_sent":"%BYTES_SENT%",
        "downstream_local_address":"%DOWNSTREAM_LOCAL_ADDRESS%",
        "downstream_remote_address":"%DOWNSTREAM_REMOTE_ADDRESS%",
        "duration":"%DURATION%",
        "istio_policy_status":"%DYNAMIC_METADATA(istio.mixer:status)%",
        "method":"%REQ(:METHOD)%",
        "path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
        "protocol":"%PROTOCOL%",
        "request_id":"%REQ(X-REQUEST-ID)%",
        "requested_server_name":"%REQUESTED_SERVER_NAME%",
        "response_code":"%RESPONSE_CODE%",
        "response_flags":"%RESPONSE_FLAGS%",
        "route_name":"%ROUTE_NAME%",
        "start_time":"%START_TIME%",
        "trace_id":"%REQ(X-B3-TRACEID)%",
        "upstream_cluster":"%UPSTREAM_CLUSTER%",
        "upstream_host":"%UPSTREAM_HOST%",
        "upstream_local_address":"%UPSTREAM_LOCAL_ADDRESS%",
        "upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
        "upstream_transport_failure_reason":"%UPSTREAM_TRANSPORT_FAILURE_REASON%",
        "user_agent":"%REQ(USER-AGENT)%",
        "x_forwarded_for":"%REQ(X-FORWARDED-FOR)%"

ASM實例版本為1.17.2.35及以上

  1. 登錄ASM控制臺,在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,單擊目標實例名稱,然后在左側(cè)導(dǎo)航欄,選擇可觀測管理中心 > 可觀測配置

  3. 可觀測配置頁面,按需單擊全局命名空間自定義頁簽。

    • 若您選擇命名空間頁簽,請單擊創(chuàng)建,按需選擇命名空間

    • 若您選擇自定義頁簽,請單擊創(chuàng)建,按需選擇命名空間,輸入名稱匹配標簽

  4. 日志設(shè)置區(qū)域,打開啟用日志輸出開關(guān),然后單擊提交

    打開開關(guān)后,服務(wù)網(wǎng)格數(shù)據(jù)平面Sidecar或網(wǎng)關(guān)會將訪問日志輸出至容器標準輸出。ASM還支持日志過濾功能,詳情請參見日志過濾

  5. 在數(shù)據(jù)平面Sidecar容器的標準輸出查看日志。

    下文以使用kubectl查看訪問日志為例進行說明。

    1. 執(zhí)行以下命令,查看Sidecar日志。

      kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1

      展開查看示例輸出

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.29:80",
          "downstream_remote_address":"221.220.XXX.XXX:0",
          "duration":"80",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"default",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"inbound|80||",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"127.0.X.X:55879",
          "upstream_response_time":"79",
          "upstream_service_time":"79",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
    2. 執(zhí)行以下命令,查看入口網(wǎng)關(guān)日志。

      kubectl -n istio-system logs istio-ingressgateway-6cff9b6b58-r**** --tail 1

      展開查看示例輸出

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.63:80",
          "downstream_remote_address":"221.220.XXX.XXX:64284",
          "duration":"81",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"-",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"httpbin",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"outbound|8000||httpbin.default.svc.cluster.local",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"192.168.0.63:36140",
          "upstream_response_time":"81",
          "upstream_service_time":"81",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
  6. (可選)通過容器服務(wù)控制臺查看訪問日志。

    如果您使用阿里云容器服務(wù)集群,還可以通過容器服務(wù)控制臺查看訪問日志。

    1. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群

    2. 集群列表頁面,單擊目標集群名稱,然后在左側(cè)導(dǎo)航欄,選擇工作負載 > 容器組

    3. 容器組頁面,單擊目標Pod名稱,然后在頁面下方單擊日志頁簽,查看訪問日志。

關(guān)于日志的更多信息,請參見可觀測配置啟用控制平面日志采集和日志告警(新版)

步驟二:自定義數(shù)據(jù)面訪問日志內(nèi)容

ASM實例版本為1.17.2.35以下

  1. 登錄ASM控制臺,在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,單擊目標實例名稱,然后在左側(cè)導(dǎo)航欄,選擇網(wǎng)格實例 > 基本信息

  3. 基本信息頁面的配置信息區(qū)域,單擊開啟訪問日志并將其打印到容器標準輸出右側(cè)的自定義訪問日志格式

  4. 自定義訪問日志格式對話框下方,新增自定義訪問日志格式,設(shè)置變量名稱my_custom_key變量值%REQ(end-user)%,然后單擊確認

    本文以獲取Bookinfo示例中HTTP請求的Header字段end-user為例。如下圖所示,自定義訪問日志格式時,您可以選擇ASM提供的可選字段,也可以新增自定義字段。選中目標字段后,將按照自定義的訪問日志格式輸出訪問日志。可選字段

ASM實例版本為1.17.2.35及以上

  1. 登錄ASM控制臺,在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,單擊目標實例名稱,然后在左側(cè)導(dǎo)航欄,選擇可觀測管理中心 > 可觀測配置

  3. 可觀測配置頁面,按需單擊全局命名空間自定義頁簽。

    • 若您選擇命名空間頁簽,請單擊創(chuàng)建,按需選擇命名空間

    • 若您選擇自定義頁簽,請單擊創(chuàng)建,按需選擇命名空間,輸入名稱匹配標簽

  4. 日志設(shè)置區(qū)域,按需選中字段、修改目標字段信息或在最下方日志指標右側(cè)單擊增加.png圖標,新增日志字段,然后單擊提交

    只有打開啟用日志輸出開關(guān),才能自定義日志格式。在日志格式區(qū)域,默認選中的日志字段為默認必選字段,不支持修改。日志字段支持從請求Header、響應(yīng)Header、Envoy內(nèi)置值中取值。

    下文以打印請求中的accept-encoding Header為例,配置變量名稱accept-encoding類型請求屬性變量值Accept-Encoding日志格式.png

  5. 執(zhí)行以下命令,查看服務(wù)網(wǎng)格數(shù)據(jù)平面組件日志。

    kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1|grep accept-encoding --color=auto

    展開查看示例輸出

    {
        "bytes_received":"0",
        "bytes_sent":"9593",
        "downstream_local_address":"192.168.0.29:80",
        "downstream_remote_address":"69.164.XXX.XX:0",
        "duration":"2",
        "istio_policy_status":"-",
        "method":"GET",
        "path":"/",
        "protocol":"HTTP/1.1",
        "request_id":"29939dc9-62be-4ddf-acf6-32cb098d****",
        "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
        "response_code":"200",
        "response_flags":"-",
        "route_name":"default",
        "start_time":"2023-06-30T04:18:19.734Z",
        "trace_id":"-",
        "upstream_cluster":"inbound|80||",
        "upstream_host":"192.168.0.29:80",
        "upstream_local_address":"127.0.X.X:34723",
        "upstream_service_time":"2",
        "upstream_transport_failure_reason":"-",
        "user_agent":"Mozilla/5.0 zgrab/0.x",
        "x_forwarded_for":"69.164.XXX.XX",
        "authority_for":"47.110.XX.XXX",
        "upstream_response_time":"2",
        "accept-encoding":"gzip"
    }

    可以看到步驟4新增的Accept-Encoding Header的值,已被輸出至訪問日志。關(guān)于日志的更多信息,請參見可觀測配置啟用控制平面日志采集和日志告警(新版)

步驟三:查看訪問日志

啟用訪問日志后,發(fā)起請求的Sidecar容器將按照自定義的訪問日志格式輸出訪問日志。

  1. 在瀏覽器地址欄輸入入口網(wǎng)關(guān)地址:productpage,訪問Productpage應(yīng)用。

  2. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群

  3. 集群列表頁面,單擊目標集群名稱,然后在左側(cè)導(dǎo)航欄,選擇工作負載 > 無狀態(tài)

  4. 無狀態(tài)頁面頂部,設(shè)置命名空間default,然后在productpage-v1應(yīng)用右側(cè),單擊操作列下的詳情

  5. 在應(yīng)用詳情頁面,單擊日志頁簽,設(shè)置Containeristio-proxy

    在日志輸出框中可以看到如下日志。日志中包含名為jason的end-user,表明自定義日志內(nèi)容成功。日志

請求耗時相關(guān)字段說明

服務(wù)網(wǎng)格ASM中,“上游(upstream)”表示調(diào)用鏈中請求的接收方,“下游(downstream)”表示請求的發(fā)起方。例如,服務(wù)A向服務(wù)B發(fā)起請求時,服務(wù)A為“下游(downstream)”,服務(wù)B為“上游(upstream)”。

變量名稱

變量值

說明

duration

$DURATION%

  • 對于HTTP請求,該字段的值表示從該請求開始讀取到返回給下游響應(yīng)的最后一個字節(jié)被發(fā)送的時間,即Sidecar或網(wǎng)關(guān)處理一個請求所經(jīng)過的完整時長。

  • 對于TCP請求,該字段表示下游連接的建立期間的總時長。

request_duration

%REQUEST_DURATION%

  • 對于HTTP請求,該字段的值表示從下游讀取整個請求(Header + Body)所消耗的時間。如果這部分耗時較長,您可以按照以下方面進行排查:

    • 網(wǎng)絡(luò)質(zhì)量是否良好,帶寬是否充足。

    • 上游或下游應(yīng)用在同量級I/O下是否存在瓶頸。

  • 對于TCP請求,該字段未實現(xiàn)(在日志中顯示為“-”)。

request_tx_duration

%REQUEST_TX_DURATION%

  • 對于HTTP請求,該字段表示從該請求發(fā)生開始,到其最后一個字節(jié)被發(fā)送至上游所經(jīng)歷的時間。如果這部分耗時較長,您可以按照以下方面進行排查:

    • 網(wǎng)絡(luò)質(zhì)量是否良好,帶寬是否充足。

    • 上游或下游應(yīng)用在同量級I/O下是否存在瓶頸。

  • 對于TCP請求,該字段未實現(xiàn)(在日志中顯示為“-”)。

response_duration

%RESPONSE_DURATION%

  • 對于HTTP請求,該字段表示從該請求發(fā)生開始,到讀取到上游返回的該請求Response的首個字節(jié)所經(jīng)歷的時間。如果這部分耗時較長,而request_tx_duration耗時較短,請檢查上游應(yīng)用是否存在性能瓶頸。

  • 對于TCP請求,該字段未實現(xiàn)(在日志中顯示為“-”)。

response_tx_duration

%RESPONSE_TX_DURATION%

  • 對于HTTP請求,該字段表示從讀取到上游Response的第一個字節(jié)開始,到最后一個字節(jié)被發(fā)送至下游所經(jīng)歷的時間。如果這部分耗時較長,您可以按照以下方面進行排查:

    • 網(wǎng)絡(luò)質(zhì)量是否良好,帶寬是否充足。

    • 上游或下游應(yīng)用在同量級I/O下是否存在瓶頸。

  • 對于TCP請求,該字段未實現(xiàn)(在日志中顯示為“-”)。

upstream_service_time(sidecar)

%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%

在Sidecar訪問日志或網(wǎng)關(guān)日志中,該字段表示上游的處理時間及與上游進行網(wǎng)絡(luò)通信消耗的時間。若該時間較長,請檢查:

  • 上游應(yīng)用的處理性能是否符合預(yù)期。

  • 與上游通信的網(wǎng)絡(luò)延遲、帶寬是否符合預(yù)期。

upstream_response_time(gateway)

說明

對于帶有Body(Content-Length > 0)的HTTP請求,Envoy是邊接收邊發(fā)給上游(而非全部接受后發(fā)送)。如果下游的讀取速度緩慢,將會增加上游的讀取時間,以及上游發(fā)送給它的上游的時間(上游為邊讀邊發(fā)送的方式)。

相關(guān)操作

您還可以使用日志服務(wù)采集數(shù)據(jù)平面的AccessLog。具體操作,請參見生成和采集ASM網(wǎng)關(guān)訪問日志