同事R: 嘿!LAG。有沒有
xxxxCheck
API的記錄?
LAG: 目前應該沒有記錄喔~
同事R: 這個可以記錄嗎?特別是需要保留請求的內容。
LAG: 保留內容?這樣記錄會膨脹很快誒。
同事R: 這個API短期記錄一下,新開發給S部門使用的API這樣比較好debug。
LAG: 恩...應該有辦法。
是不是有這種情況:新開發的API不穩定,發生問題時,不清楚是因為輸入的問題,還是資料處理過程的問題。因此有觀察輸入請求、以及回覆回應內容的需求,以利後續的排查與修復錯誤工作。這個需求等過一段時間穩定了,便不需要在觀察。且特別是商業框架下進行功能開發,有些行為並不容易變更;或者應用對於添加記錄的做法,沒有使用Feature Flag、Log Level等等機制可以彈性調整。類似「可觀測性,用旁車曲線救國」一章做法,同樣可以透過Apache APISIX間接保留輸入與輸出結果記錄。
要做到這樣的結果,可以透過動態路由調整,以及APISIX的Logger相關Plugin實現。以我們使用情況來說,使用了skywalking-logger這個Plugin。
這個Plugin可以設定保留請求的內容和回應的內容,方便未來除錯使用。不過因爲記錄內容通常會使得記錄膨脹,很快就會使用完儲存資源。因此只會指定特定的請求才進行記錄,而不是所有的請求都這麼儲存。
像是只記錄/api/xxxxx/xxxxCheck
端點。可以透過建立新路由,並且給與較高的路由優先序,但使用相同的上游,再為路由配置不同的Plugin來達成。當不需要在這麼記錄的時候,再移除掉該路由即可。效果呈現如下: