不管你用什么编程语言,都会面临如何处理错误日志的问题。很多程序员对错误日志放任自流,直到出现故障了才追悔莫及,如果问小编怎么办,我会给你推荐 Sentry !
什么是 Sentry ? 无论测试如何完善的程序, bug 总是免不了会存在的,有些 bug 不是每次都会出现,测试时运行好好的代码可能在某个用户使用时就歇菜了,可是当程序在用户面前崩溃时,你是看不到错误的,当然你会说:“ Hey, 我有记日志呢?”
但是说实话,程序每天每时都在产生大量的日志,而且分布在各个服务器上,并且如果你有多个服务在维护的话,日志的数量之多你是看不过来的吧。等到某天某个用户实在受不了了,打电话来咆哮的时候,你再去找日志你又会发现日志其实没什么用:缺少上下文,不知道用户什么操作导致的异常,异常太多(从不看日志的缘故)不知如何下手 等等。
Sentry 就是来帮我们解决这个问题的,它是一款精致的 Django 应用,目的在于帮助开发人员从散落在多个不同服务器上毫无头绪的日志文件里发掘活跃的异常,继而找到潜在的“臭虫”。
Sentry 是一个日志平台, 它分为客户端和服务端,客户端(目前客户端有 Python, PHP,C#, Ruby 等多种语言)就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个 web 节目方便查看。 Sentry 由 python 编写,源码开放,性能卓越,易于扩展,目前著名的用户有 Disqus, Path, mozilla, Pinterest 等。
为什么使用 Sentry ? 多项目,多用户
界面友好
可以配置异常出发规则,例如发送邮件
支持主流语言接口
Sentry 的权限介绍
Sentry 目前用户类型有四种: 超级管理员, 管理员,普通用户和 System agents. 超级用户只能通过命令行来创建,其他用户可以自己注册或由其他用户邀请注册加入,然后由超级管理员或管理员分配项目和权限。为了更好支持团队协助以及信息安全,
所谓 Team 就是一个团队,一些用户组织在一起对某些项目有操作权限的组织。一个项目只能属于一个 Team, 一个用户却可以属于多个 Team, 并可在不同 Team 中扮演不同角色, 如用户 A 在 Team X 是管理员而在 Team Y 中是 System agents. Sentry 对用户角色的指定只能到 Team 级别,不能到 Project 级别, 所以将某个用户加入到某个 Team 之后,这个用户就对所有所有属于这个 Team 下所有 project 有了相同的权限。
Sentry 的如此设计虽说不够细致,但我们使用时只要遵照现实世界的情况来划分 Team 和 project 即可。比如我们目前有一个团队,这个团队负责两个项目,我们在 Sentry 上就建立一个 Team A 和属于这个 Team 的 project a 和 project b. 当在使用过程中我们发现 project b 的等级较高,不能让所有人都可以看到信息,我们可以建立一个虚拟 Team B,然后将 project b 的 team 改 Team B, 然后再给 Team B 添加用户和相应权限即可. Sentry 对 team 的 owner, project 的 owner, project 属于的 team 等等实体关系的修改都极为简单,没有副作用。
下面简单介绍一下 Sentry 中各个类型用户的权限: 超级管理员: 能创建各种用户, team 和 project 只能由超级管理员创建。项目的一些设置比如改变 Owner, 数据公开可见与否(设为 public 的数据可以通过 url 不登陆也能查看)以及客户端 domain 限制的设定。另外还有管理项目的 api key(客户端只有得到此 api key 才能向 Sentry 发送消息)的权限等等。
管理员: 能创建用户, team 和项目设定中除改变 owner 之外的权限, 可以对项目中具体数据做 resolve, bookmark, public/public 和 remove 操作。
普通用户: 无 Team 界面,只能对项目中具体数据做 resolve, bookmark, public/unpublic 和 remove 操作。
System agents: 无 Team 界面,只能对项目中具体数据做 bookmark, unpublic 和 remove 操作。
Sentry 的权限和实体设置基本可以满足现实的需求: 1 、如果一个团队负责多个项目,可以通过一个 Team 多个项目方式来实现。
2 、如果一个人参与多个团队, 可以将该用户添加到多个 team 中去。
3 、一个 team 或 project 设置相应的 Owner,则可以由此人负责该 team 或 project 内的活动。(唯一的缺点是 team owner 不可以创建 project)
4 、一个 team 或项目的分工应该是有一个管理者来设定项目的基本设定,管理 api key, 并将 api key 分发给项目开发者,项目开发者以普通用户身份登陆 Sentry 查看错误和 resolve 错误, 运维以 System agents 身份登陆 Sentry 查看系统运行状态。
你是否已经开始找 Sentry 的下载资源了?别急,在好雨·云市就可以找到 Sentry ,而且不仅免费试用,还可以无需安装一键使用,你还在等什么?扫描下方二维码或点击“阅读全文”马上使用 Sentry 吧!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.