據(jù) Akamai 稱,83% 的網(wǎng)絡(luò)流量通過 API砖第。微服務(wù)抹估、服務(wù)器和客戶端不斷通信以交換信息 [1]。即使您進行 Google 搜索以訪問本文净响,也涉及到您的瀏覽器客戶端調(diào)用 Google API少欺。鑒于 API 控制著互聯(lián)網(wǎng),因此企業(yè)嚴重依賴它們馋贤。API 健康狀況與業(yè)務(wù)繁榮直接成正比狈茉。
譯自The Ultimate Guide to API Monitoring in 2024 - Metrics, Tools, and Proven Practices | SigNoz,作者 Harish R SigNoz Community掸掸。
本文涵蓋了有關(guān) API 監(jiān)控的所有內(nèi)容,因此您的 API 基礎(chǔ)設(shè)施的健康狀況始終處于受控狀態(tài)蹭秋。我們還將介紹一些用于監(jiān)控 API 健康狀況的重要指標扰付、可用于 API 監(jiān)控的頂級工具、最佳實踐和未來趨勢仁讨。
讓我們深入了解一下羽莺。
什么是 API?
在 JavaScript 庫發(fā)展之前洞豁,網(wǎng)頁是使用服務(wù)器端渲染來呈現(xiàn)的盐固。當客戶端發(fā)出請求時,服務(wù)器會將一個完全水合的 HTML 頁面發(fā)送回客戶端丈挟。完全水合的 HTML 指最終在瀏覽器中看到的 HTML 數(shù)據(jù)刁卜,使用來自數(shù)據(jù)庫的相關(guān)信息填充。在此方法中曙咽,客戶端和服務(wù)器緊密耦合蛔趴。
JavaScript 庫發(fā)展之前的網(wǎng)頁呈現(xiàn)方式
然后我們有了最近流行的客戶端渲染±欤客戶端和服務(wù)器彼此獨立孝情。瀏覽器首先獲取基本的 HTML 和 JavaScript 塊。稍后洒嗤,客戶端向服務(wù)器發(fā)出“API 調(diào)用”以獲取數(shù)據(jù)箫荡、處理數(shù)據(jù),然后呈現(xiàn) UI渔隶。
使用 API 調(diào)用呈現(xiàn)網(wǎng)頁的方式
現(xiàn)在人們能夠設(shè)想 API 在請求生命周期中的位置羔挡。
應(yīng)用程序編程接口。正如首字母縮寫詞所說的那樣派撕,它是應(yīng)用程序提供的接口婉弹,其他應(yīng)用程序可以與之集成。例如终吼,Google 的后端服務(wù)器公開了 Web 客戶端可以與之集成的 API镀赌。
了解 API 監(jiān)控
API 監(jiān)控是持續(xù)觀察和分析應(yīng)用程序編程接口 (API) 的性能、可用性和安全性以確保其正確有效運行的過程际跪。它涉及跟蹤各種指標商佛、日志和實時數(shù)據(jù)喉钢,以及時識別和解決問題,從而保持最佳 API 健康狀況并防止?jié)撛谕{或故障良姆。
讓我們了解 API 監(jiān)控的不同方面肠虽。
監(jiān)控可用性
確保 API 的可用性意味著檢查它是否可操作、能夠接收請求并提供正確的響應(yīng)玛追∷翱危可用性指標決定了 API 的健康狀況。監(jiān)控 API 所依賴的外部資源至關(guān)重要痊剖。
提高性能
性能監(jiān)控側(cè)重于 API 對請求的響應(yīng)程度韩玩,尤其是在流量高峰期。它不僅關(guān)乎速度陆馁,還關(guān)乎確保 API 能夠在不影響服務(wù)質(zhì)量的情況下處理負載找颓。
維護安全性
沒有安全性的健康且高性能的 API 毫無用處。API 監(jiān)控工具可以實時跟蹤和分析 API 請求和響應(yīng)叮贩。通過監(jiān)控異常模式或意外行為(例如流量突然增加或異常 API 調(diào)用)击狮,組織可以快速檢測到潛在的安全威脅或攻擊,例如DDoS攻擊或注入攻擊益老。
API 監(jiān)控中的關(guān)鍵信號
我們設(shè)置了適當?shù)闹笜吮肱睿瑤椭覀兏鶕?jù)每個標準直觀地了解 API 的執(zhí)行情況。公司通常在相關(guān)指標上設(shè)置警報杨箭,以檢測任何意外行為寞焙。對于調(diào)試,日志和跟蹤非常有幫助互婿。
指標
指標是衡量 API 性能和健康狀況各個方面的定量數(shù)據(jù)捣郊。它們作為關(guān)鍵指標,提供對 API 的效率慈参、可用性和安全性的見解呛牲。通過分析這些指標,公司可以衡量其 API 的整體性能驮配,并做出明智的決策以增強其功能娘扩。
日志
日志是在 API 執(zhí)行期間記錄的事件、消息或數(shù)據(jù)點壮锻。它涉及捕獲有關(guān) API 的相關(guān)信息琐旁,例如狀態(tài)、更新猜绣、錯誤和警告灰殴。API 開發(fā)人員在調(diào)試任何應(yīng)用程序錯誤時會發(fā)現(xiàn)它很有用。即使是基礎(chǔ)設(shè)施團隊也會使用日志來診斷任何事件掰邢。
跟蹤
跟蹤是一種技術(shù)牺陶,它允許我們跟蹤每個請求或事務(wù)在分布式系統(tǒng)或復雜軟件應(yīng)用程序(可能由相互連接的微服務(wù)組成)中移動時的旅程伟阔。這涉及捕獲有關(guān)各個請求的詳細數(shù)據(jù),因為它們遍歷系統(tǒng)內(nèi)的各種組件或服務(wù)掰伸。通過這樣做皱炉,跟蹤提供了對請求采取的路徑及其時間的寶貴見解,使開發(fā)人員能夠掌握系統(tǒng)的不同元素如何相互交互狮鸭。這種可見性有助于查明可能出現(xiàn)的性能瓶頸或問題合搅。跟蹤在采用微服務(wù)或具有多層的架構(gòu)中特別有益,因為它促進了跨不同系統(tǒng)組件的全面跟蹤和事件關(guān)聯(lián)歧蕉。
警報
警報是設(shè)置滿足條件的標準的過程历筝,在此條件下執(zhí)行特定操作。例如廊谓,一旦 CPU 使用率超過 80%,就可以設(shè)置電子郵件操作麻削。由于這最終可能導致 100% 和整個系統(tǒng)故障蒸痹,因此事先了解它可以讓工程團隊有機會分析和防止故障。
通過自動警報呛哟、使用指標叠荠、日志和跟蹤進行更快的調(diào)試,您可以設(shè)置高效的 API 監(jiān)控扫责。在單個視圖中擁有所有這些信息在防止系統(tǒng)故障榛鼎、檢測擴展問題或處理任何奇怪模式時會提供很大幫助。
為什么監(jiān)控 API 至關(guān)重要鳖孤?
通過為不同的團隊設(shè)置 API 監(jiān)控來跟蹤對他們最有用的指標者娱,可以收集大量見解∷沾В可用性和性能指標幫助開發(fā)團隊評估瓶頸并構(gòu)建彈性軟件黄鳍。資源利用率、DevOps 和管理團隊的計費警報平匈,以便他們可以采取適當?shù)拇胧┛蚬怠PS、Ingress 和 Egress 帶寬指標允許安全團隊在發(fā)現(xiàn)可疑情況時迅速采取保護措施增炭。
以下是 API 監(jiān)控至關(guān)重要的幾個原因:
- 對于大規(guī)模系統(tǒng)來說忍燥,持續(xù)監(jiān)控至關(guān)重要,因為服務(wù)請求中的任何故障都會導致業(yè)務(wù)損失隙姿。聲譽岌岌可危梅垄,服務(wù)故障可能會使其癱瘓。
- 通過持續(xù)監(jiān)控和警報孟辑,甚至可以在問題出現(xiàn)之前更好地防止故障哎甲。
- 持續(xù)監(jiān)控 API 可確保較低的故障率蔫敲,從而確保客戶保留炭玫∧魏伲可靠的服務(wù)有機會通過口碑傳播。
- 在調(diào)試服務(wù)故障時吞加,監(jiān)控 API 也很有幫助裙犹。借助日志、跟蹤和指標衔憨,可以快速有效地執(zhí)行根本原因分析 (RCA)叶圃。
- 產(chǎn)品經(jīng)理負責制定 API 功能路線圖。通過分析趨勢和模式践图,他們可以就資源分配掺冠、功能優(yōu)先級和產(chǎn)品策略做出數(shù)據(jù)驅(qū)動的決策。
- 監(jiān)控確保 API 指標與關(guān)鍵績效指標 (KPI) 緊密相連码党,將技術(shù)成就建立在業(yè)務(wù)現(xiàn)實之上并推動組織成功德崭。
- 采用指標(如 API 使用情況、唯一 API 消費者)對增長/業(yè)務(wù)團隊很有用揖盘。這將幫助他們專注于產(chǎn)品收入眉厨、采用和客戶成功。
API 監(jiān)控的一些關(guān)鍵指標
建立一個明確定義和連接 API 指標與關(guān)鍵績效指標 (KPI) 的框架是確保 API 策略成功最重要的步驟之一兽狭。
因此憾股,每個組織都需要確定 API 策略,并在設(shè)定的時間范圍內(nèi)將其指標與該目標保持一致箕慧。每個團隊都會跟蹤對他們最重要的指標服球。
從廣義上講,API 指標有三種類型:
- 運營指標- 純粹基于 API 的穩(wěn)定性颠焦、可靠性和性能有咨。
- 采用指標- 數(shù)據(jù)點說明最終用戶采用 API 的程度。
- 產(chǎn)品指標- 根據(jù)業(yè)務(wù)目標將 API 鏈接到業(yè)務(wù) KPI蒸健。
運營指標
以下是 API 監(jiān)控的一些重要運營指標:
- 正常運行時間:這是決定服務(wù)可用性的最重要的指標座享。它通常與服務(wù)級別協(xié)議 (SLA) 相關(guān)聯(lián)。它是根據(jù)服務(wù)器在選定期間可用的分鐘數(shù)或小時數(shù)計算的似忧。
- CPU 和內(nèi)存使用率:跟蹤資源利用率讓我們了解何時需要擴展我們的實例渣叛。通過添加更多資源垂直擴展,或通過調(diào)整每個實例的吞吐量水平擴展盯捌。它還可以向我們發(fā)出警報淳衙,告知我們異常情況占用了超出預(yù)期的過多 CPU 和內(nèi)存。計算 CPU 利用率涉及一個簡單的公式:CPU 利用率 =(用于非空閑任務(wù)的總時間 / 總時間)x 100。
- 錯誤率:錯誤率(如每分鐘錯誤和錯誤代碼)可以幫助你追蹤各個 API 中的問題箫攀。400 到 500 范圍內(nèi)的錯誤代碼可能表明有問題的 API 或 Web 服務(wù)提供商肠牲。它以每分鐘發(fā)生的錯誤請求計算。
- 每分鐘/秒請求數(shù) (RPM/RPS):每分鐘請求數(shù)會追蹤每分鐘的傳入請求數(shù)靴跛。它描述了在選定時間內(nèi)接收到的 API 流量缀雳。這是一個至關(guān)重要的指標,用于了解系統(tǒng)承受的負載梢睛。該指標還將揭示 API 在負載增加時的擴展效果肥印。
- 響應(yīng)時間(延遲):從請求發(fā)起到客戶端收到響應(yīng)所花費的總周轉(zhuǎn)時間。延遲告訴我們 API 服務(wù)的響應(yīng)速度有多慢/快绝葡。對于大型公司而言深碱,將延遲保持在盡可能低的水平至關(guān)重要,否則用戶體驗將會惡化藏畅。
- 限制:當網(wǎng)絡(luò)擁塞時敷硅,服務(wù)器將不再接受任何新的傳入請求。所有新請求都將受到限制愉阎,這意味著它們將得不到處理竞膳。這是因為服務(wù)器沒有額外的并發(fā)帶寬來處理。它以 RPS(每秒受到限制的請求數(shù))衡量诫硕。
采用指標
- 唯一的 API 消費者:根據(jù)選定的時間范圍,該指標衡量使用 API 服務(wù)的唯一消費者的數(shù)量刊侯。它以消費者的數(shù)量計算章办。常用的時間范圍是 DAU(每日活躍用戶)、MAU(每月活躍用戶)滨彻。這些對于了解服務(wù)的用戶采用情況非常有幫助藕届。
- API 使用量增長:與追蹤 API 消費者非常相似,增長指標追蹤給定時間范圍內(nèi) API 消耗量的增加/減少亭饵。
- 首次調(diào)用時間:此指標衡量開發(fā)人員創(chuàng)建帳戶休偶、生成 API 憑證和運行第一個 API 調(diào)用所需的時間。讓開發(fā)人員能夠盡快啟動并運行是一個重中之重辜羊,這使得此指標成為衡量整體 API 開發(fā)人員體驗的最重要指標踏兜。
產(chǎn)品指標
- 收入:此指標包括直接和間接來源的總收入。雖然一些 API 直接獲利八秃,但其他 API 通過第三方集成產(chǎn)生收入碱妆。
- API 使用量:API 消耗按每個 API 分組,從而可以識別使用最多或最少的 API昔驱。
- 用戶使用情況細分:此指標包含用戶對其 API 使用情況的按用戶細分疹尾,有助于為他們提供更好的服務(wù)/支持。
將 API 指標與業(yè)務(wù) KPI 保持一致是做出數(shù)據(jù)驅(qū)動決策并確保你的 API 策略提供組織所需價值的主要方式之一。不僅如此纳本,獲得對 API 的可見性還可以讓基礎(chǔ)設(shè)施和應(yīng)用程序團隊衡量對他們最重要的運營指標窍蓝。
頂級 API 監(jiān)控工具
以下列出了 5 種可供你使用的 API 監(jiān)控工具:
Signoz
Signoz是一款全棧開源 APM(應(yīng)用程序性能監(jiān)控),可用于有效的 API 監(jiān)控繁成。它旨在原生支持OpenTelemetry吓笙,這是一個云原生計算基金會旗下的開源項目,正成為對云原生應(yīng)用程序進行檢測的世界標準朴艰。
Signoz 可用于監(jiān)控 API 性能的指標观蓄,并且非常適合監(jiān)控基于微服務(wù)或無服務(wù)器架構(gòu)的應(yīng)用程序中的 API。
Prometheus
Prometheus是一款開源指標監(jiān)控工具祠墅,最初于 2012 年在 SoundCloud 開發(fā)侮穿,然后作為開源項目發(fā)布。它于 2016 年被云原生計算基金會接受毁嗦,并且是繼 Kubernetes 之后第二個從該基金會畢業(yè)的項目亲茅。
你可以使用 Prometheus 來監(jiān)控你的 REST API。它是一款用于監(jiān)控任何類型的時間序列數(shù)據(jù)(例如端點上的每秒請求數(shù))的優(yōu)秀工具狗准。
Graphite
Graphite是一款開源監(jiān)控工具克锣,專注于存儲時間序列數(shù)據(jù)。它有三個主要組件:Carbon腔长、Whisper 和 Graphite袭祟。Carbon 監(jiān)聽時間序列數(shù)據(jù),Whisper 存儲時間序列數(shù)據(jù)捞附,Graphite Web 渲染圖表巾乳。
Graphite 的 UI 可能不太好,但它提供了與 Grafana 的集成鸟召,以便構(gòu)建更好的圖表以進行可視化胆绊。
Datadog
Datadog合成監(jiān)控允許你創(chuàng)建無代碼測試,主動模擬應(yīng)用程序上的用戶事務(wù)欧募,并跨系統(tǒng)的各個層監(jiān)控關(guān)鍵網(wǎng)絡(luò)端點压状。它通過 API 和瀏覽器測試檢測面向用戶的錯誤,并啟動全系統(tǒng)調(diào)查跟继,以優(yōu)化性能并增強最終用戶體驗种冬。
New Relic
New Relic是一款應(yīng)用程序監(jiān)控企業(yè)工具,提供從應(yīng)用程序監(jiān)控和基礎(chǔ)設(shè)施監(jiān)控到日志管理的解決方案舔糖。New Relic Synthetics功能通過在數(shù)千個公共和私有位置模擬流量來提高構(gòu)建質(zhì)量碌廓,以主動檢測和解決問題。它還提供有關(guān) API 性能的警報剩盒。
一個好的工具應(yīng)該提供什么谷婆?
- 警報:當 API 檢查失敗時發(fā)出警報的能力慨蛙,以最大程度地減少警報疲勞并減少誤報。支持基于運行次數(shù)纪挎、時間范圍等的多種警報策略期贫。
- 分析響應(yīng)數(shù)據(jù)的能力:對于有效的 API 監(jiān)控,將警報功能擴展到簡單的連接或 HTTP 錯誤之外异袄,以包括基于響應(yīng)頭和正文內(nèi)容的可自定義條件至關(guān)重要通砍。這意味著能夠識別特定的標題名稱/值并解析 JSON 等標準格式,以根據(jù)預(yù)期結(jié)果驗證字段值的正確性烤蜕。監(jiān)控中的這種精確性允許對 API 可用性和數(shù)據(jù)完整性進行有針對性的驗證封孙,以滿足技術(shù)受眾的細微需求。
- 響應(yīng)時間指標:在監(jiān)控 API 的性能時讽营,至關(guān)重要的是將整體響應(yīng)時間分解為其組成部分:DNS 解析虎忌、連接建立、SSL/TLS 協(xié)商橱鹏、首次字節(jié)時間 (TTFB) 和數(shù)據(jù)傳輸階段膜蠢。這種細粒度分析不僅闡明了 API 響應(yīng)所需的總時間,還有助于精確定位可能發(fā)生瓶頸的特定部分莉兰。例如挑围,延長的 TTFB 表明服務(wù)器或后端處理中存在低效率,而延長的 DNS 解析時間可能表明 DNS 服務(wù)提供商存在問題糖荒。
- 定價:定價模式應(yīng)透明且易于理解杉辙,沒有隱藏成本。
- 直觀的 UI/UX:除了其廣泛的功能集之外捶朵,該工具還必須擁有直觀且用戶友好的 UI/UX蜘矢。這確保了輕松導航和理解功能。
API 監(jiān)控的最佳實踐
API 監(jiān)控的一些最佳實踐包括:
- 在多個用戶位置進行測試
- 多個時段的活動感知
- 定義明確的目標:定義與業(yè)務(wù)目標一致的具體目標和關(guān)鍵績效指標泉孩,并在業(yè)務(wù)目標發(fā)生變化時更新這些目標。
- 日志記錄和審計:維護詳細的日志以進行審計并淋、合規(guī)性和事件后分析寓搬。
- 與 DevOps 集成:將 API 監(jiān)控集成到 DevOps 流程中,以進行持續(xù)測試和早期問題檢測县耽。
結(jié)論
總之句喷,建立服務(wù)狀態(tài)網(wǎng)站和利用強大的 API 監(jiān)控工具是確保服務(wù)可靠性和性能的基本組成部分。通過實施最佳實踐兔毙,例如徹底的測試唾琼、明確的目標設(shè)定以及與 DevOps 流程的無縫集成,公司可以主動檢測問題澎剥、優(yōu)化性能并增強最終用戶體驗锡溯。
請記住,選擇提供警報功能、響應(yīng)數(shù)據(jù)檢查祭饭、響應(yīng)時間指標芜茵、透明定價和直觀 UI/UX 的工具對于有效的 API 監(jiān)控至關(guān)重要。采用這些實踐并利用合適的工具不僅有助于維護服務(wù)可用性倡蝙,還可以推動服務(wù)交付的持續(xù)改進九串。保持主動,保持觀察寺鸥,并為你的組織提供合適的工具以成功進行 API 監(jiān)控猪钮。
本文在云云眾生(https://yylives.cc/)首發(fā),歡迎大家訪問胆建。