内容简介:帮你确定应用程序异常的四款在线跟踪服务
【51CTO.com快译】 摘要: 作为软件开发者,应用程序的异常是再稀疏平常不过的事情了。那么,您怎么才能准确发现到用户为何会碰到了问题、具体错误在哪里、甚至是应用程序如何崩溃的呢?
正文:
众所周知,软件开发既具挑战性,又比较复杂。具体来说,无论我们是在开发登录页面的APP还是 Linux 的内核驱动程序,软件都需要记录各种信息,并做大量的分析。
在上述这些信息中,如果您想找出为什么用户会碰到某个问题、具体错误在哪里、甚至是应用程序如何崩溃的话,分析它们的异常是必不可少的。
让我们先来看看下面的例子,异常消息显示了由于数据库表--tblmovies未被找到,所以异常PDOException被抛出。在此,您还能看到它是从初始点开始,执行到一个类的具体某行时所抛出的异常(我们已经将其编辑为可阅读的形式)。
PDOException thrown with message "SQLSTATE[HY000]: General error: 1 no such table: tblmovies". Stacktrace: #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 #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 #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 #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 #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 #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 ... #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 #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 #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 #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 #1 Zend\Expressive\Application:run in /Users/settermjd/Documents/Business/Projects/Zend Expressive Course/book-code/iteration-five/public/index.php:29 #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语句中的任意表达式。
例如:
SELECT request.user_ip, count(*), count(server.host), avg(body.message.seconds), max(timestamp) FROM item_occurrence WHERE item.counter = 840 AND timestamp > unix_timestamp() - 60 * 60 * 24 GROUP BY request.user_ip ORDER BY count(*) DESC 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】
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 构建一个混合的费用跟踪应用程序
- 使用 IBM Bluemix 在云中构建和部署一个投资跟踪应用程序,第 2 部分
- ruby-on-rails – 如何在搜索错误时跟踪rails应用程序中的redirect_to
- Firefox 65 计划推出新反跟踪方法,专门针对跨站点跟踪
- Thinkphp漏洞跟踪
- 跟踪 Component 的修改
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
从问题到程序-用Python学编程和计算
裘宗燕 / 机械工业出版社 / 2017-6-1
本书是以Python为编程语言、面向计算机科学教育中的程序设计基础课程与编程初学者的入门教材和自学读物。本书以Python为工具,详细讨论了与编程有关的各方面问题,介绍了从初级到高级的许多重要编程技术。本书特别强调编程中的分析和思考、问题的严格化和逐步分解、语言结构的正确选择、程序结构的良好组织,以及程序的正确和安全。书中通过大量实例及其开发过程,展示了好程序的特征和正确的编程工作方法。此外,书中......一起来看看 《从问题到程序-用Python学编程和计算》 这本书的介绍吧!