Bir sunucunun FQDN'sini kısa ana bilgisayar adı yerine günlüğe kaydetmesi için rsyslogd'u nasıl edinebilirim?


22

Ubuntu 10.04 LTS üzerinde hisse senedi rsyslogd (4.2.0-2ubuntu8.1) kullanarak basit bir merkezi syslog sunucusu uygulamaya çalışıyorum. Bu noktada tüm istemci düğümlerim merkezi sunucuya günlükler gönderiyor, ancak istemciler FQDN yerine kısa ana bilgisayar adlarını içeren günlük iletileri gönderiyorlar.

Ubuntu rsyslogd kılavuzuna göre:

Uzak ana bilgisayar ana bilgisayarla aynı etki alanında bulunuyorsa, rsyslogd çalışıyorsa, tüm fqdn yerine yalnızca basit ana bilgisayar adı günlüğe kaydedilir.

Örneğin, core1.example.com ve core1.stg.example.com gibi ortamlar arasındaki kısa adları yeniden kullandığım için bu benim için sorunlu.

Hem istemci hem de sunucu aynı / etc / default / rsyslog dosyasına sahiptir:

RSYSLOGD_OPTIONS="-c4"

ve aynı /etc/rsyslogd.conf dosyası:

$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf

İstemciler bu /etc/rsyslog.d/remote.conf dosyasına sahiptir ve uzak sunucuya göndermelerini söyler:

*.* @@syslog.example.com

ve sunucu bu /etc/rsyslog.d/server.conf dosyasını kullanır:

$ModLoad imtcp
$InputTCPServerRun 514
$DirGroup root
$DirCreateMode 0755
$FileGroup root
$template PerHostAuth,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/auth.log"
$template PerHostCron,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/cron.log"
$template PerHostSyslog,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/syslog"
$template PerHostDaemon,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/daemon.log"
$template PerHostKern,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/kern.log"
$template PerHostLpr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/lpr.log"
$template PerHostUser,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/user.log"
$template PerHostMail,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.log"
$template PerHostMailInfo,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.info"
$template PerHostMailWarn,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.warn"
$template PerHostMailErr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.err"
$template PerHostNewsCrit,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.crit"
$template PerHostNewsErr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.err"
$template PerHostNewsNotice,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.notice"
$template PerHostDebug,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/debug"
$template PerHostMessages,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages"
auth,authpriv.*         ?PerHostAuth
*.*;auth,authpriv.none  -?PerHostSyslog
cron.*                  ?PerHostCron
daemon.*                -?PerHostDaemon
kern.*                  -?PerHostKern
lpr.*                   -?PerHostLpr
mail.*                  -?PerHostMail
user.*                  -?PerHostUser
mail.info               -?PerHostMailInfo
mail.warn               ?PerHostMailWarn
mail.err                ?PerHostMailErr
news.crit               ?PerHostNewsCrit
news.err                ?PerHostNewsErr
news.notice             -?PerHostNewsNotice
*.=debug;\
   auth,authpriv.none;\
   news.none;mail.none   -?PerHostDebug
   *.=info;*.=notice;*.=warn;\
      auth,authpriv.none;\
      cron,daemon.none;\
      mail,news.none        -?PerHostMessages

Hem istemci hem de sunucu "$ PreserveFQDN açık" belirten bir yapılandırmayı paylaştığından, syslog iletilerinde FQDN ana bilgisayar adlarını görmeyi bekliyorum, ancak ayarın bir etkisi olmamış gibi görünüyor. Rsyslog için bulduğum diğer çoğu ayar, alan adlarını FQDN'lerden korumak yerine sıyırmayı amaçlıyor. Sorunun kökeninin, müşterilerimin FQDN'yi ilk etapta göndermemeleri olduğunu düşünüyorum, ancak bu davranışı nasıl zorlayacağımı göremiyorum.

Neler eksik olabileceğime kimse yorum yapabilir mi? Günlük iletilerine dahil edilecek FQDN'lere ihtiyaç duyan tek kişi ben olmadığımı düşünüyorum.


Daha sonra sunucumda ve istemci düğümlerimin bir alt kümesinde Ubuntu 11.04'ten rsyslog 4.6.4-2ubuntu4 paketini oluşturdum ve yükledim, ancak sonuç olarak bu davranışta bir değişiklik gözlemlemedim.
cwjohnston

Yanıtlar:


38

Ben de bu sorunla karşılaştım. İşte nasıl düzeltebiliyordum.

  1. İstemcilerde / etc / hosts dosyasını, istenen ana makine adı localhost'tan önce gelecek şekilde değiştirin.

    127.0.0.1 hosthostforlogs localhost

  2. İstemciler ve sunucuda /etc/rsyslog.conf dosyasını bu ifadeyi içerecek şekilde değiştirin:

    $ PreserveFQDN açık

  3. Sunucuda rsyslog.conf şablonlar için% HOSTNAME% değişkenini kullandım:


1
Bu cevap olarak işaretlenmelidir
ErJab

1
Lütfen yukarıdakileri cevap olarak işaretleyin.
Greg Annandale

1
4 yıl sonra bu cevabın hala bacakları var. Noel arifesinde Matt'e yardım ettiğin için teşekkürler.
Joe

7

Rsyslog gönderdiği ana bilgisayar adını değiştirmek için, aşağıdaki yönergeleri herhangi bir modül yüklenmeden önce /etc/rsyslog.conf dosyasındaki ilk satır olarak ekleyin:

$LocalHostName yourhostname

Alternatif olarak, rsyslog dosyasının yalnızca ana bilgisayar adı (system1) yerine tam etki alanı adıyla (system1.example.com gibi FQDN) gönderilmesini sağlamak için şu yönergeyi kullanın:

$PreserveFQDN on

Bu nadiren gereklidir. Aynı ada sahip sistemleriniz yoksa ana bilgisayar adını (etki alanı adı olmadan) kullanmanızı öneririz.

Bunu ayarlamanın alternatif bir yolu (farklı günlükleri farklı ana bilgisayar adları olarak göndermenizi sağlar) özel bir şablon ayarlamaktır:

$template MyTemplate, "<%pri%> %timestamp% MySpoofedHostName %syslogtag% %msg%\n"
$ActionForwardDefaultTemplate MyTemplate

4

Bir hata olabilir. Kayıtlı FQDN hatalarının hiçbiri geçerli görünmese de FQDN desteğinin sakat olduğu biliniyor veya biliniyor .

Geçici bir çözüm olarak, geçiş yapmadıysanız %FROMHOST%,% HOSTNAME% yerine kullanın .


1
Kullanmak %FROMHOST%bana bir FQDN veriyor, ancak istemci düğümünün IP adresinde geriye doğru aramanın bir sonucu gibi görünüyor. Sistemlerim AWS EC2'de çalıştığından, bu maalesef her zaman benim için hiçbir anlamı olmayan bir FQDN verecektir.
cwjohnston

0

Sadece 7.6.x ile konuşabiliyorum ama $PreserveFQDNçalışması için gerekli olan tek şey buydu . /etc/hostsDüğümünüzün FQDN'si doğru bir şekilde ayarlanmışsa uğraşmaktan kaçınabilirsiniz .

CentOS / RHEL sistemleri için örnek:

$ -> vi /etc/sysconfig/network

# Change this
HOSTNAME=service-a-1

# To this
HOSTNAME=service-a-1.sn1.vpc3.example.com

Yeniden başlattığınızdan emin olun.


0

Bunu istemci tarafı rsyslog config içinde kullanabilirsiniz.

$LocalHostName {{HOSTNAME}}

ve {{HOSTNAME}}istenen ana bilgisayar adıyla değiştirin veya bıyığı otomatik olarak kullanarak istemcinin her birinde düzeltebilirsiniz .

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.