对于一个已经上线的系统,存在未知的bug或者运行时发生异常是很常见的事情,随之而来的几点需求产生了:
1、系统发生异常时是否能够通过日志查看到具体原因
2、怎样第一时间扑捉到异常
3、系统都出现了哪些异常
4、哪些异常出现频率高
第一点好解决,利用log4j、logback等日志框架把异常信息(stacktrace,params)打印到日志文件,可以在查找时很方便看到相信信息。但是这样往往具有滞后性,等到用户反馈或者系统崩溃的时候才去线上查看日志找到原因,可能异常已经发了好几天了,损失很大。所以第二点显得格外重要,怎样做到第一时间捕捉到异常呢?你大可以tail -f yourlog.log盯着屏幕一直看,出现异常马上解决,但是日志数量大、分布在多个服务器的时候这样的做法肯定行不通了,所以需要有监控措施,第一时间告警。对于第三和第四点则是需要对异常进行分类统计。
所以一个日志收集系统的原型勾勒出来了:具备收集日志(对于分布式环境下,日志分布在各台服务器上)、日志统计(统计次数最多的异常,往往这就是系统的隐患所在)、监控告警(出现异常或者异常积累到一定数量以短信或者邮件的形式告警)、以及以上功能的可视化界面。其实自己去开发这样一个系统还是有难度的,好在目前已经有好的开源产品能够直接使用了,这就是Sentry,一个基于Djongo的日志收集系统。Sentry的界面漂亮、支持的语言和框架多、易于扩展、效率不错。
Sentry的安装和配置网上有很多教程,难度不大。Sentry是c/s结构的软件,所以部署好了服务器端以后还需要客户端,Sentry的客户端支持python/php/ruby/java等语言并且支持在众多框架中集成。
以和Java的logback集成为例:
在项目的pom.xml文件中配置Sentry客户端的依赖:
<!-- sentry raven-java configuration -->
<dependency>
<groupId>net.kencochrane.raven</groupId>
<artifactId>raven-logback</artifactId>
<version>4.1.1</version>
</dependency>
<!-- jaskson configuration -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.3.0</version>
</dependency>
<!-- sentry appender configuration -->
<appender name="Sentry" class="net.kencochrane.raven.logback.SentryAppender">
<dsn>
http://your api key@your sentry host/4
</dsn>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
dsn中需要配置api keys,这个在sentry的项目配置中可以得到,一切就是这么简单,无缝集成,不影响现有的日志打印,还能帮助收集异常、统计异常,多好的事情,呵呵,下面附上一张我们部署的sentry系统的截图,敏感信息用线条抹去了请谅解。
最后需要说一下,毕竟sentry的日志收集是通过网络传输(TCP/UDP),会带来性能上的损耗。所以不适用于将所有业务日志全部收集到Sentry,所以有了Sentry以后还是需要普通log的,毕竟业务逻辑的跟踪和分析等等也离不开log,Sentry只是辅助的一个工具。
- 大小: 115.3 KB
分享到:
相关推荐
sentry php可似化日志管理系统,支持thinkphp5, sentry raven thinkphp5适配, tp5 sentry 日志管理工具, sentry sdk for php thinkphp5. 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、...
Sentry是一款开源错误跟踪,帮助开发人员实时监控和修复崩溃的工具,Sentry提供实时崩溃报告,让您的团队了解影响客户生产的错误。Sentry支持数十种语言和框架,只需几行代码即可在几分钟内设置Sentry。当错误发生或...
SQL Sentry 数据库监控软件用户手册
一般我们都是在错误发生一段时间后,错误信息才会传递到开发人员那里,然后一顿操作查看程序运行的日志,就熟练使用awk和grep去分析日志,但是往往我们会因为日志中缺少上下文关系,导致很难分析真正的错误是什么。...
安卓集成sentry错误收集服务,类似于 友盟 跟 腾讯的 Bugly的第三方服务,sentry 是自己搭建的,可以自定义很多自己的需求。
开源项目-sierrasoftworks-sentry-go.zip,一个go客户端库,允许您向哨兵发送事件
Laravel开发-sentry-laravel Sentry 服务集成 轻松地在你的项目中集合错误跟踪神器--sentry
sentry和sentry-vue 5.27.3 JS SDK
线索最多的是用户和日志,而Sentry提供了答案。 Sentry通过载满信息的堆栈跟踪提供了增强的应用程序性能监视。 通过在一处显示所有问题并提供导致错误的事件线索,它使您可以更快,更高效地构建更好的软件。 它还...
Sentry_Setup
Rqalpha 集成 sentry 的扩展 Mod。实现错误日志全自动采集、处理
sentry-1.6.0源码包,里面的README描述怎么使用mvn打包编译包
Aspnet-sentry-dotnet-samples.zip,使用与Sentry集成的新Sentry.net sdksample.net应用程序的示例,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5、css和javascript的网站,...
sentry 测试!shell 脚本,涉及多维测试!
Laravel开发-sentry-laravel Laravel Sentry集成(https://sentry.io)
SQL Sentry 官方提供的快速安装手册。
Apache Sentry是Cloudera公司发布的一个Hadoop开源组件,截止目前还是Apache的孵化项目,它提供了细粒度级、基于角色的授权以及多租户的管理模式。Sentry当前可以和Hive/Hcatalog、Apache Solr 和Cloudera Impala...