自建 sentry 并与 spring boot 集成
sentry 是开源的 crash 跟踪解决方案,支持超多语言,比如 nodejs(server + browser),java 后端,Android,ios 等等,基本称得上是全能的 crash 跟踪解决方案。本文主要讲述如何自建 sentry 并与 spring boot 集成。
自建 sentry - self host sentry
本文使用 docker,而且我强烈建议您用 docker,具体步骤如下:
首先,我们生成一个密钥:
docker run --rm sentry config generate-secret-key
现在,我们先后使用 docker 运行 redis、postgres、sentry
这里 将
现在,浏览器打开 http://localhost:8081 即可看到登录页面。
spring boot 集成 sentry
在 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 后 页面崩溃了,可以考虑刷新再进,我遇到过这个问题。
初始化 sentry
在 入口 xxxApplication 类里,即 SpringApplication.run(xxxApplication.class, args); 之前加入:Sentry.init();
捕捉异常,这部分请参考:spring boot 拦截全局异常并通过 webhook 发送到钉钉机器人, 简单的说,你可以在捕捉到异常的时候通过 Sentry.capture(e); 手动上报异常。