Laravel
Laravel アプリ向けのステータスページと稼働監視
Laravel ルート、キュー、スケジューラ、Horizon を監視。CNAME 一つのカスタムドメイン、または API で独自構築。
Laravel のステータスページを公開する 3 つの方法
必要な制御レベルを選択 — ノーコード、ローコード、フルヘッドレス。
ホステッド
Laravel エンドポイントを追加し status.yourdomain.com に CNAME を向けるだけ。5 分で完成。
埋め込みバッジ
SVG の稼働率・ステータスバッジを README やランディングに埋め込み。5 分ごとに自動更新。
この health エンドポイントを Laravel アプリに貼り付けます
コピペして PulseAPI を URL に向けるだけ。健康なら 200、劣化なら 503 を返します。
routes/web.php
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
Route::get('/health', function () {
$checks = [];
try {
DB::select('select 1');
$checks['database'] = 'ok';
} catch (\Throwable $e) {
$checks['database'] = 'fail';
}
try {
Redis::ping();
$checks['cache'] = 'ok';
} catch (\Throwable $e) {
$checks['cache'] = 'fail';
}
$healthy = collect($checks)->every(fn ($v) => $v === 'ok');
return response()->json(
['status' => $healthy ? 'healthy' : 'degraded', ...$checks],
$healthy ? 200 : 503
);
})->withoutMiddleware([
\App\Http\Middleware\VerifyCsrfToken::class,
]);CSRF と認証ミドルウェアをスキップ。部分障害で 503。厳格なスロットルからは除外してください。
Laravel アプリで壊れるもの — それを検知する方法
Horizon キューの滞留
特定キューのバックログは async UX を壊します。キュー深さアサーションで早期検知。
止まるスケジューラジョブ
詰まった cron で請求書が未送信になります。ハートビートエンドポイント + last-run をアサート。
キャッシュ/セッションドライバ障害
Redis の不調で断続的に 500 が発生。/health のキャッシュチェックで検知。
ヘッドレス視点
当社のステータスページが気に入らない? Laravel で自作してください。
当社 API はホステッド UI と同じデータを返します。完全な OpenAPI 仕様書は api.pulseapi.tech/docs.
当社ステータス API を取得し描画する Laravel コントローラ。
use Illuminate\Support\Facades\Http;
class StatusController extends Controller
{
public function index()
{
$data = Http::timeout(5)
->get('https://api.pulseapi.tech/status/acme')
->json();
return view('status', ['data' => $data]);
}
}Laravel 監視 — FAQ
Laravel Forge、Vapor、セルフホストで動作?
すべて動作 — PulseAPI は公開 URL があれば十分です。
Horizon を監視できますか?
はい。Horizon::status() とキュー深さを返すエンドポイントを用意。JSON-path で特定キューをアサート。
Laravel のメンテナンスモードに対応?
はい。`php artisan down` の 503 はインシデントを発火。メンテナンスウィンドウをマークすればデプロイ中のアラートを抑制。
Laravel 内でステータスページを描画?
はい。コントローラから API を呼び Blade ビューへ渡します。