本記事では、vCenter のtask,event,performanceデータを削除する手順をご紹介します。
なお、環境はVxRail内のInternal vCSA(postgres SQL)を想定した内容となります。
MS SQL ServerやOracle DBを利用している環境については、記事の最後にあるVMware KB をご参照下さい。
はじめに
vCSA(vCenter Server Appliance)は内部にRDB(リレーショナルデータベース)を保持しており、
vCSAで必要な各種設定/情報を保持しています。
長期稼働していく中、データベースが肥大する事で以下のような問題が発生する場合があります。
・パフォーマンス チャートに最新データが表示されないことがある
・パフォーマンス チャートにギャップがある
・VxRail version アップグレードの過程で、vCSA 更新後のサービス展開において非常に時間が掛かる場合がある
・vCenter サービスが起動してから失敗する場合がある
肥大化の最たる要因はtask,event,performanceデータの増加です。
各ログのローテーション期間はdefaultで以下のように設定されています(VxRail 4.0.xxx/4.5.xxx 共通)。
これらは日数による期間設定のため、お客様の運用状況や環境,一時的な障害の影響 等によっては、
想定以上に増加していく場合があります。
------------------------------------------------------------------------------------------------------------
vCenter Server の タスク情報 :30日
vCenter Server の イベント情報 :30日
vCenter Server の パフォーマンス データ参照期間:1年間(変更不可)
------------------------------------------------------------------------------------------------------------
タスク、イベントそれぞれで期間を変更する際、web clientより[ホーム] >> [インベントリ] 内の
vCenter Serverを選択して以下画面箇所より設定を確認、画面右上の"編集"から設定変更が可能です。
変更内容を反映させるためには、vCSAの再起動を手動で実施した上で
内部的にクリーンアップタスクが実行される事を待つ必要があります。
** vSphere6.0 **
** vSphere6.5 **
本記事の手順を利用する事で、設定変更を加えること無く不要な期間のデータ情報を明示的に削除する事が可能です。
1. [事前準備] vCSAのsnapshot 採取
web clientからvCSAの仮想マシン上で右クリック > "スナップショット" > "スナップショットの作成" を実施します。
名前は日付や作業内容にすることで分かりやすくしておきます。
2. [事前準備] vCSA DBのBackup 採取
ⅰ)VMware KB 2091961 より、バックアップ/リストア 用スクリプト(Linux_Backup_Resotre.zip)をダウンロードしておきます。
zipを解凍して 2つのPython Scriptを確認します。
ⅱ)vCSAへrootでSSHでログイン し、backupスクリプトをターミナルソフトウェアの機能を用いて/tmp配下等へ保存します。
その後、管理サービスを停止した上でスクリプトを実行します。"Backup Completed Successfully"が表示されれば成功です。
**管理サービスの停止
# service-control --stop vmware-vpxd
# service-control --status vmware-vpxd
**backupスクリプトの実行
# chmod 700 /tmp/backup_lin.py
# python /tmp/backup_lin.py -f /tmp/backup_VCDB.bak
**管理サービスの開始
# service-control --start vmware-vpxd
# service-control --status vmware-vpxd
3.削除スクリプトの入手と実行
ⅰ) VMware KB 2110031 より削除スクリプトをダウンロードしておきます。
ⅱ)ESXi、vCenter、PSCのSSH有効化 し、削除スクリプトをターミナルソフトウェアの機能を用いて
/tmp配下等へ保存します。rootユーザーで実行するためにパーミッションを付与しておきます。
# chmod 700 /tmp/2110031_Postgres_task_event_stat.sql
ⅲ) VCDBのログインユーザー名/パスワードを確認の上、削除スクリプトを実行します。
最後にDone at"実行した日付" が表示されてプロンプトが戻ってきたら完了です。
# cat /etc/vmware-vpx/vcdb.properties
# /opt/vmware/vpostgres/current/bin/psql -U vCenter-Server-database-user -v TaskMaxAgeInDays=task-days-v EventMaxAgeInDays=event-days -v StatMaxAgeInDays=stat-days -d database-name -t -q -f download-path/2110031_Postgres_task_event_stat.sql
(例1)
タスクとイベントは削除せずにパフォーマンスデータのみ全削除する
# /opt/vmware/vpostgres/current/bin/psql -U vc -v TaskMaxAgeInDays=-1 -v EventMaxAgeInDays=-1 -v StatMaxAgeInDays=0 -d VCDB -t -q -f /tmp/2110031_Postgres_task_event_stat.sql
(例2)
タスクとイベントは直近10日分を残し、パフォーマンスデータは削除しない。
# /opt/vmware/vpostgres/current/bin/psql -U vc -v TaskMaxAgeInDays=10 -v EventMaxAgeInDays=10 -v StatMaxAgeInDays=-1 -d VCDB -t -q -f /tmp/2110031_Postgres_task_event_stat.sql
削除された各テーブルのレコード数を明示的にチェックしたい場合
作業の前後で以下コマンド実施しておけば、レコード数としてどれだけ削除されたか、確認が可能です。
# /opt/vmware/vpostgres/current/bin/psql -U vc -d VCDB -c "SELECT T2.relname , T2.reltuples FROM pg_stat_user_tables AS T1 INNER JOIN pg_class AS T2 ON T1.relname = T2.relname ORDER BY T2.relname"
それぞれのデータは以下テーブルに保管されています。
|
vpx_task | taskデータ |
vpx_event_* ~ vpx_event_arg_* | eventデータ |
vpx_hist_stat1_* ~ vpx_hist_stat4_* | performanceデータ | |
参考資料:
最新情報が参照できるよう、英語版記事をリンクしています。
- VxRail : vCenterサーバーのtask,event,performanceデータを削除する
https://kb.vmware.com/s/article/2110031
- vCenter Server データベース容量要件の管理 (2078305)
https://kb.vmware.com/s/article/2078305?
- ロールアップ スクリプトの実行に時間がかかる場合に vCenter Server データベースのサイズを削減する
https://kb.vmware.com/articleview?docid=1007453
- vCenter Server データベース増大の発生場所の特定
https://kb.vmware.com/articleview?docid=1028356
- Back up and restore vCenter Server Appliance/vCenter Server 6.0 vPostgres database (2091961)
https://kb.vmware.com/s/article/2091961