ログの出力の仕組み(Syslog)について

ログの出力の仕組み(Syslog)について

節の概要

これまでログの出力、ログの内容を確認する方法について確認していきました。

では今まで確認してきたログは、どのように出力されているのでしょうか?

この節では、

  • ログの出力の仕組み
  • ログの出力方法の設定方法

について説明していきます。

Syslog(ログの出力の仕組み)について

各アプリのログの収集、出力する機能

早速ですがログの出力の仕組みについて説明します。

まずLinuxではログを出力する際、主にSyslog(System Logging Protocol)というシステムが用いられます。

Syslogは、様々なアプリケーション(プログラム、サーバ)のログを集め、記録する仕組みです。

具体的にはjournaldが各ログを集め、rsyslogが集めたログをログファイルとして出力します。

また当研修ではCentOS内(1台のサーバ内)でログの収集、出力が完結していますが、他のサーバから集めたログを1台のサーバで管理するための仕組みとしても有効です。

一般のログの出力の指定方法(rsylog.conf)

Syslogの仕組みについて説明したところ、実際にログの出力方法を指定する方法について説明していきます。

指定ファイル(rsyslog.conf)について

まず出力方法を指定する際、「rsyslog.conf」というファイルを使用します。こちらのファイルのパスは以下の通りです。

格納先

/etc/rsyslog.conf/

指定ファイル(rsyslog.conf)への記載方法

「rsyslog.conf」を通じて各ログの出力方法を指定することができます。具体的には「ログの種類」、「優先順位」、「ログの出力先」を指定することが可能です。
ではどのように指定すれば良いのでしょうか?以下に指定する際の書式をまとめました。

書式

<ファシリティ>.<プライオリティ> 出力先

各項目の説明
  • ファシリティ
    ログの種類、出力元のプログラム、機能
  • プライオリティ
    優先度、危険度
  • 出力先
    ログの出力(転送)先の情報 (※パス、ファイル名、ホスト名、IPアドレスなどで指定します。)
ファシリティの主な内容
  • kern:カーネルからのメッセージ
  • daemon:デーモンからのメッセージ
  • cron:cronからのメッセージ
  • mail:メールからのメッセージ
※ 用語の整理
  • カーネル:OSの中核としてソフトウェア、ハードウェアの仲介をするものです。
  • デーモン:(メモリ上で)役割が来たら自動で機能するプログラムであり、役割が来るまで常駐待機しています。 httpdやftpdなど、後ろに「d」が付いていたらデーモンです。
  • cron:デーモンの一つです。利用者の指定通りに起動するプログラムです。
プライオリティの主な内容
  • emerg:システム利用困難な状況
  • alert:急を要する状態
  • crit:致命的な危険な状況
  • err:一般的なエラー
  • warning:警告
  • fail:操作の失敗
  • notice:重要な通知
  • info:一般の情報
  • debug:デバッグ
  • none:ログが出力しない設定(ファシリティ無効)

プログラム毎のログの出力の指定方法

以上、ログの出力方法について確認していきましたが、基本的にはプログラム(機能)によって設定用のファイル(conf)が用意されており、設定ファイルを通じてログの出力先を独自に指定することもできます。

ここではプログラム毎のログの出力の指定方法について学習していきましょう!

設定ファイルについて

ログの指定方法を始め、プログラム毎の設定ファイル(conf)について、基本的には「/etc/」の直下に格納されています。

格納先

/etc/

ファイル名については一概には言えませんが、大体、「/etc/●●.conf」や「/etc/●●.cnf/」といった
ファイルだったり「/etc/●●conf/」といったディレクトリが用意されていたりします。

  • Apacheの場合:/etc/httpd/conf または/etc/httpd/ conf.d
  • MySQLの場合: /etc/my.cnf/ または /etc/my.cnf.d/
※ ファイル(ディレクトリ)の存在、名称の相違について

Apache(httpd)またはMySQL関連のパッケージをインストールしていないと上記のディレクトリ、ファイルは存在しません。
またCentOsのバージョン、ディストリビューションの種類(Ubuntu、CentOsなど)などによってファイル名などの若干の相違がありますので、ご留意ください。

ログの出力の指定方法について

指定方法については、設定ファイル(conf)によって異なりますが、実際には対象のファイルの中身を確認しながら、設定を行っていきます。

実例を踏まえて確認していきましょう。

実例①: MySQLの場合 ※実例の実施は任意です。
[root@localhost ~]# cat /etc/my.cnf
~~省略
[mysqld]
~~省略

log-error=/var/log/mysqld.log
実例②: httpdの場合 ※実例の実施は任意です。
[root@localhost ~]# cat /etc/httpd/conf/httpd.conf | grep _log
~~省略
ErrorLog "logs/error_log" conbined
~~省略
CustomLog "logs/access_log"

以上でこの講座は終了になります。