Logicky Blog

Logickyの開発ブログです

Laravel ForgeでSentryを設定してみる

SentryでLaravelのログを見られるようにしてみます。この設定をLaravel Forgeで簡単にできるそうです。とりあえずSentryにアカウント登録しまして、そのアカウントをForgeのアカウント設定でリンクすることができます。そうすると、各サイトでSentryの設定ができるようになるようです。

Forgeのサイト設定を確認

サイト設定のSentryというメニューにアクセスすると、下記のようになっていました。環境変数設定やインストール・設定などのコード側の作業の説明のようです。これをやればSentryのログが送信されるのでしょう。お手軽でよいですね。

ここにも詳しい解説がありました。

docs.sentry.io

ちなみに、もうSentry側でもこのような画面が誕生しておりました。

ライブラリのインストール

> composer require sentry/sentry-laravel

bootstrap/app.phpの修正

<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Sentry\Laravel\Integration;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        Integration::handles($exceptions);
    })->create();

sentry:publishの実行

> php artisan sentry:publish --dsn=https://xxxxxxxxxxxxxxxxxxx

config/sentry.phpが作成されました。 あと、sentryのJavascript SDKもインストールされました。 JSでSentryにログを飛ばせるのでしょうか?

環境変数の設定

SENTRY_LARAVEL_DSN=https://xxxxxxxxxxxxxxxxxx

上記は、先程のJavascript SDKインストール時に自動で追加された環境変数に含まれていました。自動で下記が追加されていました。

SENTRY_LARAVEL_DSN=https://xxxxxxxxxxxxxxxxxx
SENTRY_TRACES_SAMPLE_RATE=1.0
VITE_SENTRY_DSN_PUBLIC="${SENTRY_LARAVEL_DSN}"

Sentryの動作確認

> php artisan sentry:test

ローカル環境

ローカル環境でエラーログをSentryに飛ばしたくない場合は、下記のようにする。

SENTRY_LARAVEL_DSN=null

トレースとは??

実際には下記設定はまずいらしい。

SENTRY_TRACES_SAMPLE_RATE=1.0

トレースというのはエラー時のコード実行ステップを細かく記録すること、って感じ?あるいはステップ自体もトレースといいますかね?? まあ何しろそういうことで、1.0というのは100%ということで、可能な限り全部のトレースを記録しようとするので、すぐいっぱいになっちゃうらしい。時間当たりの保存量の上限的なやつでしょうかね。。 こういうのは気を付けないと、大事なログが保存出来ていませんでしたとか、コストが想定より高くなってました、みたいなことになりうるので、気を付けたいと思います。 まあまだ、Sentryの料金表すら見ていませんが。

最適な数値がよく分かりませんが、ChatGPT曰く0.1とかによくするらしいので、とりあえず0.1にしておきたいと思います。