半人前技術者の成長記

挫折と妄想を膨らませながら成長するだろう技術者の日記

Linux

rsyslogでログをリモートサーバに送信

投稿日:

クラウドや仮想環境を使ってWebサーバの複数台構成が当たり前になっています。
複数台構成になると各サーバ毎に保存されているログをわざわざ各サーバにログインして確認するのは面倒です。
また、クラウドなどの場合、一時的なアクセス増に対応するためなどのために一時的にサーバを増強するということは、
日常的になっており、これを毎回まとめるとなると手間が掛かることは間違いないです。

このようなことからログを集約するログサーバを立て、各サーバからログを受付、送信の仕組みが必要になります。
ログの集約などを検索するとFluentdなどの多くのツールもありますが、
Linuxのログ出力ツールとして古くから使われているsyslogの後継に当たるrsyslogを使ってみました。
rsyslogは、最近のディストリビューションではデフォルトになってきているようです。

今回の構成としては、単純にWebのアクセス、エラーログをログサーバに送信し、
ログサーバ側で保存するという仕組みにしています。

送信側の設定

rsyslogでリモートでログを出力した場合、Perlなどのスクリプトを使った方法もありますが、
ログをloggerコマンドで送信する方法の方が仕組みとして単純のような気がするので、
loggerコマンドでの設定になっています。

アクセスログをlocal2のファシリティ、エラーログをlocal1のファシリティを使って送信しています。

送信側のWebサーバの設定

CustomLog "|/usr/bin/logger -p local2.info -t [ドメイン名など]" combined
ErrorLog "|/usr/bin/logger -p local1.info -t [ドメイン名など]-error"

1行目でlocal1,local2のファシリティに対してログを保存しないように設定しています。
2、3行目では、送信先のサーバを設定しています。
「@」は、UDPでの送信になります。
「@@」に設定するとTCPでの送信になります。
TCPよりUDPの方が負荷が低いのでUDPの設定にしています。

送信側のrsyslog.confの設定

*.info;mail.none;authpriv.none;cron.none;local1.none;local2.none                -/var/log/messages
local2.debug @[ログの送信先サーバのIP、もしくはホスト名]
local1.debug @[ログの送信先サーバのIP、もしくはホスト名]

受信側の設定

受信側の設定では、imudpとimtcpのモジュールがデフォルトではコメントアウトされているのでコメントアウトを外す。
後、rsyslogの接続ポート514番も使えるように設定する。
ログの出力先を設定し、local1、local2のファシリティのログ出力を設定する。

受信側の設定

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

$template MsgFormat,    "%msg:2:$%\n"
$template httpd_access, "/var/log/rsyslog/[ドメイン名など]/httpd_access_%$year%%$month%%$day%.log"
$template httpd_error,  "/var/log/rsyslog/[ドメイン名など]/httpd_error_%$year%%$month%%$day%.log"

local2.debug            -?httpd_access;MsgFormat
local1.debug            -?httpd_error;MsgFormat

参考サイト

参考1
参考2
参考3
参考4

pc

pc

-Linux
-, , ,

執筆者:

関連記事

no image

ssh 公開鍵認証の設定

接続先のサーバーにローカルで作成した公開鍵を設置する方法が一般的な方法ですが、毎回鍵を作り直す手間があります。 そこで、今回はサーバー上の秘密鍵をローカルに転送し、利用することにしました。 鍵の作成 …

no image

アクセスログからIPアドレスを抽出するコマンド

ApacheのアクセスログからIPアドレス部分のみを抜き出し、 重複したIPアドレスが何件あるのか、表示してくれるコマンド。 【コマンド】 cat /var/log/httpd/access_log …

no image

mackerel(マカレル)のプラグイン追加

Saas型のサーバの負荷、死活監視サービスのmackerel(以下、マカレル)の公式プラグインをインストール手順です。 追加したプラグインは、以下の点になります。 1.Apache 2.MySQL プ …

no image

SMTPサーバ(Postfix)の設定

仕事でも個人でも、SMTPサーバを利用する機会ができたので、 デフォルトのSendmailではなく、Postfixをインストールして 設定してみたいと思い、Postfixに挑戦。 基本的には、Post …

no image

ランダム文字列をコマンドラインで生成

デフォルトだとCakePHPは、アラートを出すので、当たり前だけど。 CakePHPのSecurity.saltとchipseedを変更する際に便利なコマンド。 # 英数40桁 cat /dev/ur …

右上部広告