Logging and alerts
設定可能な重大度レベルに基づいて、Drupalのログメッセージをメールアドレスやウェブサーバーのエラーログに送信する2つのロギングサブモジュールを提供するパッケージです。
logging_alerts
概要
Logging and alertsモジュールは、Drupalのコアログ機能を拡張する包括的なロギングソリューションです。Drupalのwatchdog/ログメッセージを処理するために、個別にまたは組み合わせて使用できる2つの独立したサブモジュールを提供します。
Email Logging and Alertsサブモジュールにより、管理者はログエントリに対するメール通知を受け取ることができ、重大度レベルごとに異なるメールアドレスを設定できます。これは、緊急でない通知は通常のメールに送信しながら、重要なアラートをモバイルデバイスで受信する場合に特に便利です。
Web Server Logging and Alertsサブモジュールは、PHPのerror_log()関数を使用してDrupalのログメッセージをウェブサーバーのエラーログに書き込み、サーバーレベルのログ管理ツールや集中ログシステムとDrupalログの統合を容易にします。
両方のサブモジュールはRFC 5424のログ重大度レベルをサポートしています:Emergency、Alert、Critical、Error、Warning、Notice、Informational、Debug。
Features
- 重大度レベルごとに設定可能な受信者を指定して、Drupalログメッセージのメールアラートを送信
- 異なる重大度レベルを異なるメールアドレスにルーティング(例:重要なアラートはポケベルへ、通知は通常のメールへ)
- メールアラートにオプションのデバッグ情報を含める:$_SERVER、$_ENV、$_REQUEST、$_COOKIE、$_GET、$_POST、$_SESSION、debug_backtrace()
- エラーストーム時のメール氾濫を防ぐため、連続する類似メールアラートを制限
- 重複アラート検出のための類似度しきい値と時間ウィンドウを設定
- 外部ログ管理との統合のため、Drupalログメッセージをウェブサーバーのエラーログに書き込み
- 重大度とログタイプに基づくテンプレートサジェスチョンを備えたTwigテーマシステムによるカスタマイズ可能なメールテンプレート
- hook_emaillog_debug_info_alter()による拡張可能なデバッグ情報
Use Cases
重大エラーのモバイルアラート
Emergency、Alert、Criticalの重大度レベルをモバイル電話のメールまたはSMSゲートウェイに送信するよう設定し、ErrorとWarningレベルは標準のメール受信箱に送信します。これにより、緊急度の低いメッセージで受信箱が溢れることなく、重大な問題の即時通知を確保できます。
開発時のデバッグ
開発中、WarningとErrorレベルに対して$_REQUEST、$_SESSION、debug_backtrace()のデバッグ情報を有効にします。バックトレース置換機能を使用して、スタックトレースのコンテキストを提供しながらメールサイズを管理可能な範囲に保ちます。
集中ログ管理
Web Server Loggingを使用して、すべてのErrorおよびCriticalメッセージをサーバーのエラーログに書き込み、ELKスタック、Splunk、またはクラウドロギングサービスなどのログ集約ツールで収集して集中監視とアラートを行います。
エラーストームの防止
エラー連鎖時の受信箱氾濫を防ぐためにメール送信制限を設定します。最大類似メール数を5、連続期間を5分、類似度を0.9に設定すると、5分間に最大5件の類似アラートしか受信しなくなります。
デュアルログ戦略
両方のサブモジュールを有効にします:EmergencyからErrorレベルにはEmail Loggingを使用して即時通知を受け取り、すべてのレベルにはWeb Server Loggingを使用してフォレンジック分析用の完全なサーバー側ログ記録を維持します。
ログタイプ別のカスタムメールテンプレート
emaillog--error--security.html.twigのようなテーマテンプレートオーバーライドを作成して、重大度レベルとログチャンネルの特定の組み合わせにカスタムフォーマットを提供し、セキュリティ関連アラート用の専用メール形式を有効にします。
Tips
- 異なる重大度レベルに異なるメールアドレスを使用してください - 重要なアラートはポケベルやSMSゲートウェイにルーティングし、緊急度の低いメッセージは共有受信箱に送信します。
- 最小限のデバッグ情報から始めて、必要に応じて追加してください - 過剰なデバッグデータはロギングを遅くし、非常に大きなメールを作成する可能性があります。
- エラーログ形式はログ分析ツールで簡単に解析できるようにパイプ区切りです:SiteName|URL|severity=X|type=X|ip=X|uri=X|referer=X|uid=X|link=X|message=X
- emaillog.html.twigをオーバーライドするか、emaillog--critical.html.twigのようなテンプレートサジェスチョンを使用して、重大度別のフォーマット用にカスタムメールテンプレートを作成してください。
- 両方のサブモジュールを組み合わせて使用してください:即時の人間への通知にはメールを、機械可読なログ集約にはエラーログを使用します。
- develモジュールまたはカスタムコードを使用して設定した重大度レベルでwatchdogメッセージをトリガーし、メール配信をテストしてください。
- 類似度検出はPHPのsimilar_text()関数を使用します - 重複を効果的に防止しながらユニークなエラーを見逃さないよう、特定のメッセージパターンに基づいてしきい値を設定してください。
Technical Details
Admin Pages 2
/admin/config/development/emaillog
異なる重大度レベルでログアラートを受信するためのメールアドレス、含めるオプションのデバッグ情報、類似アラートによるメール氾濫を防ぐ設定を構成します。
/admin/config/development/errorlog
どの重大度レベルをウェブサーバーのエラーログに書き込むかを設定します。
権限 1
Hooks 2
hook_emaillog_debug_info_alter
メールアラートに添付されるデバッグ情報を変更できます。カスタムデバッグ情報の追加や、既存情報の変更・削除に使用できます。
hook_mail (emaillog)
メールアラートメッセージを構築するためにhook_mailを実装します。このモジュールは「alert」キーを使用し、emaillogテーマテンプレートを使用して件名と本文を構築します。
Troubleshooting 5
/admin/config/development/emaillogで該当する重大度レベルにメールアドレスが設定されていることを確認してください。また、サイトのメールシステムが正しく設定されており、/admin/config/system/site-informationでサイトメールアドレスが設定されていることを確認してください。
メール送信制限セクションを設定します:連続類似メールの最大数、メールを連続とみなす期間、類似度しきい値を設定します。例:最大3通、10分ウィンドウ、0.85の類似度。
「debug_backtrace()の引数値を型に置き換える」を有効にしてバックトレースサイズを削減します。デバッグ情報マトリックスで不要なオプションのチェックを外して、含めるデバッグ変数を制限します。
/admin/config/development/errorlogで該当する重大度レベルがチェックされていることを確認してください。PHPとウェブサーバーのエラーログ設定を確認して、error_log()の出力がキャプチャされていることを確認してください。
レガシー設定セクションで「レガシーメール件名を使用」がオフになっていることを確認してください。現在の形式では、件名にログメッセージの短縮版が含まれます。
Security Notes 4
- $_SESSION、$_COOKIE、$_POST、$_REQUESTなどのデバッグ情報には、セッショントークンやフォーム送信などの機密ユーザーデータが含まれる可能性があります - 開発用またはデバッグに絶対必要な場合にのみ有効にしてください。
- メールアラートはプレーンテキストで送信され、暗号化されていないネットワークを通過する可能性があります - 本番システムでは機密性の高いデバッグ情報を含めることを避けてください。
- このモジュールは設定されたメールハンドラーを尊重するDrupalのメールシステムを使用します - 機密ログデータに対してメールバックエンドが適切なセキュリティ(TLS、認証)を提供していることを確認してください。
- エラーログの出力場所と権限を確認して、ログメッセージ内の機密情報が権限のないユーザーに公開されないようにしてください。