Linux 集中型ログサーバー構成エラー

Linux 集中型ログサーバー構成エラー

ここに画像の説明を入力してください。すべてのLinuxサーバー用に集中型サーバーを構成しました。すべてのシステムログとOracleデータベース監査ログを中央サーバーに転送できます。しかし、私の問題は、すべてのシステムログとデータベースログが1つのファイルに書き込まれることです。私の要件は、データベースログを別のファイルに記録し、システムログを中央の場所の他のファイルに記録することです。以下のスクリプトを見つけてください。

  • 192.168.1.150: 集中型サーバー

  • 192.168.1.44: リモートサーバー

リモートサーバー構成(192.168.1.44)

$ cat /etc/rsyslog.conf

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

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

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

#Save oracle rdbms audit trail to oracle_audit.log
local0.info /u01/app/oracle/admin/prod/adump/oracle_audit.log


*.*     @192.168.1.150:514

集中型サーバー構成(192.168.1.150):

$ cat /etc/rsyslog.conf 

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

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


$template RemoteHost,"/backup/CentralizeLogLocation/Linuxlogs/%HOSTNAME%/%HOSTNAME%-%$YEAR%%$MONTH%%$DAY%.log"

if($hostname != '') then ?RemoteHost

&~

これらのファイルは、集中型サーバーthsc-vmmanager-20160614.logの各ホストに対してこの形式で生成されます。

すべてが大丈夫だと思います。必要なものを得ましたが、Oracleデータベース監査ログとシステムログの両方が1つのログファイルに書き込まれました。スクリーンショットも添付しておきました。

今の要件は、これら2つのファイルを分離することです。これを達成する方法を案内してください。

ここに画像の説明を入力してください。

答え1

%syslogfacility-text%次のように、RemoteHostテンプレートにsyslog機能を追加できます。

$template RemoteHost,"/backup/CentralizeLogLocation/Linuxlogs/%HOSTNAME%/%HOSTNAME%-%syslogfacility-text%-%$YEAR%%$MONTH%%$DAY%.log"

答え2

集中型サーバーでテンプレートを作成しましたが、まだ使用していません。最後に追加してみてください

if $fromhost-ip startswith 192.168.1.44  then -?RemoteHost
& ~

または

if $syslogfacility-text isequal 'local0' then -?RemoteHost
& ~

あるいは、それらを組み合わせてリモート施設local0(oracleログなど)を1つのファイルに書き込んだり、残りを別のファイルに書き込むこともできます。たとえば、次のようになります。

if $fromhost-ip == '192.168.1.44' and $syslogfacility-text == 'local0' then /var/log/oracle.log
& ~
*.*  /var/log/messages

この& ~行は、前のコマンドがoracleメッセージをファイルに保存した後に削除されます。if。バラよりrsyslog.com多くの助けと例を見てください。

行の先頭のファイル名は、次のようにif固定することも、以前に定義したテンプレートのようにすること/var/log/oracle.logもできます-?OracleData。たとえば、次を追加する必要があります。

$template OracleData,"/backup/CentralizeLogLocation/Oracle/%HOSTNAME%/%HOSTNAME%-%$YEAR%%$MONTH%%$DAY%.log"

if $syslogfacility-text isequal 'local0' then -?OracleData
& ~
if $fromhost-ip startswith '192.168.1' then -?RemoteHost
& ~
*.*  /var/log/messages

oracleログ・メッセージに「Oracle」という単語が含まれているため、次のようにメッセージを分割することもできます。

if $msg contains 'Oracle' then -?OracleData
& ~

この行の順序は重要です。テンプレートを使用する前に定義する必要があります。これらのルールは各メッセージに順番に適用されます。& ~この行にすぐに従わないと、ifメッセージが複数のログファイルに表示されることがあります。

関連情報