はじめに
RHEL9でsyslogサーバを検証用途で構築したい場合の手順を載せておきます。
適宜、設定ファイルの解説も行っております。勉強用途にもお使いください。
インストール済みなのか確認
次のコマンドで確認できます。
rsyslogd -v
rsyslogのインストール
rsyslogパッケージをインストールします。
dnf install rsyslog -y
起動の確認と有効化
次のコマンドを流し込んでください。
systemctl is-enabled rsyslog systemctl enable rsyslog systemctl start rsyslog systemctl status rsyslog
設定ファイルの解説
設定ファイルは/etc/rsyslog.confとなります。設定ファイルの確認と解説を行います。
青色は説明となります。
# 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 #### GLOBAL DIRECTIVES #### ### ワークディレクトリの指定 # Where to place auxiliary files global(workDirectory="/var/lib/rsyslog") ### ログのタイムスタンプ形式の指定 # Use default timestamp format #module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") → "OCT 10 09:01:01" のような形式で出力される。 module(load="builtin:omfile" Template="RSYSLOG_FileFormat") → "2018-10-10T10:37:53.063083+09:00" のような形式で出力される。 ### 個別ファイルの読み取り先を指定。 # Include all config files in /etc/rsyslog.d/ include(file="/etc/rsyslog.d/*.conf" mode="optional") #Template template(name="DynaFile" type="string" string="/var/log/%HOSTNAME%/%$year%-%$month%-%$day%.log") *.* action(type="omfile" dynaFile="DynaFile") #### MODULES #### ### 旧来のunix socket file経由(systemd)のログ受信を有効にする 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. ### 現行のjournald経由のログ受信を有効にする module(load="imjournal" # provides access to the systemd journal StateFile="imjournal.state") # File to store the position in the journal ### ファシリティkernを受信する。imjournalで受信しているため無効となっている。 #module(load="imklog") # reads kernel messages (the same are read from journald) ### rsyslogが動作していることを示す rsyslogd:-- MARK --を20分毎に発報(/var/log/messages)。無効で良い。 #module(load="immark") # provides --MARK-- message capability ### UDPでログを受信する # 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") ### TCPでログを受信する # 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") #### 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 →ファシリティに関係なく重要度がinfo、且つファシリティがmailでもauthprivでもcronでもないものは、/var/log/messageへログを格納する # 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:* ### ユーザコンソールにログメッセージを出すOutput Moduleが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 ### 別のサーバにログを転送する際の設定。コメントは全てTCPで転送する場合のパラメータ。 # ### 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. ### 転送先サーバが停止している場合のキューファイル名を指定。ディレクトリは$WorkDirectoryを使用。 #queue.filename="fwdRule1" # unique name prefix for spool files ### 転送先サーバが停止している場合のキューファイルサイズ。 #queue.maxdiskspace="1g" # 1gb space limit (use as much as possible) ### 転送先サーバが停止している場合にshutdown状態のディスクに保存する。 #queue.saveonshutdown="on" # save messages to disk on shutdown ### 転送先サーバが転送している場合のキュータイプを選択。 #queue.type="LinkedList" # run asynchronously ### 転送先サーバが停止している場合のリトライ。0でリトライ。-1で無効。 #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")
設定ファイルの修正
設定ファイルの解説を見ながら必要に応じてコメントアウトを外したり、パラメータを修正してください。
vi /etc/rsyslog.conf
構文の確認
設定ファイルの構文の妥当性は次のコマンドで確認可能です。
rsyslogd -N 1
設定の反映
rsyslogを再起動します。
systemctl restart rsyslog
ログ受信レートの設定
ログの受信レートを調整することができます。必要に応じて修正してください。
vi /etc/systemd/journald.conf
ーーーーーーーーーーーーーーーー [Journal] RateLimitIntervalSec=30s RateLimitBurst=10000 ーーーーーーーーーーーーーーーーー
systemd-journaldを再起動します。
systemctl restart systemd-journald
firewallの許可
RHEL9ではiptablesではなくfirewalldが採用されています。次のコマンドを流し込んでください。
firewall-cmd --state systemctl start firewalld firewall-cmd --list-all | grep port firewall-cmd --add-port=514/udp --permanent firewall-cmd --add-port=514/tcp --permanent firewall-cmd --reload firewall-cmd --list-all | grep port
rsyslogサーバのサービスポートの確認
設定ファイルでTCP、UDPの両方で514ポートを許可した場合、次のコマンドでポートがリッスンになっていることを確認します。
ss -anu | grep 514 ss -atnu | grep 514
TCPを使用している場合、syslogサーバとコネクションが張られているか次のコマンドで確認可能です。
ss -t
ログの確認
主要なログは/var/log/配下に格納されています。
次のように確認可能です。最後に生成されたログから10番目までを表示しています。
cat /var/log/messages | tail -n 10
ログの生成
ログ自体はloggerコマンドを使用すれば簡単に生成されます。
logger -p daemon.crit rsyslog test log
構文:logger -p ファシリティ.シビアリティ ログ本文
ログの管理について
こちらを参照ください。
説明を流用すると
まず、ローカルのログ管理は journald (systemd-journald)というデーモンがメインで行っています。なのでローカルで生成されたログは /dev/log (unix socket file) 経由で systemd-journald が受信し、/run/log/journal 配下のデータベースに保管されます。(/run は tempfs なので再起動などのタイミングで消えてしまいます。)
とのことです。試しに確認してみましょう。
[root@RHEL9 ~]# ll /dev/log
lrwxrwxrwx. 1 root root 28 9月 15 17:14 /dev/log -> /run/systemd/journal/dev-log
[root@RHEL9 ~]# ll /run/systemd/journal/dev-log srw-rw-rw-. 1 root root 0 9月 15 17:14 /run/systemd/journal/dev-log
ソケットであることが確認できました。
[root@RHEL9 ~]# ll /run/log/journal
合計 0
drwxr-s---+ 2 root systemd-journal 60 9月 15 17:14 719de3ae57cd48c6bef510be05f7a33b
cat /run/log/journal/719de3ae57cd48c6bef510be05f7a33b/system.journal →バイナリファイルなので確認不可。
一応、/runがtmpfsにマウントされていることを確認します。
[root@RHEL9 ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 9.7M 3.1G 1% /run
/dev/mapper/rhel-root 61G 7.7G 54G 13% /
/dev/nvme0n1p2 1014M 290M 725M 29% /boot
/dev/mapper/rhel-home 30G 249M 30G 1% /home
/dev/nvme0n1p1 599M 7.0M 592M 2% /boot/efi
tmpfs 1.6G 52K 1.6G 1% /run/user/42
tmpfs 1.6G 36K 1.6G 1% /run/user/0
コメント