Sentry--错误日志收集框架

简介:

  简介

  Sentry’s real-time error tracking gives you insight into production deployments and information to reproduce and fix crashes.---官网介绍

  Sentry是一个实时事件日志记录和汇集的日志平台,其专注于错误监控,以及提取一切事后处理所需的信息。他基于Django开发,目的在于帮助开发人员从散落在多个不同服务器上的日志文件里提取发掘异常,方便debug。Sentry由python编写,源码开放,性能卓越,易于扩展,目前著名的用户有Disqus, Path, mozilla, Pinterest等。它分为客户端和服务端,客户端就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个web节目方便查看。

  DSN(Data Source Name)

  当你完成sentry配置的时候,你会得到一个称为“DSN”的值,看起来像一个标准的URL。Sentry 服务支持多用户、多团队、多应用管理,每个应用都对应一个 PROJECT_ID,以及用于身份认证的 PUBLIC_KEY 和 SECRET_KEY。由此组成一个这样的 DSN:

'{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}'

PROTOCOL 通常会是 http 或者 https,HOST 为 Sentry 服务的主机名和端口,PATH 通常为空。

  Sentry支持的语言:

wKiom1gZkXnDOaIBAADqfDmPkEI701.png-wh_50

  安装

 这里有两种方式安装sentry,我这里介绍用docker的安装方式(官网推荐用docker)。

sentry运行需要的服务:

PostgreSQL

Redis

Memcached

Outbound Email

启动sentry需要依赖的服务:

Web Service

Background Workers

Cron Process

容器安装sentry需要的环境:

Docker 1.10.0+

Compose 1.6.0+ (optional)

另外redis、数据库等也可以配置cluster,并结合HAProxy使用。我这里docker容器全部只安装在了一台机器(Ubuntu1404)上。

  1. 安装docker

增加GPG key:

1
2
3
4
sudo  apt-get update
sudo  apt-get  install  apt-transport-https ca-certificates
sudo  apt-key adv --keyserver hkp: //p80 .pool.sks-keyservers.net:80 \
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D

配置apt仓库:

在/etc/apt/sources.list文件最好追加一行:

1
deb https: //apt .dockerproject.org /repo  ubuntu-trusty main

安装 docker-engine:

1
2
3
sudo  apt-get update
sudo  apt-get  install  linux-image-extra-$( uname  -r) linux-image-extra-virtual
sudo  apt-get  install  docker-engine

2、安装docker-compose

使用pip安装,如果没有pip需要先安装:

1
2
sudo  apt-get  install  python-pip
sudo  pip  install  docker-compose

3、构建容器并创建数据库和sentry安装目录

1
2
3
sudo  apt-get  install  git
sudo  git clone 
sudo  mkdir  -p data/{sentry,postgres}

4、生成secret key并添加到docker-compose文件里:

1
2
3
4
sudo  docker-compose run -- rm  web config generate-secret-key
# 这里复制生成的字符串
sudo  vim docker-compose.yml
# 取消SENTRY_SECRET_KEY的注释,并把刚刚复制的字符串插入其中,类似如下:

wKiom1gZm-KSduiSAABJVjeSzNA427.png-wh_50

5、重建数据库,并创建sentry超级管理员用户

1
sudo  docker-compose run -- rm  web upgrade

这里采用交互方式创建用户:

upgrade过程:

wKiom1gZpNjxxOMyAAaudUXbTXk112.png-wh_50

创建用户,sentry新建的时候需要一个超级管理员用户:

wKioL1gZpW6ArVEKAANd0oJ7E6g535.png-wh_50

6、启动所有的服务:

1
sudo  docker-compose up -d

wKiom1gZqJ3CSa4HAANG1lNzXj0703.png-wh_50

7、访问sentry

打开浏览器,输入url:http://ipaddress:9000

访问之前可以检查下容器和端口情况:

docker ps看下当前运行的容器:

wKioL1gZqaKiPlY7AAJc5MOnRi0369.png-wh_50

netstat查看端口打开情况:

wKioL1gZqhqAw9TEAAE2XDH4f8g685.png-wh_50

登陆界面,这里会提示你的Root URL,如果不想更改继续下一步即可完成:

wKiom1gZqpGx9hd5AAIpp1e6U8g213.png-wh_50

页面展示:

wKiom1gZqw-zJZg8AADqkoNCxKI808.png-wh_50

至此sentry搭建完成!

补充:

  Sentry目前用户类型有四种: 超级管理员, 管理员,普通用户和System agents. 超级用户只能通过命令行来创建,其他用户可以自己注册或由其他用户邀请注册加入,然后由超级管理员或管理员分配项目和权限。为了更好支持团队协助以及信息安全,新版本Sentry(5.4.2)经过了重新设计,重新设计后的Sentry以Team为中心组织权限。所谓Team就是一个团队,一些用户组织在一起对某些项目有操作权限的组织。一个项目只能属于一个Team, 一个用户却可以属于多个Team, 并可在不同Team中扮演不同角色, 如用户A在Team X是管理员而在Team Y中是System agents. Sentry对用户角色的指定只能到Team级别,不能到Project级别, 所以将某个用户加入到某个Team之后,这个用户就对所有所有属于这个Team下所有project有了相同的权限。

  • 超级管理员: 能创建各种用户, 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操作。

参考链接:

docker安装:https://docs.docker.com/engine/installation/linux/ubuntulinux/

sentry安装:https://docs.sentry.io/server/installation/



      本文转自Jx战壕  51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1868597,如需转载请自行联系原作者




相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4597 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
1518 3
|
开发框架 运维 监控
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
590 5
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
899 1
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
278 2
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
1230 1
|
开发框架 缓存 前端开发
基于SqlSugar的开发框架循序渐进介绍(8)-- 在基类函数封装实现用户操作日志记录
基于SqlSugar的开发框架循序渐进介绍(8)-- 在基类函数封装实现用户操作日志记录
|
存储 缓存 监控
【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现
综上所述,构建一个基于FATFS/Littlefs文件系统的日志框架需要对文件系统的操作有深入理解,并以此为基础设计一套完整的日志处理机制。这样的框架不仅能够确保日志数据的完整性和系统的鲁棒性,同时还能够满足嵌入式系统对于性能和资源使用的严格要求。
757 4
|
Java 数据库连接 数据库
后端框架的学习----mybatis框架(6、日志)
这篇文章介绍了如何在MyBatis框架中使用日志功能,包括配置MyBatis的日志实现、使用log4j作为日志工具,以及如何通过配置文件控制日志级别和输出格式。