第10回 検索システムの安定運用 -- 監視・バックアップ・障害対策の実践

はじめに

検索システムを構築して利用者に提供し始めると、それはもう「止められないシステム」になります。 利用者が日常的に検索に頼るようになると、検索が使えない時間は業務の停滞に直結します。

本記事では、Fess を安定して運用するための監視、バックアップ、障害対策について、実践的なプレイブックとして解説します。

対象読者

  • Fess を本番環境で運用する管理者

  • 検索システムの安定稼働を担保したい方

  • システム運用の基本的な知識がある方

運用の全体像

Fess の安定運用は、以下の3つの柱で構成されます。

  1. 監視: 問題を早期に発見する

  2. バックアップ: データを保全する

  3. 障害対策: 問題発生時に迅速に復旧する

監視

ヘルスチェック

Fess は REST API でヘルスチェックエンドポイントを提供しています。

GET http://localhost:8080/api/v1/health

正常時は HTTP 200 が返ります。 外部の監視ツール(Nagios、Zabbix、Datadog など)からこのエンドポイントを定期的に呼び出すことで、Fess の稼働状態を監視できます。

システム情報の確認

管理画面の [システム情報] から、以下の情報を確認できます。

クロール情報

最後のクロール実行結果(処理ドキュメント数、エラー数など)を確認できます。 クロールが正常に完了しているかの確認に使います。

システム情報

Fess と OpenSearch のバージョン、JVM のメモリ使用量、インデックスのドキュメント数などを確認できます。

監視すべき指標

監視指標と閾値の目安
指標 確認方法 注意すべき状態
Fess プロセス ヘルス API レスポンスなし or HTTP 500
OpenSearch クラスタ クラスタヘルス API ステータスが yellow / red
JVM ヒープ使用率 システム情報 80% 以上が継続
ディスク使用率 OS コマンド 85% 以上
クロール結果 クロール情報 エラー数の急増、処理数の激減
検索レスポンス 検索ログ 応答時間の著しい増加

クロール完了通知

Fess にはエラーログやサーチエンジンの障害検知時に通知を送る機能があります。 Slack や Google Chat の Webhook を設定することで、異常発生を即座に把握できます。

バックアップ

バックアップ対象

Fess 環境のバックアップ対象は、以下の2つに大別されます。

1. 設定データ

クロール設定、ユーザー情報、辞書データなど、管理画面から設定した情報です。 Fess の管理画面の [システム情報] > [バックアップ] から、設定データのバックアップを取得できます。

2. インデックスデータ

クロールで収集したドキュメントのインデックスです。 OpenSearch のスナップショット機能を使ってバックアップします。

バックアップ戦略

バックアップ戦略
対象 頻度 保持期間 方法
設定データ 日次 30世代 Fess バックアップ機能
インデックス 日次 7世代 OpenSearch スナップショット
Docker 構成 変更時 Git 管理 compose.yaml のバージョン管理

設定データのバックアップ自動化

Fess の管理 API を使って、設定データのバックアップを自動化できます。 スケジューラのジョブとして設定するか、外部の cron ジョブとして実行します。

リストア手順

障害発生時のリストア手順を事前に確認しておくことが重要です。

  1. Fess を停止

  2. 設定データのリストア(管理画面またはAPI)

  3. 必要に応じて OpenSearch スナップショットからリストア

  4. Fess を起動

  5. 動作確認

リストア手順は定期的にリハーサルを行い、手順の正確性と所要時間を把握しておきましょう。

障害対策

よくある障害と対処法

Fess が起動しない

  • ログファイル(logs/fess.log)を確認

  • JVM のメモリ不足: -Xmx パラメータを調整

  • ポート競合: 8080 ポートが他のプロセスに使われていないか確認

  • OpenSearch への接続失敗: OpenSearch が起動しているか確認

クロールが失敗する

  • ジョブログ([システム情報] > [ジョブログ])を確認

  • ネットワーク接続: クロール対象への疎通確認

  • 認証エラー: 認証情報(パスワード、トークン)の有効期限を確認

  • 障害 URL の確認: [システム情報] > [障害URL] で詳細を確認

検索が遅い

  • OpenSearch のクラスタ状態を確認(yellow/red の場合は対処が必要)

  • インデックスサイズの確認(肥大化していないか)

  • JVM ヒープの確認(ガベージコレクションが頻発していないか)

  • 同時クロール中の場合、クロール完了後に改善するか確認

検索結果が古い

  • クロールスケジュールの確認(正常に実行されているか)

  • クロール設定の最大アクセス数が不足していないか

  • 対象サイトがクロールをブロックしていないか(robots.txt)

障害 URL の管理

クロール時にアクセスできなかった URL は「障害 URL」として記録されます。 管理画面の [システム情報] > [障害URL] で確認できます。

障害 URL が多い場合は、以下を確認します。

  • 対象サーバーが停止していないか

  • ネットワーク経路に問題がないか

  • 認証情報が有効か

  • クロール間隔が短すぎて対象サーバーに負荷をかけていないか

ログ管理

Fess のログファイルは以下の場所に出力されます。

  • Fess ログ: logs/fess.log (アプリケーションログ)

  • クロール情報: 管理画面の [システム情報] > [クロール情報]

  • ジョブログ: 管理画面の [システム情報] > [ジョブログ]

  • 検索ログ: 管理画面の [システム情報] > [検索ログ]

ログファイルが肥大化しないよう、ログローテーションの設定を確認しておきましょう。

運用チェックリスト

日常的な運用で確認すべき項目をチェックリストとしてまとめます。

日次チェック

  • クロールが正常に完了したか

  • ヘルスチェックが正常か

  • ディスク使用率が閾値以下か

週次チェック

  • 検索ログのゼロヒット率(第8回参照)

  • 失敗 URL の確認と対処

  • バックアップが正常に取得されているか

月次チェック

  • インデックスサイズの推移

  • JVM メモリ使用量のトレンド

  • 辞書の更新(第9回参照)

  • セキュリティパッチの確認

まとめ

本記事では、Fess の安定運用のための監視、バックアップ、障害対策について解説しました。

  • ヘルス API と管理画面による監視

  • 設定データとインデックスデータのバックアップ戦略

  • よくある障害パターンと対処法

  • 日次・週次・月次の運用チェックリスト

「検索が使えて当たり前」を維持するために、予防的な運用体制を整えましょう。

次回は、検索 API を使って既存システムと連携するパターンを扱います。

参考資料