如何在 ESXi 上配置 VMware 日志位置

VMware ESXi 是一种类似于其他操作系统和软件产品的虚拟化程序,会写入日志文件。我们最近在一篇博客文章中介绍了最有用的 VMware 日志,本文将扩展配置内容。安装 ESXi 后,日志文件会存储在默认位置。但是,如果需要,您可以更改 VMware 日志位置。本博客文章将解释如何在命令行和图形用户界面 (GUI) 中更改 ESXi 日志位置。

为什么需要更改 VMware 日志位置?

默认情况下,VMware ESXi 日志在 ESXi 主机重新启动后会被删除。如果您不希望在每次主机重新启动后删除 VMware ESXi 日志,则可以将 ESXi 主机上的 VMware 日志位置从默认临时分区更改为持久性存储,例如数据存储上的目录。

配置 VMware ESXi 将日志存储在持久性存储(如数据存储)上的第一种方法是设置持久性临时空间。默认情况下,ESXi 使用内存文件系统 (tmpfs) 作为临时空间,这意味着在重新启动后日志将丢失。但是,使用持久性临时空间,日志将在重新启动后保留,并存储在指定的数据存储上。

第二种方法是保持临时分区配置不变,但将日志文件存储路径从临时分区更改为持久性数据存储。我们在示例中使用了这种方法。

您可以使用 ESXi 命令行和 VMware vSphere Client GUI 更改 VMware ESXi 系统日志的位置。使用命令行更改 ESXi 日志位置

使用命令行更改ESXi日志位置

按照以下步骤通过命令行更改ESXi日志位置:

  1. 首先,确定您希望存储日志的数据存储。确保数据存储有足够的可用空间来容纳日志文件。
  2. 启用SSH并连接到ESXi主机。使用SSH客户端(例如,PuTTY)连接到ESXi主机的管理IP地址。
  3. 检查当前的临时配置和VMware日志的位置。运行以下命令以检查存储VMware日志的当前配置:

    esxcli system syslog config get

    正如您在截图中显示的输出中所见,/scratch/log是本地日志输出。

  4. 您还可以使用命令查看当前临时配置的信息:

    vim-cmd hostsvc/advopt/view ScratchConfig.ConfiguredScratchLocation

  5. 注意当前的临时存储位置(例如,/tmp/scratch)以及它是使用内存还是特定的分区。
  6. 在数据存储上创建一个目录。使用以下命令在选择的数据存储上创建一个目录,您想要在其中存储日志:

    mkdir /vmfs/volumes/<datastore_name>/log

    用数据存储的名称(在我们的例子中是datastore10a)替换<datastore_name>

    在我们的例子中,命令是:

    mkdir /vmfs/volumes/datastore10a/log

  7. 设置存储 VMware 日志的新位置。您可以使用以下命令在本地或远程 ESXi 主机的数据存储上设置目录:

    esxcli system syslog config set --logdir=/vmfs/directory/path --loghost='tcp://hostname:514'

    我们使用以下命令将最近创建的目录设置为本地 ESXi 主机上的 Datastore10a 中存储 VMware 日志的新位置:

    esxcli system syslog config set --logdir=/vmfs/volumes/Datastore10a/log

    如果出现“日志目录必须存在且为目录”的错误,请确保所需目录已经存在,尝试使用数据存储(分区)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

    命令已成功执行。

  8. 重新加载 syslog 以应用新的设置并开始将日志写入持久位置,该位置是数据存储上的目录:

    esxcli system syslog reload

重新加载后,ESXi 将把其日志存储在指定目录的指定数据存储中。这将确保日志在重新启动时得到保留,并为日志文件提供更加永久和可靠的存储解决方案。

使用 VMware vSphere Client 更改 ESXi 日志位置

执行以下步骤,使用 VMware vSphere Client 在 vCenter GUI 中更改 ESXi 日志位置:

  1. 选择 主机和集群 视图,并在导航窗格中选择所需的 ESXi 主机(位于界面左侧)。
  2. 点击 配置 标签,然后在配置窗格的 系统 部分中点击 高级系统设置
  3. 找到要配置的 Syslog.global.logDir 键。在我们的情况下,此键位于第 31 页。

    点击 编辑 以更改 Syslog.global.logDir 键的值。

  4. A new window to edit advanced system settings opens.

    将默认的 /scratch/log 值更改为可以是您数据存储上的目录的自定义值,然后点击 确定 以保存设置。

在 VMware Host Client 中更改 ESXi 日志位置

如果您没有 vCenter Server 或使用独立的 ESXi 主机,您可以在 VMware Host Client 中更改 ESXi 日志位置:

  1. 在网络浏览器中输入 ESXi 主机的 IP 地址并登录 VMware 主机客户端。
  2. 转到 主机 > 管理 > 系统 > 高级设置
  3. 在选项列表中找到 Syslog.global.logDir 键。
  4. 选择 Syslog.global.logDir 键并点击 编辑 选项。

  5. 在相应字段中输入新的 ESXi 日志位置值,然后点击 保存

如何在 PowerCLI 中更改 ESXi 日志位置

如果您喜欢 vSphere PowerCLI,这是基于 Windows PowerShell 的命令行界面,您可以考虑以下更改 VMware ESXi 主机日志位置的方法。可能有三种情况。

在独立主机上更改 ESXi 日志位置

  1. 打开 PowerCLI 并使用管理员凭据登录到 ESXi 服务器:

    Connect-VIServer -Server <ESXiHostIPAddress> -User <Username> -Password <Password>

  2. 在PowerCLI中设置新的ESXi日志位置:

    Set-VMHostAdvancedConfiguration -VMHost <主机名或IP地址> -Name "Syslog.global.logDir" -Value "[<数据存储名称>] <路径>"

    将<数据存储名称>替换为您想要存储日志的数据存储的名称,将<路径>替换为日志的新目录路径。

更改未由vCenter管理的多个ESXi主机的ESXi日志位置

如果您有多个ESXi主机,但它们未由vCenter管理,请执行以下操作:

  1. 准备ESXi主机列表。创建一个文本文件,每行列出一个主机的IP地址或主机名(例如,hosts.txt)。
  2. 考虑一个设置 ESXi 日志位置的 PowerCLI 脚本示例:

    $hosts = Get-Content -Path "C:\path\to\hosts.txt"

    foreach ($host in $hosts) {

    Connect-VIServer -Server $host -User <User> -Password <Password>

    Set-VMHostAdvancedConfiguration -VMHost $host -Name "Syslog.global.logDir" -Value "[<DatastoreName>] <Path>"

    Disconnect-VIServer -Server $host -Confirm:$false

    }

    根据您的环境和基础设施输入所需的值。

使用 vCenter 更改多个主机的 ESXi 日志位置

如果您的 ESXi 主机由 vCenter 管理,可以按以下步骤在 PowerShell 中更改 ESXi 日志位置:

  1. 连接到 PowerCLI 中的 vCenter Server:

    Connect-VIServer -Server <vCenterHostNameOrIPAddress> -User <User> -Password <Password>

  2. 设置由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/