`
luxury_zh
  • 浏览: 72722 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使用开源软件sentry来收集日志

阅读更多
      对于一个已经上线的系统,存在未知的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和sentry-vue Js SDK(5.27.3).zip

    Sentry允许开发者收集、组织和响应来自各种源的错误,提供了一种强大的方式来维护应用的稳定性。而Sentry-vue是Sentry为Vue.js框架量身定制的一个集成库,它使得在Vue应用中轻松集成Sentry成为可能。 在5.27.3版本...

    android_sentry.rar

    除了基本的错误收集,Sentry还提供了丰富的API来满足更多需求。例如,可以添加用户上下文信息,以便更好地理解错误发生时的用户环境: ```java Sentry.getContext().setUser(new SentryUser.Builder() .setId(...

    日志记录,开源项目使用方法见说明.rar

    总结来说,日志记录是软件开发和运维不可或缺的环节,开源日志项目提供了丰富的工具和方法来满足各种需求。理解并有效利用这些工具,可以显著提升我们的工作效率,保障系统的稳定运行。在具体实践中,我们需要根据...

    sentry-1.6.0源码包

    Sentry是Apache软件基金会的一个开源项目,它提供了一个用于事件跟踪和错误管理的系统,帮助企业监控其应用程序的运行状况。在"Sentry-1.6.0"版本中,我们获得了源码包,这对于开发者来说是一个非常宝贵的资源,因为...

    Python-Rqalpha集成sentry的扩展Mod实现错误日志全自动采集处理

    通过编写一个Mod,我们可以扩展Rqalpha的功能,例如集成Sentry来收集和上报错误日志。 Sentry是一款强大的错误追踪服务,支持多种语言,包括Python。它提供了一个API,使得开发者可以方便地在应用程序中捕获和报告...

    前端监控方案sentry整体概览

    - **Sentry**:一个开源的错误跟踪系统,能够自动检测并报告应用程序中的错误。 - **前端监控**:通过技术手段对Web页面或移动应用客户端的性能、异常等进行监测的过程。 - **运维**:即运营与维护,是确保软件系统...

    Sentry SDK for C, C++ and native applications..zip

    Sentry SDK 是一个强大的错误追踪和监控工具,它广泛应用于各种软件开发中,包括Web应用、移动应用以及我们这里关注的C、C++和原生应用程序。这个压缩包“Sentry SDK for C, C++ and native applications.zip”显然...

    PyPI 官网下载 | sentry-plugins-8.10.0.tar.gz

    Sentry的核心功能包括事件日志记录、错误分类、错误率统计、堆栈跟踪以及用户反馈收集等。 "plugins"一词在这里指的是扩展或增强Sentry核心功能的组件。Sentry的插件体系结构允许开发者根据需求定制其功能,例如...

    前端开源库-devkit-logging

    在实际项目中,我们可以结合使用 "devkit-logging" 与其他前端工具,如浏览器的开发者工具,或者第三方日志分析服务(如 Sentry、Loggly 等),形成完整的日志管理系统。这样不仅可以收集前端应用的运行状态,还可以...

    Python库 | sentry_elastic_nodestore-0.0.0.tar.gz

    因此,我们可以推测`sentry_elastic_nodestore`可能是Sentry的一个扩展,它与Elasticsearch集成,可能用于存储、检索或者分析Sentry收集到的错误信息。Nodestore可能指的是它在Elasticsearch中的数据存储节点,或者...

    开源项目-agnivade-funnel.zip

    开源项目“agnivade-funnel.zip”是一个名为Funnel的日志路由系统,它遵循12因素应用程序的原则,设计简洁,专为高效管理和分发日志数据而构建。这个项目的目标是提供一个轻量级的解决方案,帮助开发者和系统管理员...

    \"海量日志分析系统实践\"分享总结

    可以使用Sentry、Prometheus等工具设置告警规则,确保及时响应潜在问题。 7. **安全性与隐私**:在处理大量敏感日志数据时,确保数据安全和用户隐私至关重要。这需要遵循数据加密、访问控制和审计日志等最佳实践。 ...

    raven-python:Raven是Sentry(getsentry.com)的旧版Python客户端-已由sentry-python取代

    Sentry是一个强大的错误追踪平台,通过收集、分类和分析来自各种来源的错误报告,帮助开发团队及时发现和解决软件中的问题。它支持多种编程语言,包括Python、JavaScript、Java等,能够无缝集成到现有的开发流程中。...

    前端开源库-error-trace

    在实际项目中,我们可以将"error-trace"集成到构建流程中,通过配置设置错误报告的目标(如日志服务器或第三方错误跟踪服务,如Sentry、Loggly)。此外,还可以结合使用其他前端工具,如Webpack或Rollup,来自动化...

    hubot-raven:Hubot的Sentry集成

    Sentry是一个开源的错误追踪服务,它允许开发者收集、分类和分析来自各种源的错误。通过Raven库,Hubot可以与Sentry API通信,发送有关机器人遇到的问题的详细信息,包括堆栈跟踪和环境信息。这有助于团队快速识别并...

    Python库 | raven-1.6.0.tar.gz

    它被设计为与Sentry服务集成,Sentry是一个开源的事件日志和错误管理系统,允许团队快速发现、诊断和修复应用程序中的问题。 在`raven-1.6.0.tar.gz`这个压缩包中,包含的是Raven库的1.6.0版本源代码。解压后,你...

    Go-logrus-结构化可热插拔的Go记录

    3. 添加`logrus/hooks/sentry`钩子,将日志直接发送到Sentry等错误跟踪服务。 4. 使用`logrus/hooks/syslog`,将日志发送到syslog服务器,满足企业级日志管理需求。 总结,`logrus`作为Go语言中的强大日志库,其...

    XamarinSentryApp:一个iOS + Android示例应用程序,演示了如何将Sentry的RavenClient与Xamarin一起使用

    9. **调试与测试**:在开发阶段,可以使用Sentry的沙箱模式或调整日志级别,以便在不干扰最终用户的情况下收集和分析数据。 10. **持续集成/持续部署(CI/CD)**:集成Sentry到CI/CD流程中,确保每个版本发布前都经过...

    前端项目-raven.js.zip

    总结来说,"前端项目-raven.js.zip" 提供了Sentry的JavaScript客户端,它在前端错误管理和日志记录方面起着关键作用。正确地集成和使用Raven.js,可以极大地提升开发团队的效率,降低线上问题的影响,确保产品的稳定...

    raven-log4j-3.1.zip

    【标题】"raven-log4j-3.1.zip" 提供的是 Raven 与 Log4j 的集成版本,其中 Raven 是一个用于收集和发送日志数据到各种后端服务(如 Sentry)的库,而 Log4j 是一个广泛使用的 Java 日志框架。这个压缩包可能包含了 ...

Global site tag (gtag.js) - Google Analytics