Log-Files

rsyslogd 是否在重新啟動時發送新資訊或整個日誌文件

  • November 9, 2015

我正在嘗試在 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 相關的修復(有關更多詳細資訊,請參閱更改日誌)。

引用自:https://serverfault.com/questions/734527