0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

vSphere ClientのイベントをCSV出力する方法

Posted at

想定している読者

この記事は以下のような方を想定読者としています。

  • vSphere基盤の開発/運用を行っている方
  • PowerCLIの基本的な使い方を理解されている方
  • イベントの期間指定エクスポートがないバージョンのvSphere基盤を利用されている方(vSphere8.0では高度なエクスポートという機能があり、GUIからでも時間指定でイベント抽出できるようです)
  • vSphereのイベントをGUIで漁るのに辟易されている方

vSphere Clientのイベントとは?

この記事で触れているイベントとは、vSphere Clientから各オブジェクト(クラスタ/ESXiホスト/VM)を選択後、監視>タスクとイベント>イベントから確認できる情報を指しています。
※以下は、VMware HOL(Hands On Lab)の画面です。
image.png

なぜCSV出力したいのか

vSphere ClientのGUIで情報を確認する場合、1ページ内に表示できるイベントの上限数は100件までです。
101件より以前のイベントを確認するには、ページ送りで確認する必要があります。
障害発生の時刻がわかっていれば、その時刻まで振り返ってイベント一覧を確認したいですよね。
その場合、地獄のページ送りを連発して、対象の時刻まで移動する必要があり、非常に大変です。

PowerCLIでイベントを取得する方法

クラスタのイベントを取得する方法(標準出力)

PowerCLI
$cluster = Get-Cluster -Name "クラスタ名"
Get-VIEvent -Entity $cluster -Start 20240401T15:50:20 -Finish 20240402T15:50:20 | ForEach-Object{"{0};{1};{2}"} -f $_.CreatedTime, $_EventTypeId, $_.FullFormattedMessage}

以下のようなエラーが出た場合は、開始時刻と終了時刻をGet-Dateを利用して変数に格納してから、オプションの引数として渡してみましょう。

Get-VIEvent: Cannot bind parameter 'Start'. Cannnot convert Value "20240401T15:50:20" to type "System.DateTime". Error: "String '20240401T15:50:20' was not recognized as a valid DateTime."

以下のように変数格納し、Get-VIEventに渡しましょう。
もっと美しいやり方があるような気もしますが、YYYYMMDD表記でない環境でもうまく動くので、この方法で日付を指定しています。
VMware HOL環境はMMDDYYYY表記ですが、以下の方法でちゃんと動作します。

PowerCLI
$start = Get-Date -Year 2024 -Month 4 -Day 1 -Hour 1 -Minute 50 -Second 20
$finish = Get-Date -Year 2024 -Month 4 -Day 2 -Hour 1 -Minute 50 -Second 20
Get-VIEvent -Entity $cluster -Start $start -Finish $finish | ForEach-Object{"{0};{1};{2}"} -f $_.CreatedTime, $_EventTypeId, $_.FullFormattedMessage}

これでイベント一覧を標準出力することが可能になりました。

クラスタのイベントを取得する方法(CSV出力)

次にCSV出力をするために情報を整形します。
例として、"C\User\Administrator\result.csv"のパスにcsvを出力する場合のコマンド例を記載します。

PowerCLI
Get-VIEvent -Entity $cluster -Start $start -Finish $finish | Select-Object @{Name="CreatedTime"; Expression={$_.CreatedTime}}, @{Name="EventTypeId"; Expression={$_.EventTypeId}}, @{Name="FullFormattedMessage"; Expression={$_.FullFormattedMessage}} | Export-Csv -Path C\User\Administrator\result.csv -NoTypeInformation -Encoding UTF8

ESXiホスト/VMのイベントを取得する方法

利用するコマンドは、クラスタと同じくGet-VIEventです。
Get-VIEventの利用方法を書くのは冗長ですので、差分だけ書きます。

ESXiホストのイベントを取得する方法

Get-VMHostでESXiホストのエンティティを取得し、Get-VIEventに渡します。

PowerCLI
$esxi = Get-VMHost -Name "ESXiホスト名"
Get-VIEvent -Entity $esxi -Start $start -Finish $finish | ForEach-Object{"{0};{1};{2}"} -f $_.CreatedTime, $_EventTypeId, $_.FullFormattedMessage}

VMのイベントを取得する方法

こちらも同じですね。
Get-VMでESXiホストのエンティティを取得し、Get-VIEventに渡します。

PowerCLI
$vm = Get-VM -Name "VM名"
Get-VIEvent -Entity $vm -Start $start -Finish $finish | ForEach-Object{"{0};{1};{2}"} -f $_.CreatedTime, $_EventTypeId, $_.FullFormattedMessage}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?