Sentry的安装、配置、使用教程(Sentry日志手机系统)

目录
  • 前言
  • 安装
  • 配置
  • 使用
  • 项目集成
  • Django项目
  • Flutter项目
  • AspNetCore项目

前言

上一篇文章介绍了ExceptionLess这个日志收集系统:ExceptionLess的安装、配置、使用

由于ExceptionLess官方提供的客户端只有.Net/.NetCore平台和js的,本文继续介绍另一个日志收集系统:Sentry

Sentry 是一个实时事件日志记录和聚合平台。(官方说的是错误监控 Error Monitor)它专门用于监视错误和提取执行适当的事后操作所需的所有信息,而无需使用标准用户反馈循环的任何麻烦。

Sentry使用Python(Django)开发,功能非常丰富,相比起ExceptionLess来说也重得多(这也是我们在.NetCore平台使用ExceptionLess的原因),其支持的平台很全,基本主流编程语言/框架都有,看图

除了.NetCore项目,其他的我都使用Sentry来收集日志和报错信息,整体使用下来还是非常不错的,(就是有点耗内存),请准备好一台内存足够大的服务器,起码8G吧~

安装

和ExceptionLess一样,Sentry也可以在线使用,只需要注册一个账号就行了

不过既然是开源免费的,还是自己部署一套比较自由,速度也比较快(Sentry服务器在国外)

老规矩,使用docker做本地部署,最开始用这玩意的时候安装折腾得很,后来官方自己出了个方便的安装脚本,现在安装应该是很容易了。

首先拉取这个项目到本地:https://github.com/getsentry/self-hosted

然后进入项目目录,执行./install.sh,经过漫长的pull和build,根据提示输入管理员的用户名和密码,就完事了

官方提供的这个方案也是通过docker-compose管理容器的,以后我们也可以通过docker-compose相关的命令来手动启停系统。

跑起来后访问http://ip:9000就可以看到登录界面(端口根据实际配置可能不一样)

用刚才创建的用户名密码登录就行了

配置

Sentry的配置项是真的多,到现在大部分我都还没搞清楚,我只是简单的配置了邮件、端口这些,就可以用得飞起了

接上面的,把官方提供的那个self-host项目clone下来之后,可以看到里面有个sentry文件夹,配置文件就在这目录里。

邮件配置在config.yml文件中,(比ExceptionLess好的一点是邮箱地址终于不需要转义了)

这里以腾讯企业邮箱配置为例,在配置中找到# Mail Server #这个“节点”

mail.backend: 'smtp'  # Use dummy if you want to disable email entirely
mail.host: 'smtp.exmail.qq.com'
mail.port: 465
mail.username: 'demo@demo.com'
mail.password: 'password'
mail.use-tls: false
# mail.use-ssl: false
mail.from: 'demo@demo.com'

这样就可以正常发邮件了~

那么端口要怎么改呢,旧版的onpremise(也就是这个self-host项目)是直接在docker-compose.yml里改的,不过现在不推荐修改这个文件了(官方的这个compose配置文件我甚至看不懂)

现在通过环境变量设置,使用ll -a列出项目目录下所有文件,可以发现有个.env文件,环境变量就在这文件里配置,里面有一行配置端口的

SENTRY_BIND=9000

直接修改就完事了~

使用

Sentry的界面比ExceptionLess的复杂很多,里面的信息也更多,让人看得眼花缭乱

作为日志收集工具的话,主要就是看“问题”页面,可以筛选某个项目,也可以看全部,这点比ExceptionLess直观一些

点击某一个问题进去可以看到错误详情

如果是Python这类动态语言,甚至可以直接看到是哪段代码报错,太方便了

然后性能页面可以细化到每个请求的相应时间、错误频率、访问的用户数量等

然后再点进去某一个URL还能看到访问这个URL的用户的一些信息,包括IP地址,用户名(如果已登录),页面停留时间,用户都是哪些时间段访问啥的,指标太多了,有些不太懂,反正功能是很强的就对了~

大概就这些吧,其他功能我还没有深入,等后续继续学习后再来更新博客。

项目集成

首先可以看官网文档,还是比较全的,而且大部分语言都提供了集成的Demo。

文档地址:https://docs.sentry.io/

一些Demo:https://github.com/getsentry/sentry-dotnet/tree/main/samples

直接上几个项目集成的例子吧

本身在Sentry中创建项目时,系统也会显示一个简单的集成指引,这里把我魔改的代码放上来

Django项目

首先根据指引需要安装一个pip包

pip install sentry-sdk

我习惯将项目配置settings.py放在config包下,然后把拆分出来的配置一个个都列在这个包中,方便管理

config下创建sentry.py,代码如下

import logging
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration
from sentry_sdk.integrations.logging import LoggingIntegration
from sentry_sdk.integrations.redis import RedisIntegration
sentry_logging = LoggingIntegration(
    level=logging.INFO,  # Capture info and above as breadcrumbs
    event_level=logging.ERROR  # Send errors as events
)
sentry_sdk.init(
    # 反正dsn这行无脑复制sentry上显示的就行
    dsn="http://key@sentry地址/id",
    integrations=[DjangoIntegration(), RedisIntegration(), sentry_logging],

    # 这里设置为1代表捕捉100%的transaction 用于性能监控
    traces_sample_rate=1,
    send_default_pii=True,
)

然后在settings.py里引入就完事了

from config import sentry

Flutter项目

根据指引首先要添加依赖

dependencies:
  sentry_flutter: ^5.1.0

PS:现在这个依赖出了6.x版本了,初始化的时候是用异步操作的,我还没更新,就先用5.x版本了

这是原本main.dart中的App初始化代码

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  if (Platform.isAndroid) {
      // 以下两行 设置android状态栏为透明的沉浸。
      SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(statusBarColor: Colors.transparent);
      SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
  }
  Global.init().then((value) => runApp(MyApp()));
}

引入Sentry之后,需要包装一层

import 'package:sentry_flutter/sentry_flutter.dart';
void main() {
  WidgetsFlutterBinding.ensureInitialized();

  SentryFlutter.init(
    (options) {
      options.dsn = 'http://1335793bf7684f21918248b11cebbf9c@sentry.sblt.deali.cn:9800/9';
    },
    appRunner: () {
      if (Platform.isAndroid) {
        SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(statusBarColor: Colors.transparent);
        SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
      }
      Global.init().then((value) => runApp(MyApp()));
    }
  );
}

也就是把原本启动App的代码放在SentryFlutter的appRunner里执行。

AspNetCore项目

虽然AspNetCore项目我们使用ExceptionLess来采集日志,不过在切换到ExceptionLess之前,也用了一段时间的Sentry,Sentry支持的平台那么丰富,在AspNetCore中使用自然也是没问题的。

根据官方指引首先安装依赖

dotnet add package Sentry.AspNetCore -v 3.19.0

然后将sentry的配置写在appsettings.json

"Sentry": {
  "Dsn": "https://examplePublicKey@o0.ingest.sentry.io/0",
  "MaxRequestBodySize": "Always",
  "SendDefaultPii": true,
  "MinimumBreadcrumbLevel": "Debug",
  "MinimumEventLevel": "Warning",
  "AttachStackTrace": true,
  "Debug": true,
  "DiagnosticsLevel": "Error"
}

跟ExceptionLess不同,sentry不用注册服务和添加中间件的方式,而是实现了IWebHostBuilder的扩展方法,在ConfigureWebHostDefaults时就hook到系统中,理论上功能会更强,ExceptionLess通过中间件只能捕捉到类似URL不存在这类HTTP异常,如果是程序中报错是需要手动catch后submit的;而sentry是采用hook的形式(官网说的),可以捕捉到未处理的异常并且上报。(根据微软文档中AspNetCore的启动过程推测出的,理解得不深如果有错误请大佬们指正~)

所以对于AspNetCore3.1项目,修改Program.cs文件,添加一行代码 webBuilder.UseSentry();

public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)
  .ConfigureWebHostDefaults(webBuilder => {
    webBuilder.UseSentry();
    webBuilder.UseStartup<Startup>();
  });

对于AspNetCore6项目,也是Program.cs文件(.Net6也只有这文件)

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseSentry();

搞定,然后sentry就会捕捉异常并提交

也可以手动提交,比如

void Demo([FromServices] IHub sentry) {
  // 提交普通信息
  sentry.CaptureMessage("hello", SentryLevel.Debug);

  try {
    // 会出错的代码
  }
  catch (Exception err) {
      sentry.CaptureException(err);
  }
}

当然根据文档也可以不用依赖注入

using Sentry;
try {
    // 会出错的代码
}
catch (Exception err) {
    SentrySdk.CaptureException(err);
}

OK,先这些吧,其他例子直接看官网就行~

到此这篇关于Sentry的安装、配置、使用的文章就介绍到这了,更多相关Sentry 安装使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Sentry错误日志监控使用方法解析

    无论作为新手还是老手程序员在程序的开发过程中,代码运行时难免会抛出异常,而且项目在部署到测试.生产环境后,我们便不可能像在开发时那样容易的及时发现处理错误了.一般我们都是在错误发生一段时间后,错误信息才会传递到开发人员那里,然后一顿操作查看程序运行的日志,就熟练使用awk和grep去分析日志,但是往往我们会因为日志中缺少上下文关系,导致很难分析真正的错误是什么. Sentry由此应运而生成为了解决这个问题的一个很好的工具,设计了诸多特性帮助开发者更快.更方面.更直观的监控错误信息. 关于日志管理

  • 解析Sentry Relay 二次开发调试

    目录 开发 构建和运行 功能 测试 Linting Python和C-ABI 开发Server SSL 与Sentry一起使用 发布管理 变更日志说明 更多 开发 要构建 Relay,我们需要最新的稳定版 Rust.crate 被拆分为具有多个功能的工作区,因此在运行构建或运行测试时,请始终确保传递 --all 和 --all-features 标志.processing 功能还需要 C 编译器和 CMake. 要安装开发环境,必须安装 librdkafka 并在 path 上. 在 macOS

  • Ubuntu下kaldi安装配置图文教程

    因公司业务需要需使用kaldi语音识别工具,现将kaldi环境配置等步骤列出来,用于记录: 1.安装虚拟机: 下载虚拟机VMware,并安装,虚拟机安装比较简单,可自行百度进行安装,在此不再重复. 2.Ubuntu操作系统安装: 下载Ubuntu镜像文件,本人选择的事Ubuntu16.04版本. 3.在虚拟机上安装Ubuntu系统,该步骤会进行详细说明,如下: 3.1 VMware安装完成之后选择创建新虚拟机 3.2 选择下载好的镜像文件 3.3选择下一步,设置系统名称及密码 3.4 继续点击下

  • Mysql 5.7.17 winx64免安装版,win10环境下安装配置图文教程

    下载地址:http://dev.mysql.com/downloads/file/?id=467269 1.解压到自定义目录:我解压到了D盘的根目录 2.添加一个my.ini文件 配置如下: # 设置mysql客户端默认字符集 default-character-set=utf8 #安装目录 basedir = D:\mysql-5.7.17-winx64 #数据存放目录 data目录是要单独创建的,记得是个空文件夹 datadir =D:\mysql-5.7.17-winx64\data #端

  • python虚拟环境的安装配置图文教程

    使用pip安装     pip install virtualenv 因为已经安装过了,所以显示这样 在这里我想在这里推荐大家以后再安装类库时可以用豆瓣源来安装,速度很快,因为在国内访问 官方pypi源非常慢,pip安装包经常会出错 豆瓣源 我来演示下django的安装 可以看到速度很快 好了回到虚拟环境的安装 virtualenv scrapytest(环境名) 安装好后输入activate.bat进入虚拟环境后输入python查看当前python版本为2.7 退出 退出虚拟环境:输入deac

  • Ubuntu14.04 安装配置Tomcat7教程

    1.下载安装包: http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz 2.解压 sudo tar zxcf apache-tomcat-7.0.75.tar.gz 得到apache-tomcat-7.0.75.tar.gz文件夹 3.改个名字 sudo mv apache-tomcat-7.0.75.tar.gz tomcat 4.放入/usr/loc

  • Mysql5.7.17 winx64.zip解压缩版安装配置图文教程

    1.下载mysql-5.7.17-winx64.zip : 链接: https://pan.baidu.com/s/1tTqT2sn7cEaOwEvrQ-LrHg 密码: i444 2.解压到文件夹(例): 解压到当前文件夹 3.修改配置文件: 打开解压的文件夹(本例的配置文件位置 D:\Development\mysql\mysql-5.7.17-winx64\mysql-5.7.17-winx64\),删除my-default.ini,新建一个my.ini 修改my.ini内容如下: [my

  • Windows 10上JDK环境安装配置图文教程

    Windows10 上的JDK安装配置 1.前往 JDK 官网下载对应 jdk 版本安装包: 下载地址 本文以 jdk-8u161-windows-x64.exe 为例: 2.双击执行安装包程序: 3.选择需要安装的可选功能: 4.开始安装: 5.中间弹窗需要安装 JRE: 6.开始安装 JRE: 7.程序安装完成. 8.环境变量配置: 在"我的电脑"-"属性"-"高级系统设置"-"环境变量"中增加环境变量: 增加如下图所示的

  • Ubuntu Server 16.04下mysql8.0安装配置图文教程

    Ubuntu Server 16.04下mysql8.0安装配置图文教程 1.从Mysql官网上下载安装文件.有两种方式可供选择: 使用APT安装方式安装 使用完整的安装包进行安装 sudo dpkg -i mysql-apt-config_0.8.6-1_all.deb 2.更新系统安装源 sudo apt-get update 3.安装Mysql服务 sudo apt-get install mysql-server 4.修改Mysql Server的字符集 要修改字符集,首先得找到Mysq

  • Ubuntu 18.04下VMware Tools安装配置图文教程

    本文记录了Ubuntu 18.04下VMware Tools安装配置图文教程,供大家参考,具体内容如下 1.打开虚拟机VMware Workstation,启动Ubuntu系统,菜单栏 - 虚拟机 - 安装VMware Tools,不启动Ubuntu系统是无法点击"安装VMware Tools"选项的,如下图: 2.等待几分钟会发现ubuntu桌面多了VMware Tools镜像,点击它,其里面有一个VMwareTools-tar.gz文件 3.接下来我们把VMwareTools-ta

  • Ubuntu16.04 64位下VMware Tools安装配置图文教程

    本文为大家分享了VMware Tools安装配置图文教程,供大家参考,具体内容如下 因为在虚拟机下安装Ubuntu16.04 64位时无法进入全屏模式,采用另外一种方法解决了,但是还是想安装一下VMware Tools,防止以后出现相关问题,好啦,下面进入正题. 1.在虚拟机下会看到安装 VMware Tools,单击安装. 2.在虚拟机设备下出现VMware Tools这一项,点击打开,里面有一个VMwareTools-10.1.6-5214329.tar.gz 3.将这个文件复制到某个目录下

  • Windows下maven安装配置图文教程(包括本地化仓库配置)

    一.下载maven maven官网:http://maven.apache.org/ 下载下来也就是一个压缩文件,解压.我下载的是3.5.2版本,解压之后如下: 路径为 :D:\Program Files\apache-maven-3.5.2 二.配置环境变量 添加自定义变量 :MAVEN_HOME 值为刚才的解压路径:D:\Program Files\apache-maven-3.5.2. MAVEN_OPTS = -Xms128m -Xmx512m (可选) 在path变量末尾加入 ";%M

随机推荐