Log-Files
rsyslogd 是否在重新啟動時發送新資訊或整個日誌文件
我正在嘗試在 Debian 機器上使用 rsyslog 將日誌數據發送到外部伺服器。
我感興趣的日誌文件有大約 10GB 的歷史數據。
當我開始配置 rsyslog 時,我的印像是它將開始將所有新日誌條目發送到伺服器,但目標伺服器的維護人員告訴我,我已經發送了超過 10GB 的數據。我重新啟動了 rsyslogd 幾次。
我想知道預設情況下它是否從一開始就發送所有日誌而不是新日誌?
這是我的配置文件的樣子
$ModLoad imfile $InputFilePollInterval 10 $PrivDropToGroup adm $WorkDirectory /var/spool/rsyslog #################### # Nginx Access Log # #################### # Input for Nginx Access Log $InputFileName /var/log/nginx/myapp.access.log $InputFileTag nginx-access $InputFileStateFile stat-nginx-access #this must be unique for each file being polled $InputFileSeverity info $InputFilePersistStateInterval 20000 $InputRunFileMonitor # Add a tag for file events $template NginxAccessFormat,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msgid% [SecretKey@41058 tag=\"myapp-nginx-access\"] %msg%\n" # Send to Loggly then discard if $programname == 'nginx-access' then @@server.loggly.com:514;NginxAccessFormat if $programname == 'nginx-access' then ~ ###################### # Nginx Access Error # ###################### # Input for Nginx Error Log #$InputFileName /var/log/nginx/myapp.error.log #$InputFileTag nginx-error #$InputFileStateFile stat-nginx-error #this must be unique for each file being polled #$InputFileSeverity info #$InputFilePersistStateInterval 20000 #$InputRunFileMonitor # Add a tag for file events #$template NginxErrorFormat,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msgid% [SecretKey@41058 tag=\"myapp-nginx-error\"] %msg%\n" # Send to Loggly then discard #if $programname == 'nginx-error' then @@server.loggly.com:514;NginxErrorFormat #if $programname == 'nginx-error' then ~ ############# # PHP Error # ############# # Input for PHP Error Log #$InputFileName /var/log/hhvm/error.log #$InputFileTag php-error #$InputFileStateFile stat-php-error #this must be unique for each file being polled #$InputFileSeverity info #$InputFilePersistStateInterval 20000 #$InputRunFileMonitor # Add a tag for file events #$template PhpErrorFormat,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msgid% [SecretKey@41058 tag=\"myapp-hhvm-error\"] %msg%\n" # Send to Loggly then discard #if $programname == 'php-error' then @@server.loggly.com:514;PhpErrorFormat #if $programname == 'php-error' then ~
這是 rsyslogd 的版本資訊
rsyslogd -v rsyslogd 8.4.2, compiled with: FEATURE_REGEXP: Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes memory allocator: system default Runtime Instrumentation (slow code): No uuid support: Yes Number of Bits in RainerScript integers: 64 See http://www.rsyslog.com for more information.
是的,預設情況下它會從頭開始獲取日誌,儘管它會寫入一個狀態文件來記住它停止的位置。我假設您可以刪除狀態文件,旋轉有問題的文件並重新開始,如果您只想要新日誌。
另外,我建議將 rsyslog 升級到最新的穩定版(現在是 8.14.0),因為自 8.4.2 以來已經添加了許多與 imfile 相關的修復(有關更多詳細資訊,請參閱更改日誌)。