お問い合わせはこちら

【再入門】syslogとは?ログの管理と転送方法についてわかりやすく解説します!

公開
更新

Linuxでは日々多くのログが生成されているため、効率良く確認できる方法が用意されています。それが「syslog」です。これによりログ管理の負担を抑えられます。こちらの記事では、ログの一般的な目的やsyslogの役割、より高度な管理方法としてログデータの「転送」と集中管理について解説しました。

syslogの解説

ログ管理の意義とsyslogの概要

Linuxでは、動作中のプログラムがどのように動いているか記録しています。この記録をログ(log)またはログメッセージと呼んでいます。

ログ管理の主な目的

  • 正常に動作しているかの定期検査
  • 動作中の機能に不具合が発生した場合の原因調査
  • 特にセキュリティを向上し、攻撃から守るための点検やルールの作成・見直し

syslogの概要

稼働しているプログラムのログを、効率的に収集し記録するのがsyslogです。もともとはプロトコル(ルール)の一つで、他のコンピューター機器にログを送信する規格でした。これで指定の集約場所へデータを転送でき、管理がしやすくなりました。

現状ではsyslogは「rsyslog」という名称のサービスに改良されています。こちらの記事の後半では、rsyslogの仕組みを活用して、別のLinuxサーバーでの管理方法を説明しています。

【リンク】
syslog 経由で監査ログを記録 – MariaDB Server

ログのデータがある場所

以下に分類されます。インターネット上には公開されず、サーバー管理者のみがアクセス可能です。

(1)プログラムが出力するログ(/var/log)

プログラムが出力するログ

(2)各プログラムが出力するログの設定ファイル(.confファイル)

/etc 以下にあり、プログラム毎に設定ファイルが分かれています。

(3)rsyslog

/etc/rsyslog.conf にあります。詳細は次章で解説します。

【基本編】syslogの設定方法

syslogの設定方法


こちらの章では、LinuxディストリビューションCentOSでバージョンは7で解説します。

概要

現状では、syslogの設定ファイル名はrsyslog.confで、/etc 以下のディレクトリーに配置されています。このrsyslog.confは、「r」の無いsyslog.confの改良版です。なお公式サイトによれば「r」は「rocket-fast」の略で、日本語では「爆速」を意味しています。

設定ファイルrsyslog.confについて

設定ファイルrsyslog.confに記述されている内容をもとに、解説していきます。まずは、設定ファイルを表示してみましょう。

【コマンド】

vi /etc/rsyslog.conf

MODULES」「GLOBAL DIRECTIVES」「RULES」の3部構成になっていることがわかります。

名称概要詳細
MODULES利用するモジュール(交換可能な部品のようなもの)の設定により機能拡張が可能で、入出力制御など多数あり公式ページ
GLOBAL DIRECTIVES全体設定のオプション参考ページ
RULES処理方法の指定で、ここで転送設定ができる参考ページ

rsyslog.confを更新したら、更新内容を反映するために再起動しましょう。

【コマンド】

# systemctl restart rsyslog

rsyslog.confで指定できる項目

概要
ファシリティログの種類またはログメッセージの出力元(プログラムや機能など)kern(カーネル)、user(ユーザー)、mail(メール)ほか計24項目あり
プライオリティ (注1)優先あるいは危険の度合い「emerg」(非常に危険)~「debug」までの8段階あり(注2)(注3)
アクションログメッセージの出力先、転送先の指定ファイル名、別の機器のホスト名(IPアドレス)など5項目あり

【補足】
(注1)英語の文書では「Severity」(重症度)と表記しています。
(注2)プライオリティの8段階は、 emerg alert crit err warning notice info debug です。ある段階を指定すると、それ以上の段階全てが対象になります。例えばerrを指定すると、errに加えemerg alert critも自動的に含まれます。
(注3)ログ出力をしない場合は、上記の8段階以外に「none」と指定します。

rsyslog.confでの記述例

【コマンド】

mail.err @xxx.yyy.zzz.aaa

メール関連のログをIPアドレス「xxx.yyy.zzz.aaa」のLinuxサーバーに転送します。プライオリティは、「emerg」「alert」「crit」「err」の4つが該当します。

【応用編】ログを別のLinuxマシンで一元管理しよう!

ログを別のLinuxマシンで一元管理しよう!

複数サーバーのsyslogを管理する場合、サーバー毎に点検するのではなく、データを一か所に集約して管理する方が効率的です。例えばサーバーに侵入されログを改ざんされる被害に遭っても、ログの転送を行っていれば安心です。

こちらの章では、あるLinuxマシンのログを別のLinuxマシンに転送する設定方法をまとめています。それでは、双方のマシンにある設定ファイル(rsyslog.conf)へ実際にコマンドを書き込んでいきましょう。

カゴヤ・ジャパン提供の<KAGOYA CLOUD>のプランを利用して、実際にテストしてみました。

企業名カゴヤ・ジャパン
プラン名KAGOYA CLOUD VPS「KVM」タイプ
CPU2コア
メモリー2GB
ストレージSSD 30GB
料金日額 35円/月額 979円(税込)

事前に調査しておくこと

  • 一元管理したいログの決定(すべてか特定のプログラムなどか)
  • LinuxマシンのIPアドレス(送信側と受信側)
  • ポート番号(注4)

(注4)
・ファイアウォール使用の場合は解放する
・通常では514が使われているが他に変更可

送信側の設定例

(1)rsyslog.confファイを開きます。
【コマンド】

vi /etc/rsyslog.conf

(2)開いたrsyslog.confファイルにある以下の行を書き換えます。(93行目あたり)
以下は、「TCP」で「全て」のログを転送する場合です。

■書き換え前【コマンド】

#*.* @@remote-host:514

■書き換え後【コマンド】

*.* @@ xxx.yyy.zzz.aaa:514

意味は以下の通りです。設定時に任意の文字列に変更します。

上記「書き換え後」の場合書式事例の場合の意味
*.*ログの種類.重要度「*.*」は全てを表わす。「.」(ピリオド)が必要。
@@送信プロトコルTCPの場合は「@@」。UDPの場合は「@」。
xxx.yyy.zzz.aaa送信先のホスト名送信先のIPアドレスなどを指定。
514ポート番号この場合は標準的な番号(変更可)。

(3)rsyslogを再起動します。
【コマンド】

# systemctl restart rsyslog

(4)ポートを開けます(今回の場合は514)
【コマンド】

# iptables -A INPUT -p tcp --dport 514 -j ACCEPT
# iptables -A INPUT -p tcp --sport 514 -j ACCEPT

【ご参考】
iptables の設定(カゴヤ・ジャパン)

受信側の設定例

(1)rsyslog.confファイを開きます。

【コマンド】

vi /etc/rsyslog.conf

(2)開いたrsyslog.confファイルにある以下の行を書き換えます。(21行目あたり)
以下はTCPの場合で、「#」の部分(2か所)をコメントアウトします。

■書き換え前【コマンド】

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

■書き換え後【コマンド】

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

(3)rsyslogを再起動します。
【コマンド】

# systemctl restart rsyslog

転送されたログをチェックする!

(1)例としてメッセージ「Test」を出力
【コマンド】

logger -p syslog.info -t TEST "Test"

(2)以下のコマンドを送信側と受信側で実行
【コマンド】

# tail /var/log/messages

(3)転送状況を確認

以下のキャプチャ画像のように、同じ時刻で送信側と受信側を見比べると対応していることがわかります。受信側には「v—–.vir.kagoya.net」と表示され、転送されてきたことが確認できました。

【送信側】

送信側

【受信側】

受信側

ログ一元管理の事例

img
特定プログラムの一元的なログ管理も可能です。例えば、Webサーバーのソフトウェア「Apache」の場合には、rsyslogとともにApacheを制御するファイル(httpd.conf)へ設定します。

Apacheについては、以下の記事でわかりやすく解説しています。

【リンク】
Apacheとは?Webサーバーの仕組みと人気サーバーソフトを徹底解説

まとめ

ここまでいかがでしたか。Syslogを活用して、Linuxサーバーのログ管理を効率化していきましょう。

日額 20円 で使えるVPS

開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS

カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。