API 閘道器日誌的價值,你瞭解多少?
本文介紹了 API 閘道器日誌的價值,並以知名閘道器 Apache APISIX 為例,展示如何整合 API 閘道器日誌。
作者錢勇,API7.ai 技術工程師,Apache APISIX Committer。
閘道器日誌的價值
在數字化時代,軟體架構隨著業務成長而變得越來越複雜,這給故障的發現和排查都帶來了非常大的挑戰,進一步倒逼軟體重視自身的可觀測效能力。 而日誌被稱為可觀測性的三大支柱之一,它可以幫助系統管理員和開發人員瞭解系統的執行狀態,以便能夠及時發現並解決問題。 此外,日誌還可以用於資料探勘、審計和安全監控等方向,以確保系統的合規性和安全性。
而 API 閘道器是在應用程式與外部世界之間構建的一道關口,它可以幫助組織更好地管理和監控 API 呼叫,其中之一重要的功能就是對於 API 呼叫日誌的記錄。
下面將會從兩個角度來分析 API 閘道器日誌的價值。
運維價值
無論是傳統系統運維,還是現代網站可靠性工程師(SRE),對於保障系統穩定性這個大目標而言,如何發現故障永遠是排在最高優先順序的任務,因為對於任何一個大型的線上業務,每一秒的故障時間都可能會帶來巨大的業務損失和使用者體驗傷害。
而 API 閘道器處於整個系統的最前端,它可以扮演一個“哨兵”的角色,讓我們從它的訪問日誌中提取非常多對於運維體系至關重要的指標資料:
- 通過上、下游狀態碼分析,監控網站整體可用性和具體上游服務的可用性;
- 通過訪問日誌整體統計,監控網站流量,及時發現 DDoS 一類的攻擊;
- 流量的趨勢分析可以作為業務系統擴縮容的參考依據;
- 請求耗時統計,為業務系統提供介面級別的效能報告,作為業務系統性能優化的資料參考。
以上都是一些在業界被廣泛採用的 API 閘道器日誌的最佳實踐,在很多企業的運維體系中落地。
業務價值
與運維價值被廣泛認可相比,閘道器日誌的業務價值往往是被人們所忽視的。 例如在使用者行為分析領域,在程式中使用編碼的方式進行埋點上報是最常見的資料收集方式,而對於一套設計良好的 API 來說,閘道器日誌是可以天然支援此類需求的。我們可以:
- 通過分析客戶端 IP,統計流量的地理位置分佈;
- 通過分析 HTTP Referer,瞭解使用者進入各個頁面的來源;
- 對於重點 API 的聚合統計,可以直接得到關鍵業務指標。例:統計使用者註冊、商品下單等 API 的成功呼叫,可以直接得到指定時間段內的新使用者、新訂單的數量指標。
當然閘道器日誌顯然不如程式埋點靈活,無法實現自定義資料收集需求,但其中蘊藏的業務價值足以滿足簡單的資料探勘需求。
Apache APISIX 是一個動態、實時、高效能的雲原生 API 閘道器,提供了負載均衡、動態上游、灰度釋出、服務熔斷、身份認證、可觀測性等豐富的流量管理功能。 它的很多能力是通過可插拔的外掛形式提供,這其中就包括十數個日誌外掛。下面將會以 APISIX 中典型的日誌外掛為例,介紹如何將閘道器日誌與日誌分析系統打通,挖掘出更多的價值。
APISIX 典型日誌外掛介紹
elasticsearch-logger
ElasticSearch 是一個分散式開源搜尋和分析引擎,旨在處理大量資料,在日誌分析領域享有極高知名度。 它提供的配套資料面板 Kibana,可以非常輕鬆的定製出各種統計圖表,滿足組織對於視覺化查詢分析的需求。
實際應用時,由於大多數傳統軟體的日誌都是儲存到本地檔案,所以 ElasticSearch 生態中有一個專案叫 Filebeat,用於監控本地機器上的日誌檔案,並將增量的日誌傳送給 ElasticSearch 伺服器。而 APISIX 提供的 elasticsearch-logger
外掛,可以將 APISIX 的訪問日誌直接傳送 ElasticSearch 伺服器,這有幾點好處:
- 無需部署 Filebeat 元件,處理鏈路更短,減少計算資源消耗;
- 日誌不落盤,不用考慮日誌檔案的磁碟佔用,因為訪問日誌的量級可能非常大,如果沒有處理好檔案的輪轉,很容易將機器的磁碟打滿,導致故障。此外,與磁碟進行互動也會一定程度上降低閘道器的效能。
kafka-logger
閘道器訪問日誌有一個很明顯的特點:日誌的資料量與業務的請求量成正比,請求越多,日誌越多。對於大多數線上業務,請求量會存在明顯的週期性,比如外賣平臺的流量高峰期會出現在餐點附近,而視訊網站的高峰期則會出現在下班時間段。 這對於日誌儲存系統的挑戰是巨大的,如何保證系統在流量高峰期依然可以正常工作,是每一個 ElasticSearch 管理員的必修課。
訊息佇列是處理“削峰填谷”場景的不二法器,在閘道器與儲存系統之間引入訊息佇列,提供日誌緩衝區,將會極大的降低儲存系統在流量高峰期的壓力。 為此 APISIX 提供了 kafka-logger
,它可以將訪問日誌投遞到 Kafka 伺服器,避免對日誌儲存產生直接的衝擊。
loggly
近幾年 SaaS 的概念逐漸深入人心,它憑藉極低的接入門檻和按需付費的計價模型被眾多中小型企業所青睞,在日誌分析領域也湧現了諸多 SaaS 產品,Loggly 憑藉著豐富的日誌來源和分析手段成為其中的佼佼者。 在此背景下,活躍的 APISIX 社群開發了開箱即用的 loggly
外掛,只需要配置好憑證資訊,就可以將 APISIX 訪問日誌直接傳送給 Loggly 服務,十分方便。
類似 loggly
外掛,APISIX 還提供了 google-cloud-logging
、sls-logger
、tencent-cloud-cls
外掛,可以輕鬆整合主流雲廠商的日誌服務。
error-log-logger
上面介紹的外掛都是用於收集訪問日誌,在 APISIX 中還存在另外一類日誌:錯誤日誌(error.log),它對於排查閘道器自身故障非常關鍵,所以 APISIX 提供了 error-log-logger
外掛 ,用於將錯誤日誌傳送到遠端伺服器進行儲存分析。實際使用時,可以結合 APISIX 的日誌等級配置,讓閘道器打印出更多 debug 或者 info 級別的日誌,這兩個級別會包含更加詳細的閘道器執行狀態日誌,利用這些日誌通常可以定位出絕大多數問題。
總結
閘道器日誌蘊藏著巨大的價值,從 Apache APISIX 專案豐富的日誌外掛中我們也可以看出,社群中的企業使用者對於閘道器日誌價值的肯定,而這些外掛也進一步降低了新使用者搭建日誌系統的成本。 此外,APISIX 還有另外兩類可觀測性外掛:metrics
、tracing
,它們配合上日誌外掛將會進一步提升閘道器的可觀測性,助力系統穩定性建設。
關於 API7.ai 與 APISIX
API7.ai 是一家提供 API 處理和分析的開源基礎軟體公司,於 2019 年開源了新一代雲原生 API 閘道器 -- APISIX 並捐贈給 Apache 軟體基金會。此後,API7.ai 一直積極投入支援 Apache APISIX 的開發、維護和社群運營。與千萬貢獻者、使用者、支持者一起做出世界級的開源專案,是 API7.ai 努力的目標。
- 什麼是 LuaJIT?為什麼 Apache APISIX 選擇了 LuaJIT?
- 為什麼 APISIX Ingress 是比 Emissary-ingress 更好的選擇?
- 無需二次開發,SOAP-to-REST 簡化企業使用者的業務遷移和整合
- API 閘道器日誌的價值,你瞭解多少?
- API Gateway vs Load Balancer:選擇適合你的網路流量管理元件
- 從 1 秒到 10 毫秒!在 APISIX 中減少 Prometheus 請求阻塞
- 微服務為什麼要用到 API 閘道器?
- 備戰一年半,我們讓最火的開源閘道器上了雲
- APISIX 是怎麼保護使用者的敏感資料不被洩露的?
- 如何使用 Kubernetes 實現應用程式的彈性伸縮
- 詳解 APISIX Lua 動態除錯外掛 inspect
- 藉助 APISIX Ingress,實現與註冊中心的無縫整合
- 多雲和混合雲場景下的 API 管理:挑戰與選擇
- 從 HTTP 到 gRPC:APISIX 中 etcd 操作的遷移之路
- 關於 OAuth 你又瞭解哪些?