在本文中,我報告了我在大型應用程序上工作的經驗,以及當我開始制作旨在解決業務關鍵問題的軟件時,監控是如何進入我的旅程的。
解決客戶的關鍵問題可以產生巨大的商機,但在這些情況下,您需要為真正的高客戶期望做好準備。
為了服務這些客戶并抓住這些商機,我很快意識到需要自動化大部分占用我大量時間的日常活動,從而對生產力產生負面影響。
我們每個月都有新客戶;申請越來越復雜,官僚作風也越來越多,以前一個月一次的突發事件,現在每天都讓我們加班到很晚。
我不知道我的應用程序已損壞,因為客戶直接向我報告了錯誤。這些客戶不報告錯誤或錯誤;他們停止使用應用程序尋找另一個組織更好的團隊。
在擔任了十多年的軟件工程師之后,我花了很多時間來選擇最好的工具來提高我的工作效率。
監控領域出現了很多混亂,可能是因為可以以多種不同方式使用大量數據。起初,這種方法對開發人員來說是一個挑戰,他們很難理解什么是解決緊急情況的最佳組合。在這篇文章中,我寫了我試圖區分的經驗:
- 何時或在何種情況下監控可以有效。
- 為什么您應該監控系統的某些部分而其他部分不。
- 每個特定監控問題的正確工具是什么。
什么是應用程序監控工具?
應用監控工具一般由兩部分組成:
- 中介
- 分析平臺
代理是開發人員安裝在其服務器或應用程序中的軟件包(基于代理的設計方式)。其目標是收集有關應用程序行為和性能的相關信息。
此信息被發送到遠程平臺,該平臺分析該數據并生成可視圖表,以幫助開發人員輕松了解其應用程序中發生的情況。如果出現問題,它能夠向開發人員發送警報。
他們不是什么
這顯然是一個簡單的描述,可以涵蓋大量的工具。
事實上,很多工具看起來像應用程序監控工具,但它們與應用程序監控無關。這些相似之處讓我很難找到合適的工具來解決我的生產力問題。
這是我在旅途中學到的。
日志管理工具
日志管理工具通常是我們傾向于使用的第一種工具,因為自從應用程序開發之旅開始以來,查看應用程序日志是每天最重要的活動之一,以了解我們應用程序中最重要的流程中發生的事情.
但是當應用程序開始擴展時(它在多臺服務器上運行,需要復雜的架構等),我意識到很難從日志中提取有關應用程序性能的相關信息并隨著時間的推移監控新版本的影響。
就像汽車發明時一樣,人們最初是在尋找更快的馬,因為他們習慣了使用馬。然后他們意識到需要一種不同的工具才能將其提升到一個新的水平。
正常運行時間監視器
正常運行時間監控工具可以描述為更復雜的“ping”。
主要目的很簡單:他們從多個區域 ping 您的應用程序端點,以了解位于不同地理位置的用戶可以訪問它的好壞程度。
此信息有助于了解云基礎架構如何將您的應用程序帶給最終用戶(負載均衡器、CDN、網絡等);它不提供有關您的應用程序內部發生的事情的任何信息。
就我而言,我的應用程序為世界各地的用戶提供服務,因此外部 ping 統計信息通過決定我們應該將服務器放置在哪些區域來幫助我們了解哪些區域的延遲最高。
他們監控外部環境;你永遠不會知道你的數據庫是否變慢了。
服務器與應用程序監控
這是最難理解的區別,我還沒有找到任何有趣的文章來幫助我澄清職責分離,而不是試圖向我推銷各種工具的廣告。
應用程序在服務器上運行,因此它們顯然是兩個嚴格相關的系統組件。這就是為什么一開始它可能會令人困惑。
但是服務器和應用程序監控完成了兩個完全不同的需求。
服務器監控側重于基礎設施,而且基本上任何像樣的云提供商都免費提供。
google GCP、AWS和DigitalOcean默認為您提供最重要的指標,如 CPU 使用率、存儲、帶寬等,完全免費,除了運行 VM 本身之外沒有額外費用。
了解您的虛擬機必須擴大(或縮小)的時間是一項重要的必要條件,但說 CPU 處于 100% 可能意味著一切,但什么也不是:
- 如果您的應用程序消耗太多資源,您需要重構應用程序的哪一部分?
- 您如何確定為什么您的應用程序的某個部分速度變慢,從而給您的用戶帶來負面體驗?
- 您如何知道您的應用程序是否正在觸發異常,為什么?
如文章開頭所述,服務器監控通過在服務器級別安裝代理來工作,因此在您的應用程序“外部”。但是幾乎不可能從外部查看您的應用程序并知道代碼內部發生了什么。
應用程序監控最終將您的注意力集中在“應用程序”上。
這類工具為您提供了一個軟件庫,而不是安裝在操作系統中的軟件包。開發人員在他們的應用程序中安裝集成庫,就像任何其他依賴項一樣,而無需觸及服務器的配置。它會自動收集有關您的代碼性能、錯誤和趨勢的相關信息,以便在出現問題時提醒您,例如哨兵。
應用程序監控工具解決了什么問題?
應用程序監控工具提供指標和警報來識別應用程序中的錯誤和瓶頸,而無需等待客戶報告問題。
精心設計的應用程序監控解決方案為開發人員提供了將應用程序性能與業務成果聯系起來所需的信息,并在性能問題影響最終用戶之前識別并修復它們,從而實現更好的技術支持和最佳的服務連續性。
它就像一個哨兵,讓您可以直觀地探索代碼的運行方式,完全自主地完成 90% 的分析工作。
這就是 Inspector 的設計目的以及它在監控市場中的定位。
為什么應用程序監控很重要?
這很重要,因為滿意的客戶是付費客戶。
相對而言,擁有應用程序是容易的部分;任何人都可以做到。
真正的工作始于與客戶建立融洽的關系并使他們成為第一。
如果您將客戶放在首位,他們將仍然是您應用程序的忠實粉絲。另一方面,對您的企業來說最糟糕的事情之一是容易出錯、有缺陷的軟件。
沒有什么比等待網站加載或完全關閉網站更快地驅走潛在的付費客戶了。所以盡一切可能讓他們開心,收入就會隨之而來。
您可以在應用程序中監控什么?
您應該能夠輕松了解應用程序完成 HTTP 請求或完成后臺進程(如作業、cron 任務等)需要多長時間,以了解系統中消耗最多的進程是什么。
每個執行周期通常稱為“事務”。因此,在事務期間,應用程序可以執行許多不同的任務,例如 SQL 查詢、讀/寫文件、調用外部系統、算法等。
我們將此任務列表稱為“時間線”,您可以如下圖所示直觀地探索它:
所有這些信息都由監控工具自動收集,無需開發人員進行任何棘手的配置。
我真的相信清晰和簡單的信息是做出更好決策的最重要的事情。
了解為什么、何時以及如何使用監控工具是我開發者旅程中最令人困惑的部分之一,我希望這段經歷可以幫助您更清楚地了解您的需求以及您需要解決的正確工具是什么您的問題并提高您的生產力。