专栏首页Coding01利用 entry/onpremise 搭建一个 Sentry 异常汇总工具

抱歉,你查看的文章已删除

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

本文 1302字,需要 3.25 分钟

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

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

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

所有异常都由 App\Exceptions\Handler 类处理。 这个类包含两个方法: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 使用心得。

本文分享自微信公众号 - coding01(coding01),作者:喜欢技术和NBA的小树

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 0634-6.2.0-如何在CDH中安装Sentry服务

    3.如果需要配置Sentry高可用,需要准备一个关系型数据库用以保存Sentry的权限信息,而不是一个平面文件(flat file)。

    Fayson
  • 0633-6.2.0-什么是Apache Sentry

    Apache Sentry是Hadoop中的一个基于角色的细粒度授权组件。Sentry可以在Hadoop集群上对通过身份认证的用户和应用程序控制数据访问权限。S...

    Fayson
  • 智能硬件-WIFI模块测试

    客户端:我们在客户端安装所测机器上安装Performance Endpoint,查看客户端IP。

    用户6367961
  • python【第十三篇】可以写一个堡垒机了

    到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是...

    用户1432189
  • django的数据库配置-13

    ENGINE:指定要用的数据库,默认的是python自带的sqlite3,可以更改为

    py3study
  • 你真的了解WiFi吗?

    ALOHANET是一个在夏威夷大学开发的计算机网络系统,也是有史以来首次公开演示的提供无线分组数据网的计算机网络系统。

    鲜枣课堂
  • GeekPwn 2017上海站:主持人黄健翔发短信变身“马路杀手”

    2017年10月24日,GeekPwn2017国际安全极客大赛在上海举办。本次比赛以“解构行动”为主题,来自全球的顶级黑客用“无所不Pwn”的脑洞,为全球安全技...

    安恒信息

扫码关注云+社区

领取腾讯云代金券