概要
Fess には、ERROR や WARN レベルのログイベントを自動的に捕捉し、管理者へ通知する機能があります。 この機能により、システムの異常を迅速に検知し、障害対応を早期に開始できます。
主な特徴:
対応する通知チャネル: メール、Slack、Google Chat
対象プロセス: メインアプリケーション、クローラー、サジェスト生成、サムネイル生成
デフォルト無効: オプトイン方式のため、明示的に有効化する必要があります
仕組み
ログ通知は以下の流れで動作します。
Log4j2 の
LogNotificationAppenderが、設定されたレベル以上のログイベントを捕捉します。捕捉されたイベントはメモリ上のバッファ(最大1,000件)に蓄積されます。
タイマーが 30 秒間隔でバッファ内のイベントを OpenSearch のインデックス(
fess_log.notification_queue)に書き出します。スケジュールジョブが 5 分間隔で OpenSearch からイベントを読み取り、ログレベルごとにグルーピングして通知を送信します。
通知送信後、処理済みのイベントはインデックスから削除されます。
注釈
通知機能自体のログ(LogNotificationHelper、LogNotificationJob など)は、 無限ループを防止するため通知対象から除外されます。
セットアップ
有効化
管理画面からの有効化
管理画面にログインします。
「システム」メニューから「全般」を選択します。
「ログ通知」チェックボックスを有効にします。
「ログ通知レベル」で通知対象のレベルを選択します(
ERROR、WARN、INFO、DEBUG、TRACE)。「更新」ボタンをクリックします。
注釈
デフォルトでは ERROR レベルのみが通知対象です。 WARN を選択すると、WARN と ERROR の両方が通知されます。
システムプロパティによる有効化
管理画面の「全般」設定で保存されるシステムプロパティを直接設定することもできます。
log.notification.enabled=true
fess.log.notification.level=ERROR
通知先の設定
メール通知
メール通知を利用するには、以下の設定が必要です。
メールサーバーの設定(
fess_env.properties):mail.smtp.server.main.host.and.port=smtp.example.com:587
管理画面の「全般」設定で「通知先」にメールアドレスを入力します。複数のアドレスはカンマ区切りで指定できます。
Slack 通知
Slack の Incoming Webhook URL を設定することで、Slack チャネルに通知を送信できます。
Google Chat 通知
Google Chat の Webhook URL を設定することで、Google Chat スペースに通知を送信できます。
設定プロパティ
fess_config.properties で以下のプロパティを設定できます。
注釈
これらのプロパティの変更は Fess の再起動後に反映されます。
通知メッセージの形式
メール通知
メール通知は以下の形式で送信されます。
件名:
[FESS] ERROR Log Alert: hostname
本文:
--- Server Info ---
Host Name: hostname
--- Log Summary ---
Level: ERROR
Total: 5 event(s) in the last 300 seconds
--- Log Details ---
[2025-03-26T10:30:45.123] ERROR org.codelibs.fess.crawler - Connection timeout
[2025-03-26T10:30:46.456] ERROR org.codelibs.fess.app.web - Failed to process request
Note: See the log files for full details.
注釈
ERROR と WARN のイベントはレベルごとに別々の通知として送信されます。
Slack / Google Chat 通知
Slack および Google Chat の通知も同様の内容がメッセージとして送信されます。
運用ガイド
推奨設定
| 環境 | 推奨レベル | 理由 |
|---|---|---|
| 本番環境 | ERROR | 重要なエラーのみ通知し、ノイズを減らす |
| ステージング環境 | WARN | 潜在的な問題も含めて通知 |
| 開発環境 | 無効 | ログファイルを直接確認 |
OpenSearch インデックス
ログ通知機能は、イベントの一時保存に fess_log.notification_queue インデックスを使用します。 このインデックスは機能の初回使用時に自動作成されます。 通知送信後にイベントは削除されるため、通常はインデックスサイズが大きくなることはありません。
トラブルシューティング
通知が送信されない
有効化の確認
管理画面の「全般」設定で「ログ通知」が有効になっているか確認します。
通知先の確認
メール通知の場合、「通知先」にメールアドレスが設定されているか確認します。
メールサーバー設定の確認
fess_env.propertiesでメールサーバーが正しく設定されているか確認します。ログの確認
fess.logで通知関連のエラーメッセージを確認します。grep -i "notification" /var/log/fess/fess.log
通知が多すぎる
ログレベルの引き上げ
通知レベルを
WARNからERRORに変更します。根本原因の対処
頻繁にエラーが発生している場合は、エラーの根本原因を調査してください。
通知内容が切り詰められる
以下のプロパティを調整してください。
log.notification.max.details.length: 詳細部分の最大文字数log.notification.max.display.events: 表示するイベントの最大数log.notification.max.message.length: 各メッセージの最大文字数