隨著業務增長,你的系統可能會變得越來越複雜。對於複雜的系統來說,能夠正確地追蹤請求變得至關重要,而且頗有難度。

Embeded image

OpenResty Edge 可以透過以唯一的 ID 標識請求來降低追蹤請求的難度。這就是我們今天的主題: Request ID。

Embeded image

全域性配置 Request ID

讓我們進入 OpenResty Edge 的 Admin Web 控制檯。這是我們控制檯的樣本部署。每個使用者都有自己的本地部署。

Screenshot

跳轉到全域性配置頁面。在這裡你可以配置是否在所有請求頭新增一個 Request ID。

Screenshot

Screenshot

這個配置項預設是開啟的,這意味著每個請求在代理頭和響應體頭中都會有一個 Req-ID 欄位。

現在我們向 openresty.org 傳送一個請求,看看這個 ID 是如何被使用的。

Screenshot

可以看到在請求頭中有一個 “Req-ID” 欄位。

Screenshot

Request ID 解碼器

現在轉到工具頁面。

Screenshot

進入 Request ID 解碼器頁面。

Screenshot

輸入我們剛才看到的 Request ID。

Screenshot

點選這個按鈕進行解碼。

Screenshot

可以看到下面顯示了與該請求有關的一些詳細資訊。

像應用的域名、

Screenshot

閘道器分割槽、

Screenshot

閘道器叢集、

Screenshot

以及閘道器伺服器。

Screenshot

這裡有兩個按鈕。你可以在 openresty.org 應用的錯誤日誌和 WAF 日誌頁面中搜尋這個 Request ID。

Screenshot

現在我來演示一下要怎麼做。

點選 “Search in Error Logs” 按鈕。

Screenshot

這會將我們帶到錯誤日誌頁面。

Screenshot

看不到有任何日誌顯示,這是因為我們使用的 Request ID 是來自一個正常的請求。該請求並沒有建立任何錯誤日誌。

Screenshot

清除 Request ID 這個篩選項。

Screenshot

你可以看到所有錯誤日誌的詳細資訊。

複製其中一個 Request ID。

Screenshot

把它貼上到搜尋框中。

Screenshot

可以看到錯誤日誌列表經過了篩選,只有與所選 Request ID 相符的錯誤日誌被顯示出來。

Screenshot

這是錯誤日誌頁面。同樣,在被 WAF 攔截的可疑請求頁面,所有請求也都帶有 Request ID 資訊。

進入 WAF 的日誌頁面。

Screenshot

你可以看到所有被 WAF 攔截的請求以及相應的 Request ID。

這裡你也可以使用 Request ID 來過濾請求。

Screenshot

而且你可以直接在列表中解碼 Request ID。

點選一個 Request ID。

Screenshot

Screenshot

點選這個彈窗上的連結將把你帶到相應的頁面。例如,點選一下閘道器伺服器的連結。我們被帶到了閘道器伺服器的頁面上。

Screenshot

這時請求資訊的彈窗依然是開啟的,因為你可能想去其他頁面。

如果你想關閉它,只需點選關閉按鈕。

Screenshot

這是我今天要演示的內容。

如果你喜歡這個教程,請訂閱這個部落格網站和我們的 YouTube 頻道B 站頻道。謝謝!

關於本文和關聯影片

本文和相關聯的影片都是完全由我們的 OpenResty Showman 產品從一個簡單的劇本檔案自動生成的。

關於作者

章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。

章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴, 是 “邊緣計算“、”動態追蹤 “和 “機器程式設計 “的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用動態追蹤技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,並編寫過 60 多個開源軟體庫。

關注我們

如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:

我們的微信公眾號

翻譯

我們提供了英文版原文和中譯版(本文)。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!