rsyslogを使用して、リモートホストのログをサーバーに保存しています。
仕える人:
# Logfile for each host
$template DynaFile,"/var/log/rsyslog/%HOSTNAME%.log"
*.* -?DynaFile
顧客:
*.* @servername
これにより、サーバー上の各クライアントホストのログファイルが生成され、/var/log/rsyslog/
すべてのメッセージもサーバーに書き込まれます/var/log/syslog
。それでたくさん膨らむようになります。/var/log/syslog
サーバー自体のメッセージのみを含めないようにするには?
答え1
新しいルールが評価されたことを確認する必要があります。今後/var/log/syslog に書き込まれるログです。
たとえば、Ubuntu Trusty(rsyslog 7.4.4)では、/etc/rsyslog.confには、/var/log/syslogのルールを含む、からロードされたデフォルトの
$IncludeConfig /etc/rsyslog.d/*.conf
ルールが含まれています。/etc/rsyslog.d/50-default.conf
この場合、このファイルの前にロードする新しいファイルを追加できます00-remote.conf
。たとえば、私が管理しているシステムの外観は次のとおりです。
$template RemoteStore, "/var/log/remote/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
:source,isequal,"NAS",-?RemoteStore
& ~
答え2
これは私にとって効果的です。
## For accepting syslog info from remote hosts
$template TempAuth, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"
$template TempMsg, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"
if ($fromhost-ip != "127.0.0.1" ) then ?TempAuth
& ~
if ($fromhost-ip != "127.0.0.1" ) then ?TempMsg
& ~
答え3
私はこの問題に多くの努力をし、解決策を見つけたようです。私は他の人がこれを試して、潜在的な不利な結果を見つけることをお勧めします。まず、ラボ/テストと重要でないコンピュータにこれを実装することをお勧めします。
$template PerHostLog,"/var/log/net-hosts/%fromhost-ip%/%fromhost-ip%.log"
$template RemoteHostFileFormat,"%TIMESTAMP% %fromhost-ip% %syslogfacility-text% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::space-cc,drop-last-lf%\n”
:inputname, isequal, "imudp" ?PerHostLog;RemoteHostFileFormat
:fromhost-ip , !isequal , "127.0.0.1" stop
上記の4行は私の/etc/rsyslog.confファイルの上部にあります。
現在、2つのログファイルを見ています。/var/log/net-hosts/10.1.1.1
と
/var/log/syslogの
両方を見ると、ログはリモートホストファイルに入力されますが、システムログには入力されません。あります。 。 Apacheを再起動し、syslogでこの操作のログエントリを確認しました。
答え4
最新バージョンでは、次のコードで問題が解決します。
input(type="imudp" port="514" ruleset="remote")
ruleset(name="remote"){
$template DynaFile,"/var/log/rsyslog/%HOSTNAME%.log"
if ($fromhost-ip != "127.0.0.1") then -?DynaFile
}