利用 entry/onpremise 搭建一個 Sentry 異常彙總工具

sentry-and-laravel

以前咱們說過利用「釘釘羣」來通知 Laravel 的異常,但咱們發現釘釘的做用更多的是通知咱們有異常了,要跟進異常問題了。php

咱們仍是須要有一個地方,很直觀的來彙總異常和分析異常,總不能每次出現問題咱們都去服務器上看項目的 Log 吧。nginx

在 Laravel 的文檔說明中,推薦使用 Bugsnag 或 Sentry:laravel

全部異常都由 AppExceptionsHandler 類處理。 這個類包含兩個方法:report 和 render。report 方法用於記錄異常或將其發送到外部服務,如 Bugsnag 或 Sentry。默認狀況下,report 方法只是簡單地將異常傳遞給記錄異常的基類。你能夠根據須要來記錄異常。

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

今天咱們推薦 getsentry/onpremise 用於搭建 Sentry 工具,收集項目異常。github

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.web

簡言之,Sentry 是一個日誌平臺,主要分爲客戶端和服務端,客戶端嵌入到咱們的應用程序中,當應用出現異常時,就會向服務端發送異常信息,服務端則將信息記錄到數據庫彙總,並提供 web 方式,方便咱們對異常進行查看和分析,避免於咱們須要登陸本身的服務器後臺去查看生硬的 log 文件。docker

getsentry/onpremise

Official bootstrap for running your own Sentry with Docker.

https://github.com/getsentry/onpremise數據庫

利用 docker 安裝工具,是最好的方式,由於若是以爲不合適,直接 rm,不會影響到咱們的服務器環境。bootstrap

安裝bash

按照 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 使用心得。

相關文章
相關標籤/搜索