透過使用正確的 Syslog 設定,您可以實現環境的主動監控、縮短停機時間並在伺服器上採取預防性動作。

設定 syslog 時,您需要考慮幾個參數,這些參數會影響記錄檔保留、syslog 傳輸、傳輸長度、錯誤處理以及 SSL 憑證的設定,以確保安全地傳輸 syslog 訊息。以下是對微調 syslog 參數的建議。您可以在ESXi Syslog 選項中查看所有可用參數的說明。

如何指定記錄檔保留

依預設,記錄檔無法擴充到超過設定的大小。記錄檔達到所設定的大小後,系統會將記錄路由到新的記錄檔並刪除最早的記錄檔。
備註: 最佳做法是平衡輪替和大小設定。提高輪替設定可確保產生 syslog 檔案的頻率足以防止其他記錄檔造成任何潛在損毀或破壞。提高大小設定可縮短切換到其他記錄檔的時間。最佳大小設定是 1024 KiB 的倍數。
使用 Syslog.global.defaultSize 設定可指定記錄檔的大小上限 (以 KiB 為單位),使用 Syslog.global.defaultRotate 可設定在輪替到新記錄檔之前要保留的舊記錄檔數目上限。若要變更與特定程式相關聯的記錄檔保留參數,請使用 Syslog.loggers.<progName>.rotate Syslog.loggers.<progName>.size settings,其中 <progName> 是要調整參數的程式的名稱。

管理影響虛擬機器記錄檔的設定

您可以在 vmx 檔案或 /etc/vmware/config 檔案中設定一些影響虛擬機器記錄檔 vmware.log 的設定。必須關閉虛擬機器電源才能編輯 vmx 檔案,而且所做編輯僅對該虛擬機器生效。如果使用 /etc/vmware/config 檔案,則必須在設定中新增前置詞 "vmx” (例如 vmx.log.keepOld = "20"),並且所做編輯會影響 ESXi 主機上的所有虛擬機器。

表 1. vmware.log 檔案的可配置設定
參數 說明 範例 附註
logging

停用所有虛擬機器記錄。

預設值為 logging = "TRUE"

停用虛擬機器記錄:

logging = "FALSE"

請勿使用此設定,因為停用虛擬機器記錄會導致極難或無法取得對解決虛擬機器問題的支援。如果由於某種原因需要使用此設定,則只能將其放置在虛擬機器的 vmx 檔案中。
log.throttleBytesPerSec

控制何時進行記錄檔節流。當寫入 vmware.log 的速率在很長時間內超過指定的速率時,會進行記錄檔節流。當控制虛擬機器的 VMX 程序中的代碼建立過多記錄訊息時,就會出現這種情況。此設定的預設值為 1 KB/秒。

出現記錄節流時,您會在 vmware.log 檔案中看到 <<< Log Throttled >>>

log.throttleBytesPerSec = "1500"

若要停用記錄節流,請使用

log.throttleBytesPerSec = "0xFFFFFFFF"

記錄檔節流可能會掩蓋診斷受影響虛擬機器存在的問題所需的資訊。如果需要停用記錄節流,請將範例中的行放置在受影響虛擬機器的 vmx 檔案中。在偵錯工作階段結束後移除該行。
log.keepOld

控制要保留的舊 vmware.log 檔案的數目。

log.keepOld = "20" 請勿將此設定的值設定為低於預設值 (10) 的值。如果頻繁修改或移動虛擬機器,請考慮將此設定的值設定為 20 或以上。
log.rotateSize

控制 vmware.log 檔案的最大大小 (以位元組為單位)。

log.rotateSize = "2500000"

若要禁止限制 vmware.log 檔案的最大大小,請使用

log.rotateSize = "0"

如果此設定的值低於 100000,可能會導致關鍵記錄訊息遺失並影響虛擬機器效能。在 ESXi 7.x 及更早版本中,此設定的預設值不會對 vmware.log 檔案的大小設定任何限制。在 ESXi 8.x 及更新版本中,此設定的預設值為 2048000。
log.fileName

控制虛擬機器記錄檔的名稱和位置。

log.fileName = "myVMLog"

此設定會將虛擬機器記錄檔的名稱從 vmware.log 變更為 myVMlog

log.fileName = "/vmfs/volumes/vol1/myVM/myVM.log"

此設定使用 myVM 作為檔案名稱,將虛擬機器記錄檔導向至其他 VMFS 磁碟區 (vol1) 上的目錄。

請勿將記錄檔放在虛擬機器目錄之外,以確保主機支援服務包收集會獲得記錄檔,記錄檔對於偵錯虛擬機器問題至關重要。
log.fileLevel

控制將訊息寫入 vmware.log 的最低層級。每則記錄訊息都有關聯的層級。低於指定設定的層級不會新增至虛擬機器記錄檔。虛擬機器訊息記錄層級為 (按照受到的限制從高到低排序):

  • 錯誤
  • 警告
  • 通知
  • 資訊 (預設)
  • 雜項
  • 偵錯
  • debug1
  • debug2
  • debug3
  • debug4
  • debug5
  • debug6
  • debug7
  • debug8
  • debug9
  • debug10
log.fileLevel = "debug1"

請勿將層級設定為比「資訊」受到更高限制的層級,以避免將偵錯虛擬機器問題所需的訊息篩選掉。僅當獲得授權的支援人員請求時,才能設定為「資訊」以下的層級。偵錯結束後,將此設定還原為「資訊」。

log.filter.minLogLevel.<groupName>

控制專用偵錯訊息的輸出。

log.filter.minLogLevel.disklib = "debug5" 僅當獲得授權的支援人員請求時 (應提供一或多個 <groupName> 參數),才能使用此設定。請在偵錯結束後移除此設定。
log.sysogID

允許向 ESXi 主機的系統記錄器 (例如 syslog) 傳送虛擬機器記錄訊息。

log.syslogID = "vmx"

使用 "vmx" 作為此設定的值,以允許 ESXi syslog 精靈 vmsyslogd 將這些訊息傳送至單獨的記錄檔。

log.syslogLevel

控制輸出到 ESXi 主機的系統記錄器 (例如 syslog) 的訊息的最低層級。

log.syslogLevel = "debug" 此設定的層級和功能與 log.fileLevel 設定相同。

如何指定到遠端主機的訊息傳輸

(可選) 可以將 ESXi 設定為將 syslog 訊息傳送到一或多個遠端主機 (稱為 syslog 收集器) 來收集 syslog 訊息,例如傳送到 VMware vRealize Log Insight (先前稱為 vCenter Log Insight)。
備註: 最佳做法是將每個 ESXi 主機設定為將 syslog 訊息傳送到至少一個 syslog 收集器。這有助於確保在發生災難性系統事件時保留訊息,並且您可以透過多種方式處理 Syslog 訊息,例如即時分類和分析 (例如,依類型、時間範圍或機器),或封存訊息。

使用 Syslog.global.logHost 設定可定義遠端主機規格。使用逗號 (,) 分隔多個遠端主機規格。設定 Syslog.global.logHost 後,ESXi 主機將開啟並保持與 syslog 收集器的連線,訊息傳輸將立即開始。ESXi 產生 syslog 訊息時,會將其寫入 ESXi 主機上的相應記錄檔,並將該訊息轉送到所有已設定的 syslog 收集器。

除了 syslog 訊息外,出於安全性目的,還可以將稽核訊息傳輸到 syslog 收集器。稽核記錄會追蹤 ESXi 主機上與安全性相關的活動。如需有關稽核記錄的詳細資訊,請參閱 〈稽核記錄〉
備註: 若要確定是否需要設定稽核記錄以及如何設定,請洽詢貴公司的安全性回應團隊。經認證的組態通常要求啟用稽核記錄。

以下是 Syslog.global.logHost 遠端主機規格的語法:

protocol://target[:port]
參數 說明 附註
protocol 指定網路通訊協定。有效值為 udptcpssl ssl 通訊協定指定了對 syslog 訊息傳輸進行加密。tcpudp 通訊協定不會對傳輸進行加密。
備註: 如果擷取 syslog 訊息或稽核訊息對您的系統來說至關重要,請避免使用 udp 通訊協定,因為 ESXi 外部的網路基礎結構可能會捨棄 UDP 訊息。
target

指定遠端主機。您可以使用 IPv4 或 IPv6 位址或者主機名稱。

使用 IPv6 位址時,必須以方括弧將其括住 ([xxx]),其中 xxx 是 IPv6 位址。
port (可選) 指定要使用的遠端主機連接埠。如果使用 UDP 或 TCP,則預設連接埠為 1514。如果使用 SSL,則預設連接埠為 514。如果選擇使用 514 或 1514 以外的連接埠,則必須調整 ESXi 防火牆以開啟該連接埠。 如需有關如何為每個遠端主機規格中指定的連接埠開啟 ESXi 防火牆的詳細資料,請參閱〈設定 ESXi 防火牆〉
遠端機器規格的取樣:
Syslog.global.logHost 字串範例 附註
tcp://10.176.130.7:12345 使用 TCP/IP 和連接埠 12345 將 syslog 訊息傳輸到 10.176.130.7。
tcp://[2001:db8:85a3:8d3:1319:8a2e:370:7348] 使用連接埠 1514 將 syslog 訊息傳輸到 IPv6 位址。

tcp://[2001:db8:85a3:8d3:1319:8a2e:370:7348]:5432

使用連接埠 54321 將 syslog 訊息傳輸到 IPv6 位址。
udp://company.com 使用 UDP 和連接埠 514 將 syslog 訊息傳輸到 company.com

udp://company.com,tcp://10.20.30.40:1050

將 syslog 訊息傳輸到兩個遠端主機。第一個遠端主機使用 UDP 透過連接埠 514 與 company.com 通訊。第二個遠端主機使用 TCP 透過連接埠 1050 與 IPv4 位址 10.20.30.40 通訊。

ssl://company.com

使用 SSL (TLS) 和連接埠 514 將 syslog 訊息傳輸到 company.com

最大訊息傳輸長度

如果使用 UDP,則 IPv4 的最大 syslog 訊息傳輸長度為 480 位元組,IPv6 的最大傳輸長度為 1180 位元組。

對於 TCP 或 SSL,預設的最大 syslog 訊息傳輸長度為 1 千位二進位位元組 (KiB)。可以使用 Syslog.global.remoteHost.maxMsgLen 參數增加此長度。最大值為 16 KiB。長度超過 16 KiB 的訊息會被截斷。
備註: 如果需要增加最大傳輸長度,最佳做法是僅增加所需長度。
如果ESXi外部的網路和 Syslog 基礎結構無法處理超過 1 KiB 的訊息,則增加 Syslog 訊息長度上限可能會導致問題。
備註: 由於封包長度限制以及外部網路基礎結構可能會捨棄訊息,因此最佳做法是避免使用 UDP 傳輸 syslog 訊息。

設定透過 SSL 傳輸到遠端主機時的憑證考量事項

將 ESXi 設定為使用 SSL 將 syslog 訊息傳輸到遠端主機時,必須將每個遠端主機的 SSL 憑證新增至 ESXi 主機 CA 存放區。如需詳細資訊,請參閱 〈ESXi 主機的憑證管理〉〈使用 ESXCLI 管理 CA 憑證〉
備註: 如需如何設定收集器以使用 SSL 和私密金鑰安全接收 syslog 訊息的資訊,請查閱 syslog 收集器說明文件。

其他 SSL 傳輸參數

符合安全性憑證需求的ESXi系統可能需要啟用 X509 CRL 檢查。您可以透過將預設值 false 變更為 true 來開啟進階設定 Syslog.global.certificate.strictX509ComplianceSyslog.global.certificate.checkCRL。由於實作限制,如果您透過使用 Syslog.global.certificate.checkSSLCerts 設定啟用 CRL 檢查,則憑證鏈結中的所有憑證都必須提供 CRL 連結。依預設,該設定處於啟用狀態。您可以透過變更 false 設定來停用 SSL 憑證檢查,但這不是最佳做法。對與遠端主機的通訊進行疑難排解時,可能需要關閉 SSL 憑證檢查,但僅在有限的時間內關閉此檢查。

Syslog 精靈錯誤和狀態資訊所在的位置

ESXi syslog 精靈使用記錄檔 /var/run/log/vmsyslogd.log 儲存狀態和錯誤資訊,包括捨棄的訊息。如果啟用了稽核記錄傳輸,則 syslog 精靈還會發出與其作業相關的稽核記錄,例如精靈啟動、停止和錯誤情況,從而允許您驗證 syslog 精靈是否正常執行。

如何變更預設 Syslog 記錄檔儲存區域

預設的 syslog 記錄檔儲存區域是每個 ESXi 主機的本機 /var/run/log。可以使用 Syslog.global.logDir syslog 組態變數變更預設的 syslog 記錄檔儲存區域,但前提是該位置位於持續性儲存區上。如果將 Syslog.global.logDir 設定為由多個 ESXi 主機共用以儲存其 syslog 記錄檔的持續性儲存區,請將 Syslog.global.logDirUnique 設定變更為 true 以防止混合記錄。Syslog.global.logDirUnique 設定可確保每個 ESXi 機器新增至 Syslog.global.logDir 路徑時有唯一的名稱,從而與其他主機的記錄檔分開。

遠端主機和訊息捨棄的 Syslog 訊息佇列

Syslog 排放啟動後,除非ESXi重新開機和失敗,或 Syslog 重新設定以停止,否則不會停止。

向遠端主機傳送 Syslog 訊息時,ESXi會使用佇列機制。這有助於避免在遇到並解決網路連線問題時捨棄訊息。但是,如果連線問題的持續時間超過佇列機制容許的時間,則會捨棄 syslog 訊息。您可以在 syslog 精靈記錄檔中查看有關訊息捨棄的統計資料。

您可以在 /var/run/log/vmsyslogd-dropped.log 中查看捨棄的訊息。此記錄檔具有特定的保留設定,類似於特定於程式的保留參數的設定。捨棄的訊息記錄檔保留參數為 Syslog.global.droppedMsgs.fileRotateSyslog.global.droppedMsgs.fileSize