实时事件日志记录和聚合的平台――Sentry

不管你用什么编程语言,都会面临如何处理错误日志的问题。很多程序员对错误日志放任自流,直到出现故障了才追悔莫及,如果问小编怎么办,我会给你推荐 Sentry

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

什么是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的如此设计虽说不够细致,但我们使用时只要遵照现实世界的情况来划分Teamproject即可。比如我们目前有一个团队,这个团队负责两个项目,我们在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,public/unpublic和remove操作。

System agents: 无Team界面,只能对项目中具体数据做bookmark,unpublic和remove操作。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

  • 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吧!

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

相关文章

适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合作。
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独立于使用算法...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的一些设计问题...
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结...
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
外观模式又叫门面模式,它提供了一个统一的(高层)接口,用来访问子系统中的一群接口,使得子系统更容...