Fessのクロール用JVMオプションを改行区切りで設定する

Fessのクロール用メモリを変更するとき、jvm.crawler.optionsへ-Xms128m -Xmx512mのようにスペースで並べると、JVMが起動できない場合があります。この設定は改行で引数を分割するため、Java propertiesの継続行と改行文字を使って記述します。。

既定の全オプションを残して編集する

15.9開発版の既定値には-Xms128m、-Xmx512m、-XX:MaxMetaspaceSize=128mなどが含まれています。jvm.crawler.optionsを上書きすると、ヒープだけでなく他の全オプションも置き換わります。

fess_config.propertiesで既存のjvm.crawler.options全体を探し、ヒープの行だけを書き換えます。次の例は、その中の変更する2行だけの抜粋です。これだけで設定全体を置き換えないでください。

-Xms256m\n\
-Xmx1g\n\

\nは値の中の改行区切り、行末の\はpropertiesファイルで次の物理行へ続ける記号です。1行に1つのJVM引数を記述します。空白区切りだと全体が1引数になり、Invalid initial heap sizeなどのエラーでクロールが開始しません。

メモリ値は例であり、全環境に推奨するサイズではありません。コンテナやホストの上限を確認してください。またFess本体用のFESS_HEAP_SIZEと、別プロセスで動くクローラーの設定を混同しないようにします。

起動失敗を確認する

設定反映後にクロールジョブを実行し、クローラーの起動ログとジョブログで、JVMが起動して実際に処理が進むことを確認してください。古いスペース区切りの例や、必要な既定オプションを消していないかを点検します。

同じ文書修正では、HTTPアクセスの負荷制御・リクエスト制限の診断メッセージがINFOであることも補足されています。Fess本体の既定ログレベルwarnでは表示されないため、調査する場合はFESS_LOG_LEVEL=infoへ変更して再起動するか、対象LoggerをINFOへ設定します。クローラーの既定ジョブはINFOであり、本体と同じログ設定とは限りません。

関連PR

Fessのバックアップ復元で確認したい更新日時・暗号鍵・ログ出力

Fessの開発版に、古いバックアップによる設定の上書きを避ける変更と、クロール用認証パスワードを暗号化して保存する変更が入りました。ログのバックアップが途中で打ち切られた場合の警告も追加されています。サーバー移行では、ファイルを取得できたかだけでなく、復元対象と暗号鍵を確認する必要があります。

更新日時によって復元対象を選ぶ

管理画面のバックアップから.bulkをアップロードした場合、数値のupdatedTimeを持つドキュメントは、保存済みの同じIDが存在しない、保存済みの更新日時がない、またはバックアップの方が新しい場合に書き込まれます。同じ日時や古い内容はスキップします。この動作に新しい有効化設定はありません。

同梱スケジュールジョブのupdatedTimeは15.8と15.9でともに0です。15.8のバックアップを新しい15.9環境へ復元するときも、既にある15.9の標準ジョブを残し、旧Groovy版のジョブへ戻してしまう問題を避けます。利用者が編集したジョブや追加したジョブは、その更新日時と復元先の状態で結果が変わります。

updatedTimeがない、または数値ではないドキュメントは通常どおり取り込みます。また実装上、更新日時の取得・比較で例外が発生した場合も取り込みを続けます。全設定の巻き戻しを防ぐ仕組みや、指定日時への完全復旧を保証する仕組みではありません。スキップの記録はfess.logのINFOレベルなので、ログレベルによっては表示されません。

認証パスワードと暗号鍵を引き継ぐ

Web認証・ファイル認証のpasswordは、保存時にapp.cipher.keyを使って暗号化されます。設定バックアップのfess_basic_config.bulkとfess_config.bulkにも暗号化値が入り、まだ平文で保存されている旧設定もバックアップ出力時に暗号化します。既存の平文設定を一括で書き換える移行処理ではなく、設定を保存し直した時に保存形式が変わります。空のパスワードや既に暗号化された値はそのまま扱います。

移行先では、元のfess_config.propertiesのapp.cipher.keyを安全に引き継いでください。異なる鍵では認証パスワードや暗号化済みクロールパラメーターを復号できず、クロールが失敗します。新しい復号エラーには、設定の種類・IDやパラメーター名と、鍵を確認する案内が入ります。ただし問題の設定だけを自動で隔離してクロールを続ける変更ではありません。

以前の版で作成した平文パスワード入りバックアップも読み込めます。暗号化対象は認証のパスワードなどであり、バックアップ全体ではありません。その他の値は平文で含まれるため、.bulkと暗号鍵の両方を機密情報として管理します。

ログのバックアップはHTTP 200でも完全とは限らない

検索・クリック・お気に入り・チャット・ユーザー情報のログ出力は、CPU負荷が高い状態が続くと途中で打ち切られます。関連する初期値はadaptive.load.control=50、index.backup.log.load.timeout=60000(ミリ秒)です。

今回の変更では、出力名、書き込んだ行数、これらの設定名をWARNで知らせます。ダウンロードのHTTPステータスは200のままで、ファイル形式も変わりません。最終行を書いた直後にも判定するため、警告だけから欠落件数は決められません。

バックアップ後はfess.logを確認し、途中終了の警告があれば低負荷の時間帯に再取得して行数などを確認してください。負荷しきい値や待機時間を変更する場合は、バックアップ処理が検索サービスへ与える負荷も確認します。

移行前に揃えるもの

15.9以降でユーザータグを使う環境では、tag_typeを含むfess_config.bulkも取得します。fess_basic_config.bulkにはユーザータグ、クロール情報、障害URL、ジョブログ、サムネイルキューなどが含まれません。辞書ファイルも管理画面のバックアップとは別に保管してください。

ログの*.ndjsonはダウンロードできますが、管理画面のアップロードによる復元対象ではありません。またインデックス出力のindex.export.exclude.fieldsは開発版でcache,tagが初期値です。用途の異なる設定バックアップ、ログ出力、文書インデックス出力を区別し、試験環境で復元後のジョブと認証付きクロールを確認してから移行します。

関連PR

fess-kopfのナビゲーションや項目名も日本語表示へ

Fessから利用するクラスター管理画面のfess-kopfで、ナビゲーション、表の見出し、入力項目名も表示言語に合わせる変更が入りました。説明文やボタンだけでなく、画面を移動したり設定欄を探したりするときの言葉も日本語で読めるようになります。

翻訳される範囲が広がる

今回、ナビゲーション、フォームのラベル、表の列名、統計項目、チェックボックスの説明、ツールチップなどに101個のメッセージキーを追加しました。英語を含む16ロケールに対応します。

英語の原文は従来の表示を維持しています。既存の画面説明やボタンなどの翻訳に加えて、操作対象を探すための表示も言語をそろえる変更です。クラスターへの接続権限やOpenSearchの動作そのものを変えるものではありません。

表示言語の決まり方

言語選択の仕組みは既存のものを使います。Fess管理画面がリクエストから解決した言語を、ダッシュボードのiframe URLのlangパラメーターでfess-kopfへ渡します。通常はAccept-Languageが元になり、管理画面にbrowser_langを指定した場合はその指定が反映されます。

fess-kopf自体のURLで日本語を明示する指定は?lang=jaです。既存のURLにクエリーがある場合は&lang=jaの形で追加します。Fessの管理経路に含まれるトークンやコンテキストパスは環境ごとに異なるので、実際に開いている画面のURLを基に確認してください。

langがない場合はブラウザーの言語を使い、対応言語に解決できなければ英語へ戻ります。タグが完全一致しなければ言語部分を試し、それでも対応しなければ英語です。例えばja-JPは日本語になり、zhだけでは英語になります。翻訳ファイルの読み込みに失敗した場合も英語で表示を続けます。日本語固定が初期値になったわけではなく、新しい有効化スイッチもありません。

APIの名前は原表記を残す

char_filter、content_length、task_id、search_typeなどのJSONキーや識別子、_cat API名、HTTPメソッド、ノードの役割、ステータス値、OpenSearchやFessなどの製品名は翻訳しません。管理画面とAPI応答を照らし合わせるときに、同じ名前で追えるようにするためです。

画面の日本語化でAPIパラメーターまで日本語になるわけではありません。入力するJSONや手順書の識別子は、引き続きOpenSearchの正式なキーを使います。

利用条件と確認ポイント

変更を含むfess-kopfの配信ファイルが必要です。PRでは_siteも再ビルドされていますが、マージ済みであることと正式配布版への反映は別なので、利用中のFessが同梱する版を確認してください。

更新後は日本語の管理画面からダッシュボードを開き、ナビゲーションや作成画面の項目名が日本語になるかを確認します。英語以外の15言語の追加文言は機械翻訳で、ネイティブ話者による確認はされていません。運用手順に転記する際は実際の表示と意味を確認するとよいと思います。

関連PR