半人前技術者の成長記

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

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

直下で使われているディスク容量を出す方法

duは、ディレクトリ内のファイル容量を表示するLinuxコマンドです。 -kオプションを使うと指定ディレクトリ以降のディレクトリの容量を出力されるが、大量のファイルやディレクトリがある場合に行数が多く …

no image

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

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

no image

コマンドラインからHipChatにメッセージを送信する

HipChatへコマンドラインからメッセージを投稿する方法になります。 メールでアラートを送信する方法が主に使われている方法ですが、最近のメールサーバは送信元のチェックが厳しくなったので送信したメール …

no image

負荷監視ツール Cactiインストール

サーバの負荷監視ツールのcacti(カクタイ)を導入した時の作業手順です。 まず、yumを使ってcactiをインストール。 # yum install cacti –enablerepo= …

no image

Apache killer対応版のインストール

今のところ被害は受けていないが、Apache killerの対応したバージョンにアップした方が 安全なのでアップデートを行ったときの作業手順です。 今回、rpmパッケージが出ていないと思いrpmパッケ …

右上部広告