java

自建 sentry 并与 spring boot 集成

sentry 是开源的 crash 跟踪解决方案,支持超多语言,比如 nodejs(server + browser),java 后端,Android,ios 等等,基本称得上是全能的 crash 跟踪解决方案。本文主要讲述如何自建 sentry 并与 spring boot 集成。

自建 sentry - self host sentry

本文使用 docker,而且我强烈建议您用 docker,具体步骤如下:

1、docker run -d --name sentry-redis redis

2、docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres

3、docker run --rm sentry config generate-secret-key

这步会生成一个秘钥,并保存下来,后面有用

4、docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade

这里 将 <secret-key> 替换为 上步生成的秘钥,下同,同时提示创建用户,你输入 N 即不用创建。

5、docker run -d --name my-sentry -p 8081:9000 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry

6、docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron

7、docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

8、docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry createuser

这个是创建用户。

另外,记得将 <secret-key> 替换为 第三步生成的 密钥。然后 浏览器打开 http://localhost:8081 即可看到登录页面。

spring boot 集成 sentry

1、在 resources 目录下面新建 sentry.properties 内容如下:

dsn=http://a81d4341d7274ad69b320a2465941857@localhost:8081/2
stacktrace.app.packages=top.kpromise.user

这里,记得将 top.kpromise.user 改为 你自己的包名。另外 a81d4341d7274ad69b320a2465941857 是我的应用的公钥,最后的 2 是 项目 id,这些信息你可以通过 打开 sentry 网页版,然后点开你的项目,接着点开项目的设置,左侧菜单找到 Client Keys (DSN) 然后点击它,进去就可以看到 DNS 栏,But,for me, DNS 这栏啥都没有,复制也不起作用,但是有个 Configure 和 disable 按钮,果断点击 Configure,进去后拉到最下面,找到了 公钥 和 私钥,然后也找到了 项目 id,另外,如果你点击 Configure 后 页面崩溃了,可以考虑刷新再进,我遇到过这个问题。

2、初始化 sentry 在 入口 xxxApplication 类里,即 SpringApplication.run(xxxApplication.class, args); 之前加入:Sentry.init();

3、捕捉异常,这部分请参考:spring boot 全局异常拦截 并通过 webhook 发送到 钉钉机器人  简单的说,你可以在捕捉到异常的时候通过  Sentry.capture(e);  手动上报异常。

full-stack-trip

Share
Published by
full-stack-trip
Tags: spring-boot

Recent Posts

Android 自定义 View 入门

说来惭愧,工作数年,连基本的自…

4 年 ago

retrofit 同时支持 xml 和 json

retrofit 解析 jso…

4 年 ago

mysql - 存储过程 从入门到放弃

最近有个报表的需求,于是乎用了…

4 年 ago

奶嘴战略 - 你不得不知道的扎心真相(一)

一句:英雄枯骨无人问,戏子家事…

4 年 ago

acme.sh 的简单使用

acme.sh 是纯 shel…

4 年 ago

wrk -更现代化的http压测工具

wrk 是一款更现代化的 ht…

4 年 ago