透過使用正確的 Syslog 設定,您可以實現環境的主動監控、縮短停機時間並在伺服器上採取預防性動作。
設定 syslog 時,您需要考慮幾個參數,這些參數會影響記錄檔保留、syslog 傳輸、傳輸長度、錯誤處理以及 SSL 憑證的設定,以確保安全地傳輸 syslog 訊息。以下是對微調 syslog 參數的建議。您可以在ESXi Syslog 選項中查看所有可用參數的說明。
如何指定記錄檔保留
管理影響虛擬機器記錄檔的設定
您可以在 vmx 檔案或 /etc/vmware/config 檔案中設定一些影響虛擬機器記錄檔 vmware.log 的設定。必須關閉虛擬機器電源才能編輯 vmx 檔案,而且所做編輯僅對該虛擬機器生效。如果使用 /etc/vmware/config 檔案,則必須在設定中新增前置詞 "vmx” (例如 vmx.log.keepOld = "20"
),並且所做編輯會影響 ESXi 主機上的所有虛擬機器。
參數 | 說明 | 範例 | 附註 |
---|---|---|---|
logging | 停用所有虛擬機器記錄。 |
預設值為 logging = "TRUE" 。停用虛擬機器記錄:
|
請勿使用此設定,因為停用虛擬機器記錄會導致極難或無法取得對解決虛擬機器問題的支援。如果由於某種原因需要使用此設定,則只能將其放置在虛擬機器的 vmx 檔案中。 |
log.throttleBytesPerSec | 控制何時進行記錄檔節流。當寫入 vmware.log 的速率在很長時間內超過指定的速率時,會進行記錄檔節流。當控制虛擬機器的 VMX 程序中的代碼建立過多記錄訊息時,就會出現這種情況。此設定的預設值為 1 KB/秒。 出現記錄節流時,您會在 vmware.log 檔案中看到 <<< Log Throttled >>>。 |
若要停用記錄節流,請使用
|
記錄檔節流可能會掩蓋診斷受影響虛擬機器存在的問題所需的資訊。如果需要停用記錄節流,請將範例中的行放置在受影響虛擬機器的 vmx 檔案中。在偵錯工作階段結束後移除該行。 |
log.keepOld | 控制要保留的舊 vmware.log 檔案的數目。 |
log.keepOld = "20" |
請勿將此設定的值設定為低於預設值 (10) 的值。如果頻繁修改或移動虛擬機器,請考慮將此設定的值設定為 20 或以上。 |
log.rotateSize | 控制 vmware.log 檔案的最大大小 (以位元組為單位)。 |
若要禁止限制 vmware.log 檔案的最大大小,請使用
|
如果此設定的值低於 100000,可能會導致關鍵記錄訊息遺失並影響虛擬機器效能。在 ESXi 7.x 及更早版本中,此設定的預設值不會對 vmware.log 檔案的大小設定任何限制。在 ESXi 8.x 及更新版本中,此設定的預設值為 2048000。 |
log.fileName | 控制虛擬機器記錄檔的名稱和位置。 |
此設定會將虛擬機器記錄檔的名稱從 vmware.log 變更為 myVMlog。
此設定使用 myVM 作為檔案名稱,將虛擬機器記錄檔導向至其他 VMFS 磁碟區 (vol1) 上的目錄。 |
請勿將記錄檔放在虛擬機器目錄之外,以確保主機支援服務包收集會獲得記錄檔,記錄檔對於偵錯虛擬機器問題至關重要。 |
log.fileLevel | 控制將訊息寫入 vmware.log 的最低層級。每則記錄訊息都有關聯的層級。低於指定設定的層級不會新增至虛擬機器記錄檔。虛擬機器訊息記錄層級為 (按照受到的限制從高到低排序):
|
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 設定相同。 |
如何指定到遠端主機的訊息傳輸
使用 Syslog.global.logHost 設定可定義遠端主機規格。使用逗號 (,) 分隔多個遠端主機規格。設定 Syslog.global.logHost 後,ESXi 主機將開啟並保持與 syslog 收集器的連線,訊息傳輸將立即開始。ESXi 產生 syslog 訊息時,會將其寫入 ESXi 主機上的相應記錄檔,並將該訊息轉送到所有已設定的 syslog 收集器。
以下是 Syslog.global.logHost 遠端主機規格的語法:
protocol://target[:port]
參數 | 說明 | 附註 |
---|---|---|
protocol | 指定網路通訊協定。有效值為 udp、tcp 和 ssl。 | ssl 通訊協定指定了對 syslog 訊息傳輸進行加密。tcp 和 udp 通訊協定不會對傳輸進行加密。
備註: 如果擷取 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 位元組。
設定透過 SSL 傳輸到遠端主機時的憑證考量事項
其他 SSL 傳輸參數
符合安全性憑證需求的ESXi系統可能需要啟用 X509 CRL 檢查。您可以透過將預設值 false 變更為 true 來開啟進階設定 Syslog.global.certificate.strictX509Compliance 和 Syslog.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 重新設定以停止,否則不會停止。
ESXi 使用容量有限且以記憶體為基礎的佇列機制,將 syslog 訊息和稽核記錄傳輸到遠端主機。此機制使 vmsyslogd 服務能夠處理短時間內爆增的訊息或無需捨棄資料即可快速解決的網路連線問題。
當連線問題持續較長時間或傳入資料流持續超過佇列機制允許的限制時,vmsyslogd 服務會捨棄一些 syslog 訊息。
若要最大限度減少此類捨棄,請將 vmsyslogd 記錄檔放置在儲存速度最快的儲存區上,並在端對端頻寬等於或大於 1 GigE 的網路上設定 syslog 收集器。
如果某個應用程式產生的記錄過多,請提交支援服務請求進行分析和更正。
您可以在 syslog 精靈記錄檔中查看有關訊息捨棄的統計資料。
您可以在 /var/run/log/vmsyslogd-dropped.log 中查看捨棄的訊息。此記錄檔具有特定的保留設定,類似於特定於程式的保留參數的設定。捨棄的訊息記錄檔保留參數為 Syslog.global.droppedMsgs.fileRotate 和 Syslog.global.droppedMsgs.fileSize。