如何在 OpenResty Edge 中使用自定義動態指標
今天我將演示 OpenResty Edge 的另一項功能。那就是,使用 Metric SQL 語言來建立全新的動態指標。
動態指標簡介
動態指標允許使用者透過即時編寫類似 SQL 的查詢來建立自定義指標。OpenResty Edge 會自動生成高效率程式碼,以收集和彙總每個閘道器伺服器記憶體中的指標資料。這之後,資料會被報告給 web 控制檯,並實時顯示在漂亮的圖表中。
別擔心。它使用固定大小的記憶體進行流式聚合和統計。我們的最佳化編譯器,將為每個使用者定義的指標生成高效的原生代碼。
為示例應用建立自定義動態指標
讓我們進入 OpenResty Edge 的 Admin Web 控制檯。這是我們控制檯的樣本部署。每個使用者都有自己的本地部署。
我們可以繼續使用之前的示例應用,test-edge.com。
進入應用程式。
點選這個選單項,進入動態指標頁面。
有兩種型別的動態指標。一種叫做自定義動態指標,是由使用者自己定義的。
另一種是由 OpenResty Edge 預定義的標準動態指標。
我們今天著重介紹“自定義動態指標”。標準動態指標會在另一個教程中介紹。
點選這個按鈕來建立一個新的動態指標。這個指標會計算出傳送請求最多的前十個城市。
為這個指標輸入一個名稱:Client Cities。
新增一個描述:請求最多的前十大城市。
指定報告資料的時間間隔。這個間隔是指從閘道器伺服器的記憶體向 Edge 日誌伺服器報告聚合統計資料的時間間隔。之後資料將顯示在 Edge 的 Admin Web 控制檯。為了方便起見,這裡使用 10 秒作為間隔。實際上使用這麼短的報告間隔開銷會相對較高。
我們使用 Edge 產品提供的 Metric SQL 語言。它使用流行的 SQL 語言的語法。
你可以在我們的文件網站上找到完整的使用者手冊。
在這裡有這個語言的詳細描述。從“詞彙結構”,到“運算子和表示式”,和“選擇查詢語句”。
我們輸入這個指標的 Metric SQL 查詢語句。從所有的請求中選擇客戶端城市。按傳送請求的城市進行分組。並對城市進行降序排列。只保留前 10 個城市。
select client_city, count(*) as count
from reqs
group by client_city
order by count desc
limit 10
儲存這個指標。
儲存成功。
測試
新的動態指標不需要單獨的配置釋出就會立即生效。現在來傳送一些請求,看看它是如何工作的。
在終端上,我們登入到德國法蘭克福市的一個遠端伺服器。
用 “curl” 命令列工具傳送一個 HTTP 請求。
curl http://test-edge.com
退出伺服器。
然後我們登入到美國聖何塞市的另一個伺服器。
也傳送一個請求。
curl http://test-edge.com
退出伺服器。
現在登入到英國倫敦的第三臺伺服器上。這一次,我們將傳送四個請求。
傳送第一個請求。
curl http://test-edge.com
我們等待 10 秒,然後傳送第二個和第三個。再過 10 秒後,傳送第四個請求。
檢查一下剛剛傳送的所有請求。可以看到有一個請求來自法蘭克福。
一個請求來自聖何塞。
四個請求來自倫敦。
資料也可以用餅狀圖顯示。
也可以在折線圖中顯示。
這正是我們所期望的。
你可以點選這個按鈕來顯示這個動態指標的 Metric SQL 查詢。
Metric SQL 語句在這裡顯示。
可以使用 “編輯” 按鈕來編輯這個指標。
或者使用 “刪除” 按鈕將其刪除。
如果你認為圖表太小,請點選展開按鈕。圖表會在一個更大的視窗中顯示。
我們可以顯示不同時間間隔的指標,從 1 分鐘到 1 年。
或者直接選擇一個任意的時間區間。
點選關閉按鈕,關閉這個大視窗。
這裡也有時間範圍選項。只是選項比較少。
當啟用自動重新整理時,指標會以我們之前指定的十秒鐘的間隔自動更新。
“清除資料” 按鈕是用來清除所有的歷史資料並重新啟動資料收集的。
基於 openresty.org 真實流量的動態指標
現在我們去看一些基於真實的流量的動態指標。以一個我們公司自己的正在使用 OpenResty Edge 的網站為例。
在搜尋框中輸入 openresty.org。
進入這個應用程式。
進入動態指標頁面。
這裡已經有許多自定義的動態指標了。資料以各種方式顯示,如餅狀圖、柱狀圖和線狀圖。
這個看起來很有趣。它顯示了按客戶 IP 地址分組的所有請求。
點選這個按鈕,看看該指標的 Metric SQL 語句是甚麼樣的。
透過這個指標可以知道我們的網站是否遭遇到了 Denial-of-Service 的攻擊。
來看看這個指標。它顯示了北美地區傳送請求最多的前 10 個國家。
點選檢視 Metric SQL 語句。
下面是圖表。
希望你覺得這些例子很有趣並且對你有所幫助。這就是我今天要講的內容。
關於 OpenResty Edge
OpenResty Edge 是一款專為微服務和分散式流量架構設計的全能型閘道器軟體,由我們自主研發。它集流量管理、私有 CDN 構建、API 閘道器、安全防護等功能於一體,幫助您輕鬆構建、管理和保護現代應用程式。OpenResty Edge 擁有業界領先的效能和可擴充套件性,能夠滿足高併發、高負載場景下的苛刻需求。它支援排程 K8s 等容器應用流量,並可管理海量域名,輕鬆滿足大型網站和複雜應用的需求。
如果你喜歡這個教程,請訂閱這個部落格網站和我們的 YouTube 頻道 或 B 站頻道。謝謝!
關於作者
章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。
章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴, 是 “邊緣計算“、”動態追蹤 “和 “機器程式設計 “的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用動態追蹤技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等,並編寫過 60 多個開源軟體庫。
關注我們
如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:
翻譯
我們提供了英文版原文和中譯版(本文) 。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!