ログの出力
エラーがあったり、コンピュータが何かの動作をすると、それらを記録します。周知の通り、それをログと言います。
Linuxではsyslogを使って、ログを管理します。
rsyslog
システムのログを管理するソフトウェアというものは色々あるらしいですが、rsyslogで色々検証してみます。
※個人で取り扱っているのがCentOS8なので、rsyslogという事情もあります。
rsyslogの設定ファイル
設定ファイルは/etc/rsyslog.confに記載されています。大まかな構成は「モジュール」「グローバル設定」「ルール」です。下記も各区切りで区切って記載しています。
1 2 3 4 5 6 |
[root@localhost ~]# cat /etc/rsyslog.conf |grep -v -e "^s*$" # rsyslog configuration file # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html # or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#### MODULES #### module(load="imuxsock" # provides support for local system logging (e.g. via logger command) SysSock.Use="off") # Turn off message reception via local log socket; # local messages are retrieved through imjournal now. module(load="imjournal" # provides access to the systemd journal StateFile="imjournal.state") # File to store the position in the journal #module(load="imklog") # reads kernel messages (the same are read from journald) #module(load"immark") # provides --MARK-- message capability # Provides UDP syslog reception # for parameters see http://www.rsyslog.com/doc/imudp.html #module(load="imudp") # needs to be done just once #input(type="imudp" port="514") # Provides TCP syslog reception # for parameters see http://www.rsyslog.com/doc/imtcp.html #module(load="imtcp") # needs to be done just once #input(type="imtcp" port="514") |
1 2 3 4 5 6 7 8 |
#### GLOBAL DIRECTIVES #### # Where to place auxiliary files global(workDirectory="/var/lib/rsyslog") # Use default timestamp format module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") # Include all config files in /etc/rsyslog.d/ include(file="/etc/rsyslog.d/*.conf" mode="optional") |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#### RULES #### # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg :omusrmsg:* # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# ### sample forwarding rule ### #action(type="omfwd" # An on-disk queue is created for this action. If the remote host is # down, messages are spooled to disk and sent when it is up again. #queue.filename="fwdRule1" # unique name prefix for spool files #queue.maxdiskspace="1g" # 1gb space limit (use as much as possible) #queue.saveonshutdown="on" # save messages to disk on shutdown #queue.type="LinkedList" # run asynchronously #action.resumeRetryCount="-1" # infinite retries if host is down # Remote Logging (we use TCP for reliable delivery) # remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514 #Target="remote_host" Port="XXX" Protocol="tcp") |
コメントアウトされている箇所が多いので、有効になっている箇所だけ抽出。
【モジュールについて】
1 2 3 |
module(load="imuxsock" # provides support for local system logging (e.g. via logger command) SysSock.Use="off") # Turn off message reception via local log socket; |
UNIXソケット経由でログを受け取る設定です。loggerコマンドと関係があるようです。
1 2 3 |
module(load="imjournal" # provides access to the systemd journal StateFile="imjournal.state") # File to store the position in the journal |
systemdのジャーナルをサポートする設定です。
【グローバル設定について】
1 2 |
global(workDirectory="/var/lib/rsyslog") |
作業ディレクトリについて書かれています。
1 2 |
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") |
出力に関する設定のようです。
1 2 |
include(file="/etc/rsyslog.d/*.conf" mode="optional") |
読み込みファイルについて書かれています。
【ルールについて】
1 2 3 4 5 6 7 8 |
*.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 |
このあたりはログを他と同期する際にも編集します。
例えば「cron」に関するログは、「/var/log/cron」に格納するといった設定が書かれています。
syslogのファシリティのプライオリティ
ログと言っても一括りにはできません。ログの生成元であるファシリティ(facility)と、ログの重要度を表すプライオリティ(priority)でログの格納先や、エラー通知として取り扱うかなどを決定します。
ファシリティ
ファシリティ | 説明 |
auth,authpriv | 認証関連 |
cron | cron |
daemon | デーモン |
kern | カーネル |
lpr | 印刷システム |
メール | |
user | ユーザープログラム |
syslog | syslogの機能 |
local0〜local7 | 独自で設定できる項目 |
プライオリティ
表記の通り、表の上側部分に位置するほど、優先度が高いです。
プライオリティ | 説明 |
emerg | 非常に危険な状態 |
alert | 危険な状態 |
crit | 危険な状態 |
err | エラー |
warnig | 警告 |
notice | 通知 |
info | 情報 |
debug | デバッグ |
none | 無効(メッセージを送らない) |
ログの同期設定について
下記でルーターのログをサーバーに同期させる検証をしていました。まぁまぁ前の話ですが、何かの参考になればと思うので、記載。