AEM 6.5 (Formsおよびその他のソリューション)でのGroovy Console監査証跡によって発生するセグメントストアの増加を解決する
AEM 6.5のオンプレミス環境またはAMS環境で、ディスクが急激に急増し、TarMK セグメントストアが急速に成長している場合、高頻度Groovy Console ジョブで/var/groovyconsole/auditの下に大きな監査追跡ノードが作成される可能性があります。 このシナリオはAEM Forms環境で確認されましたが、Groovy コンソールを使用してAEM 6.5 TarMKを設定すると発生する可能性があります。
この記事では、問題のあるジョブを特定し、監査ノードを安全に削除し、セグメントストアでオフラインコンパクションを実行してディスク領域を再利用する方法について説明します。
メモ:このシナリオには、カスタム Groovy Console スクリプトと監査証跡が含まれます。 Groovy Consoleは、サードパーティ製/コミュニティツールであり、標準のAEM製品の一部ではありません。
説明 description
環境
- Adobe Experience Manager(AEM) 6.5 (AEM Formsを含む)
- バージョン:6.5 デプロイメント:オンプレミスまたはAdobe Managed Services(AMS)永続性:Segmentstoreを使用したTarMK
- オペレーティングシステム:LinuxまたはWindows
注意:
- この問題はAEM Forms環境で発生しましたが、Groovy コンソールを使用したAEM 6.5 TarMKのセットアップで発生する可能性があります。
- この手順はAEM as a Cloud Serviceには適用されません。これは、ユーザーがセグメントストアにファイルシステムレベルでアクセスできないためです。
問題/症状
Adobe Experience Manager(AEM) 6.5 Forms オンプレミスまたはAdobe Managed Services(AMS)の本番環境では、ディスク使用量が急激に増加します。 crx-quickstart/repository/segmentstore ディレクトリは数日で急速に成長し、数百ギガバイトに達します。 オンラインでのリビジョンクリーンアップが実行されますが、領域の再利用に失敗します。 最近のデプロイメントや設定の変更では、成長が説明されません。
分析中に、次の症状が観察されます。
crx-quickstart/repository/segmentstoreは数十または数百ギガバイトに急速に成長します。- ディスク使用量は短期間で急増し、多くの場合、週末や時間外に発生します。
- オンラインでのリビジョンクリーンアップは実行されますが、セグメントのストアサイズは大幅に削減されません。
- 成長期間中にアプリケーションのデプロイや設定の変更はありません。
/var/groovyconsole/audit/user/<year>の下に、2分ごとに実行されるGroovy Console スケジュール済みジョブによって作成された多くの監査ノードが存在します。
調査では、数分間隔で実行するようにスケジュールされたカスタム Groovy コンソール ジョブが、ユーザー固有および年固有のパス(/var/groovyconsole/audit/user/<year>など)に大規模な監査追跡エントリを書き込むことが示されています。これらの監査ノードは、リポジトリの肥大化を引き起こし、セグメントストアの成長を促進します。
解決策 resolution
手順1:監査証跡を生成するGroovy Console ジョブを特定
- 影響を受けるAEM Forms インスタンスでCRXDE Liteを開きます。
- 既存のGroovy Console ジョブを格納するノードを参照します(例:
/var/groovyconsole)。 - 2分ごとに実行される
0 0/2 * * * ?などの短間隔cron式を使用して、既存のジョブを探します。
手順については、CRXDE Liteの使用を参照してください。 一般的なジョブノードには、次のようなプロパティが含まれます。
jobTitle = Remove Old File AttachmentscronExpression = 0 0/2 * * * ?(2分ごとに実行)scheduledJobId = <job-id>script = <groovy-script-body>output = <summary-of-job-output>
これらのジョブが監査ログのみを生成し、ビジネスに不可欠なコンテンツを生成しない場合は、監査ノードを安全にクリーンアップし、スケジュールを調整または削除して、さらなる急成長を防ぐことができます。 手順については、AEM 6の監査ログメンテナンスを参照してください。
手順2: Groovy コンソール監査ノードのクリーンアップ
リポジトリーのサイズを小さくするには、/var/groovyconsole/audit/user/<year>の下にある累積監査ノードを削除します。 新しいスケジュール済みジョブではなく、オンデマンドのGroovy コンソールスクリプトを使用して、これ以上の成長を避けます。
重要:実稼動システムでは、Groovy Consoleを慎重に使用してください。 まず下位環境でスクリプトをテストし、ターゲット パスを検証して、適切な変更管理手順に従って実行します。 手順については、AEM 6の監査ログメンテナンスを参照してください。
このシナリオでは、成長は、ユーザー固有および年固有のパスの下にあるGroovy Console監査追跡ノードから得られます。例:
/var/groovyconsole/audit/user/<year>
このパスには、Groovy コンソールのジョブの監査データのみが含まれており、安全に削除できます。 パスの年セグメントを環境に合わせて調整します。
Groovy コンソールスクリプトの例:
import javax.jcr.Session
// Adjust this path to the correct audit root for your environment.
// Example: "/var/groovyconsole/audit/user/<year>"
def path = "/var/groovyconsole/audit/user/<year>"
Session s = session // Groovy Console injects a live JCR session
if (s.nodeExists(path)) {
s.getNode(path).remove()
s.save()
println "Removed audit nodes under " + path
} else {
println "No audit nodes to remove at " + path
}
/var/groovyconsole/audit/user/<year>の下のノードを削除するのに十分な権限を持つユーザーアカウントで、実稼動環境でスクリプトを1回実行します。 多くの環境では、これは管理ユーザーまたはサービスユーザーですが、正確な権限は内部セキュリティモデルによって異なります。
スクリプトが完了したら、CRXDE Liteで監査ノードが削除されていることを確認し、Groovy コンソールジョブが実行されなくなったか、より少ないアグレッシブなスケジュールと最小限のログで実行されていることを確認します。
手順3:オフラインのコンパクションのためのダウンタイムとバックアップのスケジュール
- 営業時間外にメンテナンスウィンドウを計画する:
- 必要に応じて、メンテナンスページを表示するか、既存の操作手順を使用して、ユーザーアクセスをブロックします。
- 続行する前に、インスタンス (AEM インストールディレクトリとデータストアを含む)の完全バックアップを作成します。 オフラインコンパクションは、ディスク上のリポジトリを変更し、簡単に元に戻すことはできません。 手順については、 バックアップ を参照してください。
- AEM Forms インスタンスを完全に停止します。
ステップ 4: セグメント ストアでオフライン リビジョン コンパクションを実行する
手順については、 リビジョンクリーンアップ を参照してください。 AEM 6.5 サービスパックレベルと互換性のあるoak-run バージョンを使用します。 現在のセグメントストアサイズの少なくとも2倍が空きディスク容量として利用可能であることを確認します。 インスタンスをホストしているサーバーのAEM インストールディレクトリから次のコマンドを実行します。
java -Xmx16g -jar oak-run-1.22.21.jar compact ./crx-quickstart/repository/segmentstore
正常に完了するまでプロセスを監視します。 コンパクションを中断しないでください。 これにより、リポジトリが破損する可能性があります。
手順5: AEMを再起動して検証
- コンパクションの完了後にAEM Forms インスタンスを開始します。
- ダウンタイム中に使用されるメンテナンスページまたはロードバランサールールを削除します。
- すべてのForms機能が期待どおりに動作することを確認します(オーサリング、送信、処理、統合)。
crx-quickstart/repository/segmentstoreのサイズとディスク使用量を確認して、サイズが期待されるレベルに減少したことを確認します。
予防とベストプラクティス
- 本番環境でのGroovy Consoleの高頻度なジョブを避けます。 スケジュールされたジョブは控えめに、必要な場合にのみ使用します。
- Groovy Consoleやその他のツールの監査ログを適切なレベルで保持し、監査データを定期的にパージします。
segmentstoreのサイズとディスク使用量を監視します。 使用状況が定義されたしきい値に近づいたときにアラートを設定します。- Adobeの推奨事項に従ってオンラインでのリビジョンクリーンアップを実行し、特に大規模なクリーンアップの後、必要に応じて定期的にオフラインコンパクションを実行します。
- 大量の監査データを生成するカスタムスクリプトの代わりに、組み込みのメンテナンスタスクとサポートされるAPIを可能な限り使用します。
メモ
crx-quickstart/repository/segmentstoreから手動でファイルを削除しないでください。 直接ファイルを削除すると、リポジトリが破損し、データが失われる可能性があります。- オンラインでのリビジョンのクリーンアップによってセグメントストアのサイズが減少せず、セグメントストアの拡大が続く場合は、最近のカスタムジョブ、スクリプト、一括操作を確認して、書き込みアクティビティのソースを特定します。
- リポジトリの正常性に疑問がある場合は、最初にOakのドキュメントに記載されている一貫性と
checkツールを環境のクローンで使用し、その後に同じ手順を実稼動に適用します。