2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RedHat 系 OS のログの流れ

Last updated at Posted at 2019-02-20

自分用にまとめます。

ログ転送概観

ログはおおむね /var/log/messages で見れる。
何かあったらまずは messages をみよう。

RHEL7(CentOS7)以降のログ転送の構成は以下

カーネル(printk(9)) -> /dev/kmsg -> systemd-journald -> rsyslog --+--> /var/log/messages  
                                      ↑               +--> /var/log/cron.log
ユーザApp(syslog(3),logger(1)) -> /dev/log ---+                   +--> etc.

上記ですべてではなく、ほかにもログの経路は存在する。

syslog の仕組みを介さず、アプリケーション独自で採取しているログは上記の構成に則らない。
※たとえば httpd のアクセスログ(/var/log/httpd/access_log)など

printk(9)

カーネル関数。もちろんカーネル内、もしくはカーネルモジュール内でしか使えない。
カーネルがログを出力する際に利用される関数で、実態としては /dev/kmsg に書き込みを行う関数。
引数に与えるログ文字列の先頭に”<¥d>”と記述することでログレベルを指定できる。
printk() によって出力されたカーネルログは journald や rsyslog に渡されるとともに、dmesg コマンドなどでも確認できる。

syslog(3)

libc ライブラリ関数。同名のシステムコール syslog(2) とは全く異なるもの。
ユーザ空間のアプリケーションがログを出力する際に利用されら関数で、実態としては /dev/log に書き込む関数。
openlog() でファシリティ、プログラム名を指定してログを開き、syslog() でプライオリティを指定してログ出力、closelog() でログを閉じる。なお、glibc では、ファシリティに kern を指定すると勝手にファシリティが user に置き換えられるようになっており、カーネルログを吐けないようになっている。

logger(1)

標準コマンド。実態としては /dev/log に書き込む。

rsyslog

rsyslog は従来のログ集計・転送アプリケーション。

rsyslog のログ飛ばし先設定は /etc/rsyslog.conf に記載あり。
以下は rsyslog-8.24.0-16.el7_5.4 インストール直後の設定内容。
mail、authpriv、cron以外のファシリティの、info 以上のプライオリティを持つログを /var/log/messages に出力する、というような内容が読み取れる。

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

systemd-journald

RHEL7(CentOS)以降で導入されたログ集計アプリケーション。
rsyslog なしで、journald だけ運用することもできる。

/dev/log 、/dev/kmsg その他諸々からログを一括に収集する。

rsyslog は単にテキストベースでログを集計、分類、転送していたが、journald はログを吐いたプロセスやプライオリティなどをメタデータとして保有している。
そのため、journaldにはjournalctlコマンドによる高度なログ検索機能があり、rsyslogのようなログファイル分割機能はそもそも必要とされず、存在しない。

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?