【力荐】帮你确定应用程序异常的四款在线跟踪服务

译文
移动开发
作为软件开发者,应用程序的异常是再稀疏平常不过的事情了。那么,您怎么才能准确发现到用户为何会碰到了问题、具体错误在哪里、甚至是应用程序如何崩溃的呢?

【51CTO.com快译】众所周知,软件开发既具挑战性,又比较复杂。具体来说,无论我们是在开发登录页面的APP还是Linux的内核驱动程序,软件都需要记录各种信息,并做大量的分析。

在上述这些信息中,如果您想找出为什么用户会碰到某个问题、具体错误在哪里、甚至是应用程序如何崩溃的话,分析它们的异常是必不可少的。

让我们先来看看下面的例子,异常消息显示了由于数据库表--tblmovies未被找到,所以异常PDOException被抛出。在此,您还能看到它是从初始点开始,执行到一个类的具体某行时所抛出的异常(我们已经将其编辑为可阅读的形式)。 

  1. PDOException thrown with message "SQLSTATE[HY000]: General error: 1 no such table: tblmovies"
  2. Stacktrace: 
  3. #28 PDOException in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Statement.php:186 
  4. #27 PDO:prepare in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Statement.php:186 
  5. #26 Zend\Db\Adapter\Driver\Pdo\Statement:prepare in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Statement.php:212 
  6. #25 Zend\Db\Adapter\Driver\Pdo\Statement:execute in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-db/src/TableGateway/AbstractTableGateway.php:239 
  7. #24 Zend\Db\TableGateway\AbstractTableGateway:executeSelect in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-db/src/TableGateway/AbstractTableGateway.php:209 
  8. #23 Zend\Db\TableGateway\AbstractTableGateway:selectWith in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/src/Movies/src/Services/Database/MovieTable.php:48 
  9. ... 
  10. #5 Zend\Stratigility\Middleware\ErrorHandler:process in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php:60 
  11. #4 Zend\Expressive\Middleware\LazyLoadingMiddleware:process in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-stratigility/src/Next.php:128 
  12. #3 Zend\Stratigility\Next:process in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php:102 
  13. #2 Zend\Stratigility\MiddlewarePipe:process in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/vendor/zendframework/zend-expressive/src/Application.php:374 
  14. #1 Zend\Expressive\Application:run in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/public/index.php:29 
  15. #0 {closure} in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/public/index.php:30 

那么您的应用程序也会记录这些信息,而且能够记录到一个集中存储的日志区域吗?如果是这样的话,它们:

  • 所记录的信息容易被获取到吗?
  • 是否能够被有效地进行解析?
  • 您是否能回溯到问题的提交源头(和提交者)呢?
  • 它是否提供了额外的元数据和有助于理解的提示呢?
  • 是否会包含个人身份信息(PII)、凭证、或其他任何形式的且需要进行安全加固的信息呢?

如果不能够满足上述所有、或者至少是大部分问题的话,这就会存在问题的隐患。在此,您可以通过阅读本文,了解到四款在线的异常跟踪服务。请注意,我们的罗列并无特别的优先顺序。

1.Raygun

【力荐】帮你确定应用程序异常的四款在线跟踪服务

承蒙可口可乐、微软、Slack和3M的赏识,Raygun能为各种应用异常的跟踪提供时髦且专业的用户界面(UI)。由于已有现成且详尽的指导性文档,Raygun很容易被上手。

除了基本的安装设置文档之外,Raygun还能为其各个方面的服务提供大量的扩展文档(https://raygun.com/docs)。其中包括:

  • 设置审计日志。
  • 管理用户和组。
  • 配置集成(其中包括Bitbucket、PivotalTracker、Visual Studio Team Services、Zendesk、Slack、YouTrack和Trello)。
  • 各种API和网络钩子。

Raygun能够支持各种语言、平台和框架。这些包括PHP、.Net、安卓、iOS、MacOS、WordPress、Java、Python、Cold Fusion和C++。

Raygun所提供的服务主要集中在两个方面:崩溃报告(crash reporting)和真实用户监控(real user monitoring)。崩溃报告旨在通过查找,来了解和修复那些造成应用崩溃的各种异常。对于每一个被发送到Raygun的异常,它们会被分解和重新组织,并且根据如下条目进行分类显示:

  • 何时发生的
  • 发生在哪个页面上
  • 异常的消息体本身
  • 发生的区域

例外可以通过各种类型的标准来进行过滤,其中包括浏览器类型、操作系统类型、宿主机以及机器名等。而真实用户监控,则是从另一个方面,提供了有关应用是如何被执行的细节,包括如下的度量维度(如果适用的话):

  • 平均加载的时间
  • 页面加载的时间
  • 客户数与浏览量

这种功能可帮助用户跟踪每一个部署对应用程序的影响,是正面还是负面的。同时,用户的仪表板界面也能够被完全定制,以满足您的项目和团队的需要。具体包含的细节包括:

  • 加载时间
  • 全局会话的分布
  • 活动使用用户
  • 会话数量
  • 总用户数
  • 新用户数
  • 返回的用户数
  • 平均加载的时间

它的另一个便利的特点是Pulse。Pulse能够表明通过各种接近实时的事件,来显示当前网站的各种用户状态。通过它所提供的视图,您可以详细地查看到如下的信息:

  • 加载的时间
  • 各种会话的数量
  • 各类用户的数量
  • 24小时内的会话趋势
  • 那些最近的请求
  • 平均加载的时间
  • 那些请求最多的网页
  • 那些最近的崩溃

如果您深入到页面的级别,您还可以得到诸如为何页面表现不佳之类的综合信息,其中也包括DNS的查询、延迟、SSL的开销、页面生成以及传输的时间。

定价机制

Raygun的定价是根据用户所订阅的服务来的。您可以选用整个平台,或是崩溃报告,当然也可以只选择真实用户监控。所以说,这算是一种非常灵活的定价结构。

具体费用从每月19美元到高达每月1499美元不等。价格会随着功能的增加而上涨。另外,如果您去注册的话,会有14天的免费试用期。

2.Airbrake

【力荐】帮你确定应用程序异常的四款在线跟踪服务

Airbrake正在被诸如SendGrid、Groupon、SoundCloud、Salesforce、以及TED所使用着。它符合的标准包括:HIPAA、PCI和SOX。

Airbrake能支持大量的语言和平台,包括:Java、JavaScript、PHP、Go、Node、Swift、Magento、Django、.Net和Ruby on Rails等。它能够与一系列的标准服务进行集成,其中包括:Bitbucket、GitHub、PivotalTracker、FlowDock、Campfire、Jira、HipChat和assembla。

与Raygun不同,Airblake的UI界面并不那么充实,当然也不会显示出各种丰富的功能。例如:Raygun支持通过Facebook、Google+、Twigger和GitHub的登录,而Airblake只支持GitHub一种方式。

另外,Airblake的文档并不充沛。不过,尽管如此,它的服务本身还是非常优秀的。无论您使用的是什么语言或平台,它都能为您的上手提供详细的搭建说明。

通过深入了解,您会发现Airblake使用了开源的错误与异常的通知组件,并取代了一般应用程序的默认错误处理程序。它能够捕获各种标准类型的错误,包括:404、500、一般登录问题和其他一些特定应用的错误。

该通知组件将有关应用程序异常的各种详细信息提供给Airblake,而Airblake籍此进行相应的分析和数据重组,以提供更多的可视化,并且显示出所发生了异常的各种细节信息。这里所提到的仪表板上能够显示的数据包括有如下信息:

  • 某一个异常发生的次数
  • 错误发生的当时环境
  • 一条完整路径的回溯
  • 当时的各个参数
  • 从上一次部署以来某个异常发生的次数
  • 一个部署能够修复哪些异常

鉴于所处的环境、错误数的优先级和用户类型都会对异常产生过滤,Airblake将这些异常轻松地转换成了工单号,以方便它们对应上相应的解决方案,并在不同环境中被部署时能够得以全程跟踪。

定价机制

Airblake的定价结构相对Raygun来说简单且扁平化。它支持四种选项,分别从每月49美元到每月249美元递增。我个人觉得这个扁平式定价结构反而是一个好事,因为您不会犯“选择恐惧症”。同样它也有30天的免费体验计划。

3.Sentry.io

【力荐】帮你确定应用程序异常的四款在线跟踪服务

Sentry是所有四个选项中令人印象最深刻的一款,它被诸如Dropbox、Airbnb、 Paypal和Microsoft之类的大公司所使用。Sentry由Python所编写,它能够支持和处理来自各种语言和应用程序的事件类API。

Sentry所支持的语言和平台十分广泛,包括JavaScript、Ember、Python、Ruby on Rails、PHP、iOS、安卓、Go、.Net、Java、Objective-C/Swift和Perl。它所集成的常用开发者服务包括:Slack、GitHub、Trello、Heroku、GitLab、Twilio、PagerDuty、Datadog和YouTrack。

就像这个列表中的大多数服务一样,它提供广泛的且可搜索的文件,并且文件的组织方式非常合理。除此之外,Sentry还能够支持社区论坛。您可以在它们的GitHub库中查阅和创建问题。

我发现Sentry的仪表板不但布局合理、简洁,而且组织得非常美观。您既可以通过它迅速地获得所有项目的概况,也可以深入到某个特定的项目中,以了解更多。同时你还可以在一个项目中对某些尚未解决,但需要重新分类的问题进行移动。

它的安全和隐私设置对我极具吸引力。在那里,您可以启用增强的隐私和数据清理,从而确保个人身份信息和其他类型的敏感信息能够从日志中被擦除,以便他们永远不会因为不小心而泄露出来。

我们再来看看它的核心功能。所有发给Sentry的异常都会被捕获到如下的特征信息,其中包括:

  • 环境
  • 浏览器
  • 操作系统
  • 触发异常的路径
  • 异常发生的条件
  • 软件的发布信息
  • 异常严重性
  • 服务器名称
  • 最后一次出现的时间点
  • 受异常活跃用户数
  • 错误类型(HTTP错误、500和404)
  • 已经发生异常的次数
  • 是否已经解决

Sentry还支持一个叫做面包屑(breadcrumbs)的概念。顾名思义,它是一些在问题发生之前的事件线索。

面包屑包含以下功能:

  • 消息:描述事件的字符串。最常见的来源是一条传统日志的混合信息。
  • 数据:是围绕着相关事件的各种元数据的映射(例如str => str)。虽然如今已被消息所代替,但某些传统系统仍在使用。
  • 类别:类别可以用来标签一个事件。它通常有点类似于日志的名称,以便您在某个事件发生后更容易地理解它所属的类别,比如属于身份验证类。
  • 等级:任何错误、警告、信息或调试所涉及到的严重等级。

您应该可以看出,上述所列四个领域已经能够涉及到当前常用列表的诸多方面了。它的另外一个亮点是能够支持开源模式和全托管服务模式。也就是说,您既可以免费使用,又可以将它外包给Sentry打理,选择权完全在您手中。

定价机制

说实话在各种服务中,我最喜欢Sentry的定价结构,因为他们支持一种所谓的“爱好者帐户”,即永久免费的帐户。它的方便之处在于,如果您只想试验该服务,而不确定是否真的会将它运用到项目某处时,您就可以参照此模式。

他们所支持价格从每月26美元一直到每月449美元。如果您的需求超过此范围的话,就像其他的服务那样,他们也提供企业级的方案。

Sentry还有着基于事件数的每月订阅套餐和年套餐。欲了解更多的定价和功能信息,请查看https://sentry.io/pricing/。如果您热衷于试用服务的话,别忘了申请“爱好者帐户”。

4.Rollbar

【力荐】帮你确定应用程序异常的四款在线跟踪服务

使用Rollbar的公司,包括Kayak、Heroku、Salesforce和Instacart。它所支持的语言有:Ruby、PHP、Node、Python和Java,而平台则包括:iOS和安卓。除了这些,它能与大多数标准的服务相集成,其中包括:Slack、HipChat、Logstash、Mailgun、Jira、Trello、Sprintly、Help Scout和PagerDuty。

Rollbar能符合一系列的行业标准,包括HIPAA、ISO 27001和Privacy Shield(https://www.privacyshield.gov/welcome)。它可以由2048位SSL加密,单点登录(Single Sign-On)和双因素认证(2FA)来保护。

和其他所有的服务一样,它的设置向导能够帮助您从零开始,其文档也比较深入透彻。另外除了文档支持,它还提供电子邮件、IRC(Internet Relay Chat)、电话以及在线聊天方式的支持。

Rollbar通过多种方式来保护信息的私密性。这些功能方式包括:静态数据加密、PII、PCI数据过滤和去除、用户活动的审核日志和内部与独立的渗透(PEN)测试。

由于Rollbar能与GitHub、Bitbucket和GitLab完全集成,因此您在使用的时候,可以方便地跟踪那些因为提交所导致的问题。这些信息可以通过仪表板、各种API、或者使用RQL(Rollbar的查询语言,请见https://rollbar.com/docs/rql/)来获取到。

关于Rollbar的查询语言(RQL),它在Rollbar中为数据提供了丰富的、类似于SQL的接口。RQL在两种逻辑表、item_occurrence和部署中都支持SELECT。那些基于GROUP BY、ORDER BY、LIMIT和聚合函数都是可用的,当然也包括WHERE语句中的任意表达式。

例如: 

  1. SELECT request.user_ip, count(*), count(server.host), avg(body.message.seconds), max(timestamp 
  2. FROM item_occurrence  
  3. WHERE item.counter = 840  
  4. AND timestamp > unix_timestamp() - 60 * 60 * 24  
  5. GROUP BY request.user_ip  
  6. ORDER BY count(*) DESC  
  7. LIMIT 100 

它的仪表板虽然简单,但是信息却很丰富。默认情况下,您可以看到:

  • 最近24小时内的前10大问题
  • 最近24小时内的前5大活动项
  • 截至上周的前5大活动项

您可以根据环境对报告进行进一步筛选。通过查看所有项目的列表,您可以获知异常发生的次数、24小时内的趋势、上次发生时间、其所处的环境和使用到的语言。

进一步点开某个项目,您可以了解到异常的整个历史过程,包括查看到使用的浏览器、操作系统、请求方法、请求的URL,服务器繁忙程度、异常消息体等。

与此同时,Rollbar还能将异常与一个版本控制系统的问题库相关联,从而通过完整的历史分析和推送式的部署来予以解决。它所呈现出的信息不但全面而且界面友好。

定价机制

和其他服务一样,Rollbar也提供了一系列扁平化的价格体系。他们既有为个人项目提供的免费版本,也有从每月49美元到每月599美元的尊享版本。

除了这些,您还可以根据实际需求对默认选项进行取舍,以满足特殊的安全与合规的需要。

结论

这就是市场上最好的四款在线式异常跟踪服务。就我个人而言,Rollbar和Sentry是我的最爱,因为它们功能丰富且仪表盘显示专业,一句话:全面!当然,它们所提供信息量对于您所面对的真实情况可能会有所过剩。

如果您已经准备好了针对应用程序所碰到的异常进行跟踪,或者想从自行开发的跟踪方案迁移到一个专业外包服务之上的话,我强烈建议您考虑我们上述所提到的这四款服务。我相信总有一款能适合您的应用程序需求,让您能将更多的资源投入到应用程序本身的研发上面。

原文标题:The Top Four Exception Tracking Services,作者:Matthew Setter

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:未丽燕 来源: 51CTO.com
相关推荐

2014-03-04 09:22:24

bug程序员

2014-04-02 14:00:41

移动应用程序工具

2013-04-22 09:21:43

2011-03-18 13:30:18

Android办公

2012-06-07 09:15:14

ibmdw

2011-04-19 09:19:55

应用程序项目管理

2016-04-19 11:50:58

开源音频视频

2010-09-28 10:51:44

亚马逊在线商店Android Mar

2018-11-23 08:54:27

服务器程序监控

2019-07-05 08:00:00

WindowsWindows 10程序

2018-10-12 10:51:15

LinuxChromebook应用程序

2009-03-11 13:38:37

构造块ActivityIntent Rece

2009-08-28 11:00:15

苹果在线应用商店

2019-11-11 15:24:04

Linux软件微软

2017-01-15 15:02:42

JavaScript移动应用开发框架

2009-06-11 14:45:50

Linux免费CAD

2014-08-28 14:09:40

AppAndroid Wea应用

2017-01-10 08:30:01

2021-04-28 16:45:51

苹果iOS设备

2009-11-06 12:49:11

WCF面向服务
点赞
收藏

51CTO技术栈公众号