应用程序性能监控工具——为什么、何时、什么!

在本文中,我报告了我在大型应用程序上工作的经验,以及当我开始制作旨在解决业务关键问题的软件时,监控是如何进入我的旅程的 。
解决客户的关键问题可以产生巨大的商机,但在这些情况下,您需要为真正的高客户期望做好准备 。
为了服务这些客户并抓住这些商机,我很快意识到需要自动化大部分占用我大量时间的日常活动,从而对生产力产生负面影响 。
我们每个月都有新客户;申请越来越复杂,官僚作风也越来越多,以前一个月一次的突发事件,现在每天都让我们加班到很晚 。
我不知道我的应用程序已损坏,因为客户直接向我报告了错误 。这些客户不报告错误或错误;他们停止使用应用程序寻找另一个组织更好的团队 。
在担任了十多年的软件工程师之后,我花了很多时间来选择最好的工具来提高我的工作效率 。
监控领域出现了很多混乱,可能是因为可以以多种不同方式使用大量数据 。起初,这种方法对开发人员来说是一个挑战,他们很难理解什么是解决紧急情况的最佳组合 。在这篇文章中,我写了我试图区分的经验:
 

  1. 何时或在何种情况下监控可以有效 。
  2. 为什么您应该监控系统的某些部分而其他部分不 。
  3. 每个特定监控问题的正确工具是什么 。
什么是应用程序监控工具? 
应用监控工具一般由两部分组成:
 
  1. 中介
  2. 分析平台
 
代理是开发人员安装在其服务器或应用程序中的软件包(基于代理的设计方式) 。其目标是收集有关应用程序行为和性能的相关信息 。
此信息被发送到远程平台,该平台分析该数据并生成可视图表,以帮助开发人员轻松了解其应用程序中发生的情况 。如果出现问题,它能够向开发人员发送警报 。
 
他们不是什么 
这显然是一个简单的描述,可以涵盖大量的工具 。
事实上,很多工具看起来像应用程序监控工具,但它们与应用程序监控无关 。这些相似之处让我很难找到合适的工具来解决我的生产力问题 。
这是我在旅途中学到的 。
【应用程序性能监控工具——为什么、何时、什么!】 
日志管理工具 
日志管理工具通常是我们倾向于使用的第一种工具,因为自从应用程序开发之旅开始以来,查看应用程序日志是每天最重要的活动之一,以了解我们应用程序中最重要的流程中发生的事情.
但是当应用程序开始扩展时(它在多台服务器上运行,需要复杂的架构等),我意识到很难从日志中提取有关应用程序性能的相关信息并随着时间的推移监控新版本的影响 。
就像汽车发明时一样,人们最初是在寻找更快的马,因为他们习惯了使用马 。然后他们意识到需要一种不同的工具才能将其提升到一个新的水平 。
 
正常运行时间监视器 
正常运行时间监控工具可以描述为更复杂的“ping” 。
主要目的很简单:他们从多个区域 ping 您的应用程序端点,以了解位于不同地理位置的用户可以访问它的好坏程度 。
此信息有助于了解云基础架构如何将您的应用程序带给最终用户(负载均衡器、CDN、网络等);它不提供有关您的应用程序内部发生的事情的任何信息 。
就我而言,我的应用程序为世界各地的用户提供服务,因此外部 ping 统计信息通过决定我们应该将服务器放置在哪些区域来帮助我们了解哪些区域的延迟最高 。
他们监控外部环境;你永远不会知道你的数据库是否变慢了 。
 
服务器与应用程序监控 
这是最难理解的区别,我还没有找到任何有趣的文章来帮助我澄清职责分离,而不是试图向我推销各种工具的广告 。
应用程序在服务器上运行,因此它们显然是两个严格相关的系统组件 。这就是为什么一开始它可能会令人困惑 。
但是服务器和应用程序监控完成了两个完全不同的需求 。
服务器监控侧重于基础设施,而且基本上任何像样的云提供商都免费提供 。
google GCP、AWS和DigitalOcean默认为您提供最重要的指标,如 CPU 使用率、存储、带宽等,完全免费,除了运行 VM 本身之外没有额外费用 。
应用程序性能监控工具——为什么、何时、什么!

文章插图
了解您的虚拟机必须扩大(或缩小)的时间是一项重要的必要条件,但说 CPU 处于 100% 可能意味着一切,但什么也不是:


推荐阅读