API 網關日誌的價值,你瞭解多少?

語言: CN / TW / HK

本文介紹了 API 網關日誌的價值,並以知名網關 Apache APISIX 為例,展示如何集成 API 網關日誌。

作者錢勇,API7.ai 技術工程師,Apache APISIX Committer。

原文鏈接

網關日誌的價值

在數字化時代,軟件架構隨着業務成長而變得越來越複雜,這給故障的發現和排查都帶來了非常大的挑戰,進一步倒逼軟件重視自身的可觀測性能力。 而日誌被稱為可觀測性的三大支柱之一,它可以幫助系統管理員和開發人員瞭解系統的運行狀態,以便能夠及時發現並解決問題。 此外,日誌還可以用於數據挖掘、審計和安全監控等方向,以確保系統的合規性和安全性。

而 API 網關是在應用程序與外部世界之間構建的一道關口,它可以幫助組織更好地管理和監控 API 調用,其中之一重要的功能就是對於 API 調用日誌的記錄。

API Gateway Log

下面將會從兩個角度來分析 API 網關日誌的價值。

運維價值

無論是傳統系統運維,還是現代網站可靠性工程師(SRE),對於保障系統穩定性這個大目標而言,如何發現故障永遠是排在最高優先級的任務,因為對於任何一個大型的在線業務,每一秒的故障時間都可能會帶來巨大的業務損失和用户體驗傷害。

而 API 網關處於整個系統的最前端,它可以扮演一個“哨兵”的角色,讓我們從它的訪問日誌中提取非常多對於運維體系至關重要的指標數據:

  • 通過上、下游狀態碼分析,監控網站整體可用性和具體上游服務的可用性;
  • 通過訪問日誌整體統計,監控網站流量,及時發現 DDoS 一類的攻擊;
  • 流量的趨勢分析可以作為業務系統擴縮容的參考依據;
  • 請求耗時統計,為業務系統提供接口級別的性能報告,作為業務系統性能優化的數據參考。

以上都是一些在業界被廣泛採用的 API 網關日誌的最佳實踐,在很多企業的運維體系中落地。

業務價值

與運維價值被廣泛認可相比,網關日誌的業務價值往往是被人們所忽視的。 例如在用户行為分析領域,在程序中使用編碼的方式進行埋點上報是最常見的數據收集方式,而對於一套設計良好的 API 來説,網關日誌是可以天然支持此類需求的。我們可以:

  • 通過分析客户端 IP,統計流量的地理位置分佈;
  • 通過分析 HTTP Referer,瞭解用户進入各個頁面的來源;
  • 對於重點 API 的聚合統計,可以直接得到關鍵業務指標。例:統計用户註冊、商品下單等 API 的成功調用,可以直接得到指定時間段內的新用户、新訂單的數量指標。

當然網關日誌顯然不如程序埋點靈活,無法實現自定義數據收集需求,但其中藴藏的業務價值足以滿足簡單的數據挖掘需求。

Apache APISIX 是一個動態、實時、高性能的雲原生 API 網關,提供了負載均衡、動態上游、灰度發佈、服務熔斷、身份認證、可觀測性等豐富的流量管理功能。 它的很多能力是通過可插拔的插件形式提供,這其中就包括十數個日誌插件。下面將會以 APISIX 中典型的日誌插件為例,介紹如何將網關日誌與日誌分析系統打通,挖掘出更多的價值。

APISIX 典型日誌插件介紹

elasticsearch-logger

Elastic Search And Apache APISIX

ElasticSearch 是一個分佈式開源搜索和分析引擎,旨在處理大量數據,在日誌分析領域享有極高知名度。 它提供的配套數據面板 Kibana,可以非常輕鬆的定製出各種統計圖表,滿足組織對於可視化查詢分析的需求。

實際應用時,由於大多數傳統軟件的日誌都是保存到本地文件,所以 ElasticSearch 生態中有一個項目叫 Filebeat,用於監控本地機器上的日誌文件,並將增量的日誌發送給 ElasticSearch 服務器。而 APISIX 提供的 elasticsearch-logger 插件,可以將 APISIX 的訪問日誌直接發送 ElasticSearch 服務器,這有幾點好處:

  • 無需部署 Filebeat 組件,處理鏈路更短,減少計算資源消耗;
  • 日誌不落盤,不用考慮日誌文件的磁盤佔用,因為訪問日誌的量級可能非常大,如果沒有處理好文件的輪轉,很容易將機器的磁盤打滿,導致故障。此外,與磁盤進行交互也會一定程度上降低網關的性能。

kafka-logger

網關訪問日誌有一個很明顯的特點:日誌的數據量與業務的請求量成正比,請求越多,日誌越多。對於大多數在線業務,請求量會存在明顯的週期性,比如外賣平台的流量高峯期會出現在餐點附近,而視頻網站的高峯期則會出現在下班時間段。 這對於日誌存儲系統的挑戰是巨大的,如何保證系統在流量高峯期依然可以正常工作,是每一個 ElasticSearch 管理員的必修課。

Apache APISIX And Kafka

消息隊列是處理“削峯填谷”場景的不二法器,在網關與存儲系統之間引入消息隊列,提供日誌緩衝區,將會極大的降低存儲系統在流量高峯期的壓力。 為此 APISIX 提供了 kafka-logger ,它可以將訪問日誌投遞到 Kafka 服務器,避免對日誌存儲產生直接的衝擊。

loggly

近幾年 SaaS 的概念逐漸深入人心,它憑藉極低的接入門檻和按需付費的計價模型被眾多中小型企業所青睞,在日誌分析領域也湧現了諸多 SaaS 產品,Loggly 憑藉着豐富的日誌來源和分析手段成為其中的佼佼者。 在此背景下,活躍的 APISIX 社區開發了開箱即用的 loggly 插件,只需要配置好憑證信息,就可以將 APISIX 訪問日誌直接發送給 Loggly 服務,十分方便。

類似 loggly 插件,APISIX 還提供了 google-cloud-loggingsls-loggertencent-cloud-cls 插件,可以輕鬆集成主流雲廠商的日誌服務。

Apache APISIX Log SaaS

error-log-logger

上面介紹的插件都是用於收集訪問日誌,在 APISIX 中還存在另外一類日誌:錯誤日誌(error.log),它對於排查網關自身故障非常關鍵,所以 APISIX 提供了 error-log-logger 插件 ,用於將錯誤日誌發送到遠端服務器進行存儲分析。實際使用時,可以結合 APISIX 的日誌等級配置,讓網關打印出更多 debug 或者 info 級別的日誌,這兩個級別會包含更加詳細的網關運行狀態日誌,利用這些日誌通常可以定位出絕大多數問題。

總結

網關日誌藴藏着巨大的價值,從 Apache APISIX 項目豐富的日誌插件中我們也可以看出,社區中的企業用户對於網關日誌價值的肯定,而這些插件也進一步降低了新用户搭建日誌系統的成本。 此外,APISIX 還有另外兩類可觀測性插件:metricstracing,它們配合上日誌插件將會進一步提升網關的可觀測性,助力系統穩定性建設。

關於 API7.ai 與 APISIX

API7.ai 是一家提供 API 處理和分析的開源基礎軟件公司,於 2019 年開源了新一代雲原生 API 網關 -- APISIX 並捐贈給 Apache 軟件基金會。此後,API7.ai 一直積極投入支持 Apache APISIX 的開發、維護和社區運營。與千萬貢獻者、使用者、支持者一起做出世界級的開源項目,是 API7.ai 努力的目標。