前言本文不仅适用于Flutter开发者,也适用于Web、React、Vue、Go、iOS等开发者。笔者主要从方案选择和实施两大方面进行阐述。提供一些常见的哨兵实践,希望能帮助开发者更好的使用哨兵。解决方案选择什么是Sentry?Sentry是一个开源的应用监控平台。它可以使用文件名和行号报告崩溃,监控你的全栈信息,让你停止猜测和挖掘日志,并帮助你跟踪和修复所有主要语言。和框架中的错误。优势UI界面精美,产品体验好,功能齐全;支持几乎所有主流开发语言(JavaScript、Node.js、Python、PHP、Ruby、Java、React、Go、Android、iOS、Flutter等101个平台)的SDK,接入相对简单;提供完整的错误详细信息;支持统一错误聚合分析;支持团队成员管理;可及时更新错误日志,支持邮件告警设置&WebHook;支持多种环境设置(开发、测试、暂存或生产);主动电子邮件警告;开源有免费版,可以自己部署服务器,安全。缺点上面提到的Sentry的优点有很多。当然,它也有一些缺点。比如部署依赖比较多,需要使用github官方仓库。基于Docker&DockerCompose可以实现一键部署,但是Docker容器太多;你需要自己保证高可用性。自部署在Sentry的介绍中已经提到了它的优缺点,那么我们先来看看如何自己快速部署吧~环境要求:Docker19.03.6+Compose1.28.0+4CPUCores8GBRAM20GBFreeDiskSpace安装步骤:首先需要到官网下载Docker。这个你可以谷歌或百度。由于本例是在Mac上进行演示,DockerDesktopforMac包含Compose等Docker应用,Mac用户无需单独安装Compose;下载并安装哨兵安装文件;下面可以愉快的安装,但是进入仓库根目录后,执行./install.sh,发现报错,如下图:当然,遇到问题不要慌。我们升级coreutils后,问题就迎刃而解了。当brewinstallcoreutils再次执行./install.sh时,又是漫长的等待。然而,我们发现获取和更新Docker镜像要等待几个世纪而没有响应实在是太慢了。当然,山人有自己的招数,我们只需要配置DockerEngine进行镜像即可。接下来我们打开阿里云企业应用中心,在下方镜像搜索框搜索Docker,我们会看到如下界面:根据阿里云镜像的加速进行操作,如下图:然后我们可以愉快的进行下一步操作了现在,我们再在命令行中执行./install.sh。快速操作后,会提示我们创建账户,如下图:在命令行输入docker-composeup-d命令,然后往下浏览器输入127.0.0.1:9000,然后会出现如下登录界面:输入我们刚才设置的账号密码登录,就大功告成了!付费如果选择付费版,我们有Developer、Business、Team和Enterprise版本可供选择,那么这两个版本有什么区别呢?Developer当然是免费的,但是功能比较少。我们团队目前选择Team,差不多就够了。当然,Business和Enterprise还有更高级的功能。大家可以去官网自行研究,这里不再赘述。.登陆实践上面已经介绍了方案的选择,下面正式进入登陆实践部分~要注册使用Sentry,首先要注册。当然,注册是免费的。这个相信大家都很熟悉,就不详细介绍了。项目集成选择CreateProject图标来创建一个新项目;Sentry有多种开发平台支持,本文我们只针对Flutter平台,报警设置选择默认,项目名称为test;为了向哨兵报告错误,我们需要一个DSN(数据源名称)来唯一标识我们的应用程序与哨兵服务器。因此,在Sentry上创建项目后,我们会从上面步骤创建的应用中复制DSN,切记不要泄露;要在Flutter项目中使用Sentry,我们还需要从pub中找到sentry_flutter并接入到我们的项目中。到目前为止,我们已经成功部署并连接了Sentry到我们的Flutter项目。告警机制我们刚才在创建工程的时候,使用的是默认设置。当然,我们也可以通过设置报警规则来完善上报机制。下面看一下如何设置报警规则:找到设置->你的项目组->项目->报警设置->查看报警规则->创建报警->设置条件,如下图:例如:在下面,我们假设在一个小时内,事件级别在Warn以上,并且在一个小时内连续触发50次。比如以邮件通知给团队所有成员为例来设置。当然,我们也可以设置其他条件。然后我们就可以在刚才设置的报警规则中看到详细的数据了。如果我们只为邮件通知设置这些报警规则,那么在众多的邮件中,我们可能无法及时看到。这些Sentry已经为我们考虑好了,我们也可以为企业微信等通知设置WebHooks。我们只需要记住上图中的CallbackURls,就可以定义用于通知的WebHooks。查询上报当项目出现异常时,我们可以点击左侧的Issues,然后根据条件进行筛选,例如:根据环境、日期、问题类型等筛选出我们想要的结果。当我们选择一个问题后,可以点击查看详细信息,如下:问题发生次数影响用户数环境信息附加信息(App版本号、操作系统、SDK版本等),这些需要在初始化SDK时额外配置配额管理事件和配额在Sentry中是相互关联的,当我们订阅Sentry时,我们为我们跟踪的事件数量付费。这些事件有一个配额,当Sentry接受一个事件时,它会计入该类型事件的配额。比如我们选择下图所示的版本,每个月可以收到5KErrors(错误)、10WTransactions(交易)、1GBAttachments(附件)。当我们用完一个月后,我们将不会收到新事件。这个时候怎么办?1.SDK配置采样率SDK配置允许事件或过滤掉事件。为了防止某些交易被报告给哨兵,我们可以使用tracesSampler配置选项,它允许我们提供一个函数来评估当前交易。如果它不是我们想要的,则丢弃它。2.删除错误并丢弃如果我们选择删除并丢弃一个问题,那么未来发生相同错误的事件将不计入配额。我们只需要找到一个issue,点击...,然后选择delete&discardfutureevents。不幸的是,此操作需要购买商业计划或更高版本。3.Inboundfilter配置我们可以在inboundfilter中配置如下规则:browserextensionerrorlocalhosteventknownoldbrowsererrorknownwebcrawlererrormessagetypefilterspecificerroreventfilterspecificIPreleaseversionFilteringcanbesetunderProject>Settings>Inbound过滤器。但是,发布版本、错误信息类型和特定的错误事件过滤还需要购买BusinessPlan或更高版本。4.购买配额当然,您也可以购买新的配额继续使用。相关费用可自行查看官网费用。最后,通过上面对Sentry的介绍和实践,想必大家对Sentry有了一个大概的了解。后续笔者将根据Sentry在百博APP制作过程中报出的一些异常进行分析(自责)。参考资料https://docs.docker.com/compo...https://develop.sentry.dev/更多精彩,敬请关注我们的公众号《百瓶科技》,不定期有福利哦!
