VMware ESXiは、他のオペレーティングシステムやソフトウェア製品と同様に、ログファイルを書き込みます。最近のブログ投稿では、最も役立つVMwareログを取り上げましたが、この投稿では構成を拡張します。ESXiをインストールした後、ログファイルはデフォルトの場所に保存されます。ただし、必要に応じてVMwareログの場所を変更できます。このブログ投稿では、コマンドラインおよびグラフィカルユーザーインターフェイス(GUI)でESXiログの場所を変更する方法について説明します。
VMwareログの場所を変更する必要がある理由は?
VMware ESXiログは、デフォルトでESXiホストが再起動すると削除されます。ESXiホストの再起動後にVMware ESXiログが削除されない場合は、スクラッチパーティションから永続ストレージ(データストア上のディレクトリなど)にVMwareログの場所を変更できます。
永続ストレージ(データストアなど)にVMware ESXiを設定してログを保存する最初のアプローチは、永続スクラッチスペースを設定することです。デフォルトでは、ESXiはスクラッチスペースに対してインメモリファイルシステム(tmpfs)を使用しているため、再起動時にログが失われます。しかし、永続スクラッチスペースを使用すると、ログは再起動を超えて保存され、指定されたデータストアに保存されます。
2番目のアプローチは、スクラッチパーティション構成をそのままにして、ログファイルのパスをスクラッチパーティションから永続データストアに変更することです。このアプローチを例に説明します。
ESXiシステムログの場所をESXiコマンドラインおよびVMware vSphere Clientを使用してGUIで変更できます。
ESXiログの場所をコマンドラインで変更する
コマンドラインでESXiログの場所を変更するには、以下の手順を実行します。
- まず、ログを保存したいデータストアを特定します。ログファイルを収容するのに十分な空き容量があることを確認してください。
- SSHを有効にし、ESXiホストに接続します。SSHクライアント(例:PuTTY)を使用して、ESXiホストの管理IPアドレスに接続します。
- 現在のスクラッチ構成とVMwareログの場所を確認します。VMwareログの保存に関する現在の構成を確認するために、以下のコマンドを実行します。
esxcli system syslog config get
スクリーンショットに表示された出力からわかるように、/scratch/logがローカルログ出力です。
- 現在のスクラッチ構成に関する情報を表示するために、以下のコマンドを使用することもできます。
vim-cmd hostsvc/advopt/view ScratchConfig.ConfiguredScratchLocation
- 現在のスクラッチの場所(例:/tmp/scratch)と、メモリを使用しているか特定のパーティションを使用しているかを注意してください。
- データストアにディレクトリを作成します。次のコマンドを使用して、ログを保存するために選択したデータストアにディレクトリを作成します:
mkdir /vmfs/volumes/<datastore_name>/log
<diy5><datastore_name>をデータストアの名前に置き換えます(この場合はdatastore10a)。
この場合、コマンドは次のとおりです:
mkdir /vmfs/volumes/datastore10a/log
-
esxcli system syslog config set --logdir=/vmfs/directory/path --loghost='tcp://hostname:514'
新しい VMware ログの保存場所を設定します。コマンドを使用して、ローカルまたはリモート ESXi ホストのデータストアにディレクトリを設定できます:
esxcli system syslog config set --logdir=/vmfs/volumes/Datastore10a/log
「Logdir must exist and be a directory」のようなエラーが表示された場合、必要なディレクトリがすでに存在する場合は、人間にとって分かりやすいデータストア名の代わりにデータストア(パーティション)UUID を使用してみてください。データストア UUID を確認する最も簡単な方法は、データストアディレクトリに移動することです:
cd /vmfs/volumes/Datastore10a/
現在のディレクトリのパスを確認し、データストア(パーティション)UUID を表示します。この場合、datastore10a の UUID は 609a545a-50d29185-ffbb-000c293004f2 です。
データストア名ではなくデータストア UUID をパスに使用して、新しいログの場所を設定するコマンドを実行します:
esxcli system syslog config set --logdir=/vmfs/volumes/609a545a-50d29185-ffbb-000c293004f2/log
コマンドが正常に実行されました。
- 新しい設定を適用してログを永続的な場所に書き込むために、syslogを再読み込みしてください。これは、データストア上のディレクトリです:
esxcli system syslog reload
ESXi をリロードすると、指定されたデータストア上の指定されたディレクトリにログが保存されます。これにより、ログが再起動を跨いで保持され、ログファイルの永続性と信頼性の高いストレージソリューションが提供されます。
VMware vSphere Client を使用して ESXi ログの場所を変更する
次の手順を実行して、VMware vSphere Client を使用して vCenter GUI で ESXi ログの場所を変更します:
- ホストとクラスター ビューを選択し、ナビゲーションペイン(インターフェースの左側に位置します)で必要な ESXi ホストを選択します。
- 構成 タブをクリックし、構成ペインの システム セクションで 高度なシステム設定 をクリックします。
- Syslog.global.logDir キーを構成するために検索します。このキーは、私たちの場合、ページ 31 にあります。
編集 をクリックして、Syslog.global.logDir キーの値を変更します。
- A new window to edit advanced system settings opens.
デフォルトの /scratch/log 値をデータストア上のディレクトリにするためのカスタム値に変更し、設定を保存するために OK をクリックします。
VMware Host Client で ESXi ログの場所を変更する
vCenter Server を持っていない場合やスタンドアロンの ESXi ホストを使用している場合は、VMware Host Client で ESXi ログの場所を変更できます:
- ESXiホストのIPアドレスをWebブラウザに入力し、VMware Host Clientにログインします。
- ホスト>管理>システム>詳細設定に移動します。
- オプションのリストからSyslog.global.logDirキーを見つけます。
- Syslog.global.logDirキーを選択し、編集オプションをクリックします。
- 適切なフィールドにESXiログの新しい場所の値を入力し、保存をクリックします。
PowerCLIでESXiログの場所を変更する方法
vSphere PowerCLIを使用する場合(これはWindows PowerShellベースのコマンドラインインターフェースです)、次の方法でVMware ESXiホストのログ場所を変更できます。3つのシナリオが考えられます。
スタンドアロンホストでESXiログの場所を変更する
- PowerCLIを開き、管理者資格情報でESXiサーバーにログインします:
Connect-VIServer -Server <ESXiHostIPAddress> -User <Username> -Password <Password>
- PowerCLIで新しいESXiログの場所を設定します:
Set-VMHostAdvancedConfiguration -VMHost <HostNameOrIPAddress> -Name "Syslog.global.logDir" -Value "[<DatastoreName>] <Path>"
<DatastoreName>をログを保存したいデータストアの名前に、<Path>をログの新しいディレクトリパスに置き換えてください。
vCenterなしで複数のESXiホストのESXiログの場所を変更する
vCenterで管理されていない複数のESXiホストがある場合、次の手順を実行してください:
- ESXiホストのリストを準備します。各ホストのIPアドレスまたはホスト名を1行に1つずつリストアップしたテキストファイルを作成します(例:hosts.txt)。
-
$hosts = Get-Content -Path "C:\path\to\hosts.txt"
foreach ($host in $hosts) {
Connect-VIServer -Server $host -User <ユーザー名> -Password <パスワード>
Set-VMHostAdvancedConfiguration -VMHost $host -Name "Syslog.global.logDir" -Value "[<データストア名>] <パス>"
Disconnect-VIServer -Server $host -Confirm:$false
<設定に必要な値を環境とインフラストラクチャに基づいて入力してください。
vCenterを使用して複数のホストのESXiログの場所を変更する場合
ESXiホストがvCenterで管理されている場合、次のようにPowerShellでESXiログの場所を変更できます:
- vCenter ServerにPowerCLIで接続します:
Connect-VIServer -Server <vCenterのホスト名またはIPアドレス> -User <ユーザー名> -Password <パスワード>
- すべてのvCenterで管理されているホストのESXiログ場所を設定します:
Get-VMHost | ForEach-Object {
Set-VMHostAdvancedConfiguration -VMHost $_ -Name "Syslog.global.logDir" -Value "[<DatastoreName>] <Path>"
}
環境の設定に応じて、コマンドを実行する際に必要な値を入力してください。
結論
ESXiログの永続的なストレージの使用により、ESXiの再起動後もこれらのログを保持することができます。ESXiログの場所は、コマンドラインとグラフィカルユーザーインターフェースを使用して変更できます。ESXiホストがvCenter Serverで管理されている場合、VMware vSphere Clientを使用できます。ESXiホストがvCenterで管理されていない場合は、ESXiコマンドラインまたはVMware Host Clientを使用します。大規模な仮想環境を持つ組織は、複数のホストのESXiログをこのサーバーに書き込むための共有データストアを持つログサーバーを構成できます。
Source:
https://www.nakivo.com/blog/change-vmware-esxi-logs-location/