利用 entry/onpremise 搭建一个 Sentry 异常汇总工具

本文介绍如何使用Sentry作为异常监控工具,通过详细步骤演示如何在Laravel项目中集成Sentry,实现异常的实时捕捉与分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sentry-and-laravel

之前我们说过利用「钉钉群」来通知 Laravel 的异常,但我们发现钉钉的作用更多的是通知我们有异常了,要跟进异常问题了。

我们还是需要有一个地方,很直观的来汇总异常和分析异常,总不能每次出现问题我们都去服务器上看项目的 Log 吧。

在 Laravel 的文档说明中,推荐使用 Bugsnag 或 Sentry:

所有异常都由 AppExceptionsHandler 类处理。 这个类包含两个方法:report 和 render。report 方法用于记录异常或将其发送到外部服务,如 Bugsnag 或 Sentry。默认情况下,report 方法只是简单地将异常传递给记录异常的基类。你可以根据需要来记录异常。

摘自:https://laravel-china.org/docs/laravel/5.5/errors/1303

今天我们推荐 getsentry/onpremise 用于搭建 Sentry 工具,收集项目异常。

Sentry

Stop hoping your users will report errors

Open-source error tracking that helps developers monitor and fix crashes in real time. Iterate continuously. Boost efficiency. Improve user experience.

简言之,Sentry 是一个日志平台,主要分为客户端和服务端,客户端嵌入到我们的应用程序中,当应用出现异常时,就会向服务端发送异常信息,服务端则将信息记录到数据库汇总,并提供 web 方式,方便我们对异常进行查看和分析,避免于我们需要登录自己的服务器后台去查看生硬的 log 文件。

getsentry/onpremise

Official bootstrap for running your own Sentry with Docker.

https://github.com/getsentry/onpremise

利用 docker 安装工具,是最好的方式,因为如果觉得不合适,直接 rm,不会影响到我们的服务器环境。

安装

按照 README 说明的来就行:

// 1. 下载 docker-compose 安装文件
git clone https://github.com/getsentry/onpremise.git

// 2. 创建 data 文件夹,存储我们的项目文件和数据库
mkdir -p data/{sentry,postgres}

// 3. 创建 secret-key,并把 key 添加到 docker-compose.yml
docker-compose run --rm web config generate-secret-key

// 4. 创建数据库、admin 账号等
docker-compose run --rm web upgrade

// 5. 开启各个服务,后台运行
docker-compose up -d

// 6. 我们可以修改配置文件,或端口等信息

我们把端口改成 9999:9000,接着就是利用 nginx 或者其他服务器工具进行方向代理,配置二级域名,关联到该端口上。

nginx 配置

配置二级域名反向解析到该 9999 端口上,比较简单,直接看:

使用 Sentry

使用 Sentry,主要是创建一个项目,生成一个客户端密钥 (DSN)。

创建项目

当 new 一个项目时,你会发现,Sentry 可以集成的项目语言涵盖很多,如 C#JavaNode.jsLaravel 等等

当然,我们先选择尝试使用 Laravel,创建好后,会出现一篇如何集成到客户端的说明文档:

当然也包含了 DSN。

创建好了项目后,接下来就是看看如何集成到客户端使用了。

Laravel 项目集成

根据文档提示,我们一步步操作,安装插件:

composer require sentry/sentry-laravel

添加代码,捕获异常:

public function report(Exception $exception)
{
    if (app()->bound('sentry') && $this->shouldReport($exception)) {
        app('sentry')->captureException($exception);
    }

    parent::report($exception);
}

添加配置文件

php artisan vendor:publish --provider="Sentry\SentryLaravel\SentryLaravelServiceProvider"

在 env 配置文件上,添加刚才创建的 DNS:

SENTRY_LARAVEL_DSN=http://49bafc29701144f9876a1e263205abfe:63af538009094375ba9109d367fbf61b@yoururl/2

利用 Artisan 测试看看:

php artisan sentry:test

test 发送的 event id 和 Sentry 项目中获取的 event id 一致。

总结

工具的使用就是为了方便我们平时开发使用。有了 Sentry,我们可以将不同项目的异常都放在 Sentry 上去汇总和分析。

不仅仅 Laravel 项目,其他的项目如VUE 的,我们也可以把异常实时推送到 Sentry 上。

至于如何使用好 Sentry,以及使用 Sentry 提供的 API 等。有待于我们的实际生成和开发中,需要去不断熟悉使用了。

以后有时间也会写写 Sentry 使用心得。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值