我有以下過濾器:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: proper-filter-name-here
namespace: istio-system
spec:
workloadSelector:
labels:
app: istio-ingressgateway
configPatches:
- applyTo: NETWORK_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: "envoy.http_connection_manager"
patch:
operation: INSERT_BEFORE
value:
name: envoy.lua
typed_config:
"@type": "type.googleapis.com/envoy.config.filter.http.lua.v2.Lua"
inlineCode: |
function envoy_on_request(request_handle)
request_handle:logDebug("Hello World!")
end
我正在檢查網關的日志,但看起來沒有應用過濾器。如何除錯 EnvoyFilter?我在哪里可以看到每個請求應用了哪些過濾器?
uj5u.com熱心網友回復:
這個主題在檔案中有很好的描述:
最簡單的 Istio 日志記錄是Envoy 的訪問日志記錄。Envoy 代理將訪問資訊列印到其標準輸出。然后可以通過
kubectl logs命令列印 Envoy 容器的標準輸出。
你問過:
我在哪里可以看到每個請求應用了哪些過濾器?
基于github上的這個問題:
沒有通用機制。
因此,如果您想查看應用于每個請求的過濾器,則必須創建自定義解決方案。
但是,沒有任何問題,您可以根據檔案中的此片段獲取有關每個請求的日志:
如果您使用
IstioOperatorCR 安裝 Istio,請將以下欄位添加到您的配置中:
spec:
meshConfig:
accessLogFile: /dev/stdout
否則,將等效設定添加到原始
istioctl install命令中,例如:
istioctl install <flags-you-used-to-install-Istio> --set meshConfig.accessLogFile=/dev/stdout
您還可以通過設定
accessLogEncoding為JSON或 來 在 JSON 和文本之間進行選擇TEXT。您可能還想 通過編輯來自定義訪問日志 的 格式accessLogFormat。有關所有這三個設定的更多資訊,請參閱 全域網格選項:
meshConfig.accessLogFilemeshConfig.accessLogEncodingmeshConfig.accessLogFormat
您還可以更改訪問日志格式并從鏈接的說明中測驗訪問日志。
另見(編輯):
- 如何除錯您的 Istio 網路配置:
- EnvoyFilters 將顯示您告訴 Istio 放置它們的位置。通常,一個錯誤的 EnvoyFilter 將表現為 Envoy 拒絕配置(即不在上面的 SYNCED 狀態),您需要檢查 Istiod(Pilot)日志以獲取 Envoy 拒絕配置的錯誤。
- 如果配置根本沒有出現在 Envoy 中——Envoy 沒有確認它,或者它是一個 EnvoyFilter 配置——配置很可能是無效的(Istio 無法在語法上驗證 EnvoyFilter 內的配置)或位于錯誤的位置特使的配置。
- 除錯 Envoy 和 Istiod
- 使用 EnvoyFilters 除錯請求
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/321999.html
上一篇:遇到PHP錯誤,自己除錯不了
