今天我將演示 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 語句。

螢幕截圖

螢幕截圖

下面是圖表。

螢幕截圖

希望你覺得這些例子很有趣並且對你有所幫助。這就是我今天要講的內容。

如果你喜歡這個教程,請訂閱這個部落格網站和我們的 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. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:

我們的微信公眾號

翻譯

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