vSphere Diagnostic Tool を使ってみる

Share on:

Table of contents

はじめに

今回の記事では vCenter Server の構成やサービスの問題などのチェックが行える VMware Flings のツール「vSphere Diagnostic Tool」を紹介したいと思います。

Tech Preview License のため商用サポートなどはないものの、vCenter Server の様々な項目のサマリーを収集できるため障害調査の初動対応に有用だと思います。現時点では以下の項目がチェックできるようです。

The tool itself is currently a set of self contained python and bash scripts that can perform the following tests for vCenter Server Appliance 6.5 or newer:

  • vCenter Basic Info
  • Lookup Service Check
  • AD Check
  • vCenter Certificate Check
  • Core File Check
  • Disk Check
  • vCenter DNS Check
  • vCenter NTP Check
  • vCenter Port Check
  • Root Account Check
  • vCenter Services Check
  • VCHA Check

今回の記事では実際に vCenter Server に障害を発生させてみて、vSphere Diagnostic Tool でどのような情報が取れるのか見てみたいと思います。

本記事で発生させる障害

vCenter Server ではデータベース領域の使用済み容量が 95% を上回った場合、データベースの破損を防ぐために「データベース健全性アラーム」が vpxd サービスを停止する仕様があります。

本記事ではデータベース領域の容量不足により vpxd サービスが停止した状況を擬似的に再現させてみます。

事前準備

本来であれば大量のタスクやイベントの登録でデータベースが肥大化した状況が望ましいです。しかし、意図的な再現をすぐ行うことが難しいため、簡易的な方法として dd コマンドでダミーのファイルを作り /storage/seat を埋めます。

1# dd if=/dev/zero of=/storage/seat/dummy.bin
2# df -h
3Filesystem                                Size  Used Avail Use% Mounted on
4  ...
5/dev/mapper/seat_vg-seat                  9.8G  9.2G  112M  99% /storage/seat

少し待つとデータベース領域の容量不足で vpxd が停止します。

12022-05-03T13:28:18.273Z info vpxd[14735] [Originator@6876 sub=vpxdVdb] WarningThreshold: 80% ErrorThreshold: 95%.
22022-05-03T13:28:18.273Z error vpxd[14735] [Originator@6876 sub=vpxdVdb] Space used on storage partition of Database exceeds threshold (used: 98%; threshold: 95%). Service-control request will stop vpxd
3  ...
42022-05-03T13:28:19.958Z info vpxd[14582] [Originator@6876 sub=vpxdvpxdSignal] Signal 15 received, exiting
52022-05-03T13:28:19.958Z info vpxd[14582] [Originator@6876 sub=Default] Initiating VMware VirtualCenter shutdown
62022-05-03T13:28:19.959Z info vpxd[14499] [Originator@6876 sub=Default] Shutting down VMware VirtualCenter
7  ...

vSphere Diagnostic Tool を使う

セットアップは簡単で、Flings のページからダウンロードした vdt-v1.1.4.zip を SCP クライアントで VCSA の /root に転送し、unzip で展開します。

1# cd /root
2# unzip vdt-v1.1.4.zip

展開されたディレクトリ内の vdt.py を実行して administrator@vsphere.local のパスワードを入力すると、様々な情報がレポートとして表示されます。健全性チェックの成否はそれぞれ PASS と FAIL で表示されます。

 1# cd vdt-v1.1.4
 2# python vdt.py
 3_________________________
 4   RUNNING PULSE CHECK
 5
 6Today: Tuesday, May 03 14:13:14
 7Version: 1.1.4
 8Log Level: INFO
 9
10Provide password for administrator@vsphere.local:
11________________________
12   VCENTER BASIC INFO
13
14
15BASIC:
16        Current Time: 2022-05-03 14:13:32.678152
17        vCenter Uptime: up 9 days
18        vCenter Load Average: 0.06, 0.06, 0.08
19        Number of CPUs: 2
20        Total Memory: 11.72
21
22  ...
23
242022-05-03T14:13:32 INFO Vdt: Running _vc_dns.sh
252022-05-03T14:13:32 INFO Vdt:
26__________________
27   VC DNS CHECK
28
292022-05-03T14:13:32 INFO Vdt:
30
31  NOTE:  If the script hangs here, it means none of the DNS servers are responding.
32         If this is the case, You should CTRL+C and investigate.
33
34Nameservers
35192.168.0.189
36
37Entries in /etc/hosts
38127.0.0.1  vcsa.jangari.lab vcsa localhost
39::1  vcsa.jangari.lab vcsa localhost ipv6-localhost ipv6-loopback
40
41Non-standard entries in /etc/hosts
42 [PASS] None
43
44
45Basic Port Testing
46 [PASS] Port TCP 53 open to nameserver 192.168.0.189
47
48Nameserver Queries
49192.168.0.189
50 [PASS] DNS with UDP - resolved vcsa.jangari.lab to 192.168.0.101
51 [PASS] Reverse DNS - resolved 192.168.0.101 to vcsa.jangari.lab
52 [PASS] DNS with TCP - resolved vcsa.jangari.lab to 192.168.0.101
53
54 Commands used:
55  dig +short <fqdn> <nameserver>
56  dig +noall +answer -x <ip> <namserver>
57  dig +short +tcp <fqdn> <nameserver>
58
59RESULT: [PASS]
60
61  ...
62
63Report written to /var/log/vmware/vdt/vdt-report-2022-05-03-141314
64Please send feedback / feature requests to project_pulse@vmware.com

レポートは /var/log/vmware/vdt/vdt-report-<日時> にも保存されるので、less などで開いて確認が可能です。

レポートの各種項目を分析してみる

レポート上で FAIL している項目を見てみると、DISK CHECK > DISK CAPACITY で /storage/seat が 99% に達している状況、および上位5つの大きいファイルが確認できます。

 12022-05-03T14:13:36 INFO Vdt: Running vc_disk_space.py
 22022-05-03T14:13:36 INFO Vdt:
 3________________
 4   DISK CHECK
 5
 62022-05-03T14:13:36 INFO Vdt:
 7[FAIL]  DISK CAPACITY
 8        WARNING - disk space on /storage/seat is %99 which is over the threshold of %80 used.  See details:
 9        Directories over 2GB:
10
11        [] /storage/seat 9.11GB
12                Largest Files:
13                - /storage/seat/dummy.bin 8.41GB
14                - /storage/seat/dummy.bin2 245.38MB
15                - /storage/seat/dummy.bin3 192.04MB
16                - /storage/seat/vpostgres/tasktblsp/PG_13_202007201/16408/19992 55.17MB
17                - /storage/seat/vpostgres/tasktblsp/PG_13_202007201/16408/20022 7.05MB
18
19
20[PASS]  INODE USAGE
21
22RESULT: [FAIL]
23Please see KB: https://kb.vmware.com/s/article/1003564

また、VC SERVICES CHECK では vmware-vpxd が停止している状況が確認できます。

 12022-05-03T14:13:38 INFO Vdt: Running vc_services.py
 22022-05-03T14:13:38 INFO Vdt:
 3_______________________
 4   VC SERVICES CHECK
 5
 62022-05-03T14:13:38 INFO _svc_log: Get services status, svcnames=None
 72022-05-03T14:13:40 INFO Vdt:
 8Printing only services that are stopped and should be started.
 9KB: https://kb.vmware.com/s/article/2109887
10
11        [FAIL]  vmware-vpxd IS STOPPED
12
13RESULT: [FAIL]

これらの情報と上述した「データベース健全性アラーム」の仕様から「データベース領域(/storage/seat)の使用率が 95% を超えたため vpxd が停止された」といった状況が推測できます。

また、より詳細な調査にあたって、直近の vpxd.log からサービスが停止時の状況を確認する、vPostgres データベース内で肥大化したテーブルの有無を確認するといったアクションに繋げられます。

なお、今回は問題にはなっていませんが、レポートの vCenter PostgresDB Check からサイズが大きい上位10テーブルを確認することができます。大量のタスクやイベントの登録でデータベースが肥大化している場合はこの辺りの情報から確認できるはずです。

 12022-05-03T14:13:35 INFO Vdt: Running vc_db_check.py
 22022-05-03T14:13:35 INFO Vdt:
 3______________________________
 4   vCenter PostgresDB Check
 5
 62022-05-03T14:13:35 INFO _svc_log: Get services status, svcnames=['vmware-vpostgres']
 72022-05-03T14:13:36 INFO Vdt:
 8Top 10 Largest Tables:
 9
10            tablename           |  size
11  ------------------------------+---------
12   vpx_task                     | 55 MB
13   vpx_proc_log                 | 42 MB
14   pk_vpx_proc_log              | 9448 kB
15   vpxi_root_task_id            | 7216 kB
16   vpxi_task_computeresource_id | 7152 kB
17   vpxi_task_vm_id              | 7128 kB
18   vpxi_task_host_id            | 7072 kB
19   vpxi_parent_task_id          | 7064 kB
20   vpxi_task_datacenter_id      | 7064 kB
21   vpxi_task_start_time         | 7024 kB
22
23Total Postgres Size:
24        229M    /storage/db/vpostgres/
25        279M    /storage/seat/vpostgres/
26        449M    Interpreted by vPostgres

おわりに

今回は vSphere Diagnostic Tool を使って vCenter Server の問題をレポートとして出力、分析してみました。

vCenter Server は実行されるサービスが多く内部構造も複雑なので、慣れていないと障害発生時にどのような観点から調べるべきか判断しづらいところがあります。本ツールを使うと vCenter Server の状態を俯瞰的に見ることが出来るので、初動対応での状況把握に有用だと思います。