2015/06/24

rsyslogでリモートサーバにログを送る(基本編)

前回、rsyslogの特徴を整理した。

今回はこれを踏まえてログをリモートサーバに送る基本的な設定をしてみたいと思う。

以下のような構成です。

f:id:nagamee:20140928132036p:plain

本日のゴールは以下の2点




  • クライアントからリモートサーバへログ転送する

  • TCP,UDPの両プロトコルで転送する



内容としては基本的ですが、一歩ずつ進める方針。

ファシリティ、プライオリティ、保存先ファイルの設定については

プロトコル別に分けてこんなかんじで。




  • TCP -> local1.* /var/log/local1.log

  • UDP -> local2.* /var/log/local2.log



サーバの設定

まずサーバ側の設定。

/etc/rsyslog.conf


(前略)
#### 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

# Provides UDP syslog reception
<span style="color: #ff0000">$ModLoad imudp
$UDPServerRun 514</span>

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

(後略)

上記項目はデフォルトでコメントアウトされています。ModLoad im[tcp|udp]はそれぞれのプロトコルで待ち受けるためのモジュールをロードします。その際の待ち受けポートをInput[TCP|UDP]ServerRunで指定してやります。

最低限であればこれでOKです。

続いてクライアントから受け取ったログを出力先を指定してあげます。/etc/rsyslog.confに直接書き込むのでなく、外部ファイルを使います。

/etc/rsyslog.d/test.conf


# Save log from remote server
local1.* /var/log/local1.log
local2.* /var/log/local2.log

rsyslogをリロードしておきましょう。


# service rsyslog reload

これでサーバ側の設定はOKです。(ファイアウォールを設定している場合は514番のパケットを許可することを忘れずに)









クライアントの設定

クライアントでは、リモートサーバにログを転送するための設定をしていきます。

ファシリティ、プライオリティ、出力先の設定のみで済むので、こちらも外部ファイルに定義していきます。

/etc/rsyslog.d/test.conf


# Send log to remote server
local1.* @192.168.17.102 # UDP で送信する
local2.* @@192.168.17.102 # TCP で送信する

出力先の定義にて、@リモートホスト の形で指定するとUDPで送信、@@リモートホスト だとTCPでログを送信します。


# service rsyslog reload

以上で設定完了です。



動作確認

クライアントにてloggerコマンドを使い、手動でログを生成してみます。


# logger -p local1.debug TEST MESSAGE BY UDP
# logger -p local2.debug TEST MESSAGE BY TCP

サーバ側でパケットを確認してみます。


# tcpdump -nnn -i any port 514
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes

14:04:28.471037 IP 192.168.17.101.55968 > 192.168.17.102.514: SYSLOG local1.debug, length: 58

14:04:42.289389 IP 192.168.17.101.47199 > 192.168.17.102.514: Flags [P.], seq 907178924:907178983, ack 264883602, win 115, options [nop,nop,TS val 52266550 ecr 51964458], length 59
14:04:42.289416 IP 192.168.17.102.514 > 192.168.17.101.47199: Flags [.], ack 59, win 114, options [nop,nop,TS val 52259941 ecr 52266550], length 0

UDPTCPでログ転送の通信が確認できました。最近tcpdumpの使い方を覚え、これみよがしに使っています。

最後にサーバ側のローカルファイルを確認します。


# cat /var/log/local1.log
Sep 28 23:08:06 centlab1 nagamee: TEST MESSAGE BY UDP

# cat /var/log/local2.log
Sep 28 23:08:20 centlab1 nagamee: TEST MESSAGE BY TCP

以上で基本的なrsyslogの設定は終わりです。

次はマクロ・テンプレート機能についてやってみようかと思います。



0 件のコメント:

コメントを投稿