原文地址:http://luxuryzh.iteye.com/blog/1980364

对于一个已经上线的系统,存在未知的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 -->

  1. <dependency>
  2. <groupId>net.kencochrane.raven</groupId>
  3. <artifactId>raven-logback</artifactId>
  4. <version>4.1.1</version>
  5. </dependency>

<!-- jaskson configuration -->

  1. <dependency>
  2. <groupId>com.fasterxml.jackson.core</groupId>
  3. <artifactId>jackson-core</artifactId>
  4. <version>2.3.0</version>
  5. </dependency>

<!-- sentry appender configuration -->

  1. <appender name="Sentry" class="net.kencochrane.raven.logback.SentryAppender">
  2. <dsn>
  3. http://your api key@your sentry host/4
  4. </dsn>
  5. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  6. <level>ERROR</level>
  7. </filter>
  8. </appender>

dsn中需要配置api keys,这个在sentry的项目配置中可以得到,一切就是这么简单,无缝集成,不影响现有的日志打印,还能帮助收集异常、统计异常,多好的事情,呵呵,下面附上一张我们部署的sentry系统的截图,敏感信息用线条抹去了请谅解。 

        最后需要说一下,毕竟sentry的日志收集是通过网络传输(TCP/UDP),会带来性能上的损耗。所以不适用于将所有业务日志全部收集到Sentry,所以有了Sentry以后还是需要普通log的,毕竟业务逻辑的跟踪和分析等等也离不开log,Sentry只是辅助的一个工具。

使用开源软件sentry来收集日志的更多相关文章

  1. 2014 年最热门的国人开发开源软件 TOP 100 - 开源中国社区

    不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外的认可.中国是 ...

  2. 2014 年最热门的国人开发开源软件TOP 100

    不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外认可.中国是开 ...

  3. 2014年国人开发的最热门的开源软件TOP 100

    不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外的认可.中国是 ...

  4. Spring Cloud (十四):Spring Cloud 开源软件都有哪些?

    学习一门新的技术如果有优秀的开源项目,对初学者的学习将会是事半功倍,通过研究和学习优秀的开源项目,可以快速的了解此技术的相关应用场景和应用示例,参考优秀开源项目会降低将此技术引入到项目中的成本.为此抽 ...

  5. 优秀的 Spring Cloud 开源软件

    Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.断路器.数据监控等,都可以用 ...

  6. Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏

    Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏 云收藏项目已经开源3年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时 ...

  7. OSCHINA 公布 2019 年度最受欢迎中国开源软件

    https://www.oschina.net/project 此文章从此处转载:https://www.oschina.net/project/top_cn_2019?utm_source=star ...

  8. 2014年最热门的国人开发开源软件TOP100

    2014年最热门的国人开发开源软件TOP100 不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多 ...

  9. 2016 年度开源中国新增开源软件排行榜 TOP 100

    2016 年度开源中国新增开源软件排行榜 TOP 100 2016 年度开源中国新增开源软件排行榜 TOP 100 新鲜出炉!本榜单根据 2016 年开源中国新收录的 3030 款软件的关注度和活跃度 ...

随机推荐

  1. 分享一下自己在用的CSS样式重置代码

    通过借鉴网上大牛们的经验和自己在工作中碰到的一些问题,总结出了这些比较常用的CSS样式重置的代码: @charset "utf-8"; /* 防止用户自定义背景颜色对网页的影响,添 ...

  2. 学点bootstrap

  3. jetty服务器访问系统的域名

    jetty-env.xml=><Set name="contextPath">/epps-compensation-backend</Set> 这个决 ...

  4. C#使用Process类调用外部程序(转)

    在程序开发中,一个程序经常需要去调用其他的程序,C#中Process类正好提供了这样的功能.它提供对本地和远程进程的访问并使您能够启动和停止本地系统进程.一.启动进程实例 Process myProc ...

  5. 安卓学习之ListView和GridView

    ListView 和 GridView是安卓中显示信息的两个很基本也最常用的控件.他们的用法很相似,但是他俩也是有区别的. ListView显示的数据会将他的item放在一行显示,而且根据内容给出it ...

  6. VisualStudio2013内置SQLServer入门

    最近做项目老大要求用到sqlserver,但是这项目的数据库只是本地演示用并不复杂,于是决定试试VisualStudio2013内置的SQLServer.对于这个东西的了解并没有多少,然后项目初学习的 ...

  7. JAVA开发环境 - 环境变量及配置

    JDK是什么?JRE是什么? JRE(Java Runtime Environment):Java运行环境: JDK(Java Development Kit):Java开发工具包,里面已经包含JRE ...

  8. 【工具篇】xshell

    SSH.telnet.串口登录等,类似Secure CRT,蛮好用的. 中文显示乱码的解决方法,file->properties,在Encoding那里修改为UTF-8 修改颜色,点Edit修改 ...

  9. SGU 128.Snake

    时间限制:0.25s 空间限制:4m 题意: 在一个平面坐标中有N个点,现在要你用这N个点构造一个闭合图形,这个图形要满足以下条件: 1.这个图形要是闭合的:          2.图形上的点只能是给 ...

  10. js编译和执行顺序

    JS是一段一段执行的(以<script>标签来分割),执行每一段之前,都有一个“预编译”,预编译干的活是:声明所有var变量(初始为undefined),解析定义式函数语句. 还有个关于 ...