
私は nxlog を使用して Windows Server 2008 システム上の 2 つの vCenter ログ ファイルを監視しており、Logstash にメッセージを送信するための非常にシンプルな構成を持っています。昨日、ファイルがローテーションされた後、Nxlog が機能しなくなりました。これが私の構成です:
<Extension syslog>
Module xm_syslog
</Extension>
<Input in1>
Module im_file
File "C:\ProgramData\VMware\VMware VirtualCenter\Logs\vpxd-[0-5][0-9].log"
SavePos TRUE
</Input>
<Input in2>
Module im_file
File "C:\ProgramData\VMware\VMware VirtualCenter\Logs\vpxd-alert-[0-5][0-9].log"
SavePos TRUE
</Input>
<Processor buffer1>
Module pm_buffer
MaxSize 1024
Type Mem
WarnLimit 512
</Processor>
<Processor buffer2>
Module pm_buffer
MaxSize 1024
Type Mem
WarnLimit 512
</Processor>
<Output out1>
Module om_udp
Host <ip>
Port 514
</Output>
<Output out2>
Module om_udp
Host <ip>
Port 514
</Output>
<Route 1>
Path in1 => buffer1 => out1
</Route>
<Route 2>
Path in2 => buffer2 => out2
</Route>
vCenter のログ ローテーションは少し変わっているため、少なくとも部分的にはこれがこの問題の原因になっているのではないかと考えています。私が見ているファイル名の上から確認できます。このファイルは vpxd-01.log として作成され、そこから増加します。ファイルは 50 MB に達するとローテーションされ、2 つの新しいファイルが作成された後に古いログが圧縮されます。たとえば、vpxd-03 が作成され、vpxd-01 が圧縮されます。
しかし、昨日、nxlog が監視を開始した最初のファイル (先週インストールされてから) がローテーションされ、次のエラーが発生しました。
2013-12-28 19:41:08 WARNING input file does not exist: C:\ProgramData\VMware\VMware VirtualCenter\Logs\vpxd-47.log
次の 24 時間で 12 回繰り返され、昨日の朝にサービスを再起動するまで nxlog は完全に失敗しました。
私の説明が意味を成すといいのですが。結局、約 6 時間分のログが失われてしまったので、二度とこのようなことが起こらないようにしたいです。何か解決策や提案はありますか?
答え1
[0-5][0-9]を厳密に定義する代わりに、この入力を使用してみてください。
<Input in2>
Module im_file
File "C:\ProgramData\VMware\VMware VirtualCenter\Logs\vpxd-*.log"
SavePos TRUE
</Input>