VMware Aria Automation Orchestrator において、ワークフローが大量の監査ログイベントを生成すると、vco-pods がメモリ不足エラーでクラッシュする
search cancel

VMware Aria Automation Orchestrator において、ワークフローが大量の監査ログイベントを生成すると、vco-pods がメモリ不足エラーでクラッシュする

book

Article ID: 425197

calendar_today

Updated On:

Products

VCF Operations/Automation (formerly VMware Aria Suite)

Issue/Introduction

免責事項:これは英文の記事「vco-pods crash with out of memory errors when workflows generate a high number of audit log events in VMware Aria Automation Orchestrator (322687)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。


この問題が発生すると、vco-server-app ポッドが再起動を繰り返す状態になります。以下のいずれか(あるいは両方)の症状が見られる場合、本件に該当すると判断できます。

症状 1:

  • /services-logs/prelude/vco-app/console-logs/vco-server-app.log ファイルに、以下のようなメモリ不足(Out Of Memory)エラーが記録されます。
java.lang.OutOfMemoryError: Java heap space
Dumping heap to /usr/lib/vco/app-server/../app-server/logs/vco_Datestamp_Timestamp_heap_dump.hprof ...
Heap dump file created [########## bytes in #.### secs]
Terminating due to java.lang.OutOfMemoryError: Java heap space.
  • kubectl -n prelude get pods コマンドを使用してポッドの詳細を確認すると、vco ポッドの再起動回数(RESTARTS)が非常に多く表示されます。

  • vco データベースをクエリすると、vmo_clusterauditlog テーブルには、個々のワークフロー実行 ID の監査ログが大量に含まれます。

症状 2:

組み込みの Aria Orchestrator(vRO)を利用している VMware Aria Automation 環境において、vco-app ポッドが継続的に再起動するか、あるいはスタートアッププローブ(Startup probe)に失敗し続けます。これにより、ポッドの再起動ループが止まらなくなり、新しいワークフローを安定して実行できなくなります。

ポッドのイベントを確認するには、以下を実行します。

kubectl describe pod vco-app-###### -n prelude


イベントに次のエラーが表示される場合があります。

Startup probe failed: Get "http://###.###.###.###:8280/vco/api/healthstatus?startupProbe=true": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

Environment

VMware Aria Orchestrator 8.x

Cause

この問題は、ワークフローが異常に大量の監査ログを生成した場合に発生することがあります。

Resolution

本事象に該当するかどうかを確認するには、vCO データベースの vmo_clusterauditlog テーブルをクエリし、大量の監査ログを生成しているワークフロー実行がないかを調査する必要があります。

注意: 以下の手順では、vRO の内部データベースに対して直接 SQL コマンドを実行します。作業を開始する前に、Aria Automation アプライアンスのバックアップまたはスナップショットが正常に取得されていることを必ず確認してください。

環境のバックアップ:

  1. すべての VMware Aria Automation または Orchestrator アプライアンスのバックアップを、全ノードで同時に取得する必要があります。
  2. スナップショットを手動で作成する場合は、最初のノードのスナップショットを開始してから 40 秒以内に、2 番目と 3 番目のノードのスナップショットを開始しなければなりません。
  3. 約 40 秒の枠内で 3 ノードすべてで静止状態に達しなかった場合、ログに次の文字列が記録されます。

    "Freeze synchronization failed" および "Sync failed, making inconsistent snapshot"

  4. すべての vmtoolsd メッセージを抽出するには、いずれかのノードから次のコマンドを実行してください。

    journal ctl --identifier=vmtoolsd

  5. VMware Aria Automation または Orchestrator アプライアンスをバックアップするときは、メモリ内スナップショットを無効にし、静止を有効にします。

確認と解決策: 

  1. Aria Orchestrator アプライアンスに SSH で接続し、root ユーザーでログインします。
  2. vCO データベースに接続するには、以下のコマンドを実行します。

    vracli dev psql vco-db

    確認を求められたら yes と入力します。

  3. ワークフロー実行ごとの監査ログ件数をカウントするには、次の SELECT クエリを実行します。

    SELECT COUNT(eventdata) AS occurrences, eventdata
    FROM vmo_clusterauditlog
    GROUP BY eventdata
    ORDER BY COUNT(eventdata) DESC;

  4. ワークフロー実行 ID のカウント結果が 10,000 件を超えているものがあれば、それらの削除を検討してください。

    DELETE FROM vmo_clusterauditlog
    WHERE eventdata
    IN ('execution-id-1', 'execution-id-2', ...);

    Replace  execution-id-1 や execution-id-2 は、手順 3. で特定した ID に置き換えてください。

メモリ不足エラーが発生しているにもかかわらず、手順 3. のクエリで高い数値が返されない場合は、Aria Orchestrator のデフォルトの Java ヒープメモリを増やすことを検討してください。