Orada yoksa günlük dosyası oluşturmasını rsyslog'a nasıl söyleyebilirim?


12

Rsyslog tarafından varsayılan davranış, izleri varolan bir günlük dosyasına eklemektir .

Şimdi gördüm (CentOs, Scientific Linux), rsyslog zaten çalışırken, günlük dosyasını (örneğin, uygulamanızdan izleri günlüğe adanmış olan) silerseniz , uygulamanızı çalıştırırsınız, rsyslog bir günlük dosyası oluşturmaz ve hiçbir iz kaydedilmez.

Bir şekilde rsyslog'a izler eklemeden önce bir günlük dosyası oluşturmasını söyleyebilen bir yapılandırma seçeneği var mı?

Not : service rsyslog restartirade yapmak boş bir günlük dosyası oluşturulmasını zorlar.

rsyslog.conf (hiçbir şey eklenmedi)

# rsyslog v5 configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

$SystemLogRateLimitInterval 1
$SystemLogRateLimitBurst 50000

# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf


#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local1.none    /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/lib/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###

.Conf dosyanızı paylaşabilir misiniz?
slm

Yanıtlar:


10

Rsyslog'un POV'sundan silinmiş günlük dosyası hala var. Bunun nedeni, rsyslog'un dosya adına yazmaması, günlük dosyası için açık olduğu dosya tanıtıcısına yazmasıdır.

Unix sistemleri, dosyada açık tutamaçları olan hiçbir işlem kalmayana kadar gerçekten bir dosyayı silmez. Bu, silinen dosya tarafından kullanılan disk alanının, tüm açık dosya tanıtıcıları kapatılana kadar serbest bırakılmadığı anlamına gelir. Ayrıca, silinen dosyaya açık dosya tanıtıcıları olan tüm işlemlerin dosyadan okumaya ve / veya yazmaya devam edebileceği anlamına gelir.

(Örneğin üzerinden bir HUP sinyali gönderme pkill -HUP rsyslogveya /etc/init.d/rsyslog rotatersyslog kadar), tüm açılmış dosyaları kapatmak kendi yapılandırma dosyasını yeniden yükleyin ve (gerekirse bunları oluşturma) yazmak için tüm günlük dosyalarını yeniden açmaya söyler.

Rsyslogd yeniden başlatıldığında da çalışır.

Bunun, bazı yararlı sonuçları olan bir hata değil, bir özellik olduğunu unutmayın - örneğin, rsyslog, döndürüldükten sonra bile (yani yeniden adlandırılmış / mv-ed) aynı günlük dosyasına rsyslog bir HUP sinyali alana kadar yazmaya devam eder. Bu, günlük işleme komut dosyalarının ve yardımcı programlarının zamanlama konusunda titizlikle dikkatli olmaları gerekmediği anlamına gelir - tüm günlükleri döndürebilir, rsyslog'a bir HUP gönderebilir ve her şey günlük verisi kaybı olmadan çalışmaya devam eder.

BTW, bunun rsyslog ile gerçekleşmemesinin tek yolu, her yazma dosyasında her yazmada (veya en azından çağrıldığında sync()) kapatılıp yeniden açılmış olması olacaktır . Performans uçsuz bucaksız olurdu.


Bir kill -HUP to rsyslog'un yeni bir dosyaya yazmaya başlamak için tetikleyip tetiklemeyeceğini biliyor musunuz?
slm

yani rsyslog.conf değiştiyse ve yeni bir günlük dosyası tanımlanmışsa? evet, kesinlikle bir HUP alma üzerine yeni bir dosya oluşturacak ve yazmaya başlayacaktır ... Bu, yapılandırmanın yeniden yüklenmesi noktasının bir parçasıdır.
cas

Tamam, benim 3. yöntemde önerdiğim şey bu, teşekkürler!
slm

Sorun rsyslog, siz (rsyslog başlatmadan) bir uygulama günlük dosyasını silip rsyslog olarak kaydedilir artık iz çalıştıran bir alışkanlık değilse orada Çalışıyorsa iken günlük dosyası oluşturmak ...
fduff

1
Dediğim gibi, rsyslog POV, bu dosya tanıtıcısı hala var. o-ecek değil yakın ve bunu yeniden başlatarak ya da HUP sinyali ile söyleyinceye kadar tekrar açtılar / günlük dosyalarını yeniden oluşturun. rsyslog size söylediklerinizi yapıyor, artık yok. daha da önemlisi, sorun rsyslog'un yaptığı şeyde değil, rsyslog'un davranışını ve neden böyle davrandığını anlamanızdır.
cas

3

$ FileCreateMode

Bu seçenek istediğinizi yapmaz mı , $ FileCreateMode ?

alıntı

$FileCreateMode 0600

This sample lets rsyslog create files with read and write access only for the 
users it runs under.

The following sample is deemed to be a complete rsyslog.conf:

$umask 0000 # make sure nothing interferes with the following definitions
*.* /var/log/file-with-0644-default
$FileCreateMode 0600
*.* /var/log/file-with-0600
$FileCreateMode 0644

*.* /var/log/file-with-0644

Dosya Çıkış Modülü

Rsyslog belgelerine göre, Dosya Çıktı Modülü'nün Dosya bağımsız değişkeni bunu yapmak için kullanılabilir.

alıntı omfile modülü

Dosya

Dosya zaten varsa, dosyaya yeni veriler eklenir. Mevcut veriler kesilmez. Dosya zaten yoksa oluşturulur. Rsyslogd aktif olduğu sürece dosyalar açık tutulur. Bu, harici günlük dosyasının döndürülmesiyle çakışıyor. Döndürmeden sonra bir dosyayı kapatmak için, dosya döndürüldükten sonra rsyslogd'a bir HUP sinyali gönderin.

Syslog'a HUP sinyali gönder

Ben sonuçta bunu yapmak için rsyslog "tetiklemek" gerektiğini düşünüyorum. İstediğini otomatik olarak yapacağını sanmıyorum. Böylece, silindikten sonra günlük dosyasının yeniden oluşturulmasını tetiklemek için bir HUP sinyali verebilirsiniz.

$ sudo pkill -HUP rsyslog

Böylece /var/log/messagesgünlük dosyamda aşağıdaki iletiler oluşturuldu :

Sep 26 15:16:17 grinchy rsyslogd: [origin software="rsyslogd" swVersion="4.6.3" x-pid="1245" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.
Sep 26 15:16:44 grinchy rsyslogd: [origin software="rsyslogd" swVersion="4.6.3" x-pid="1245" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.

Hayır, dosya izinlerini ayarlamak için kullandım ve bu iyi çalışıyor. Sorun günlük dosyası kaldırıldıysa, syslog msg günlüğe kaydetmeden önce dosyayı oluşturmaya çalışmaz olmasıdır.
fduff

Silindi ve sunucu yeniden başlatılmadı mı?
slm

kesinlikle. Bazı testler yapıyorum ve bu
özelliğe

@fduff - güncellemelerimi görün, 3. tanesini deneyin!
slm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.