概要
rsyslogは、シスログなどをサーバに出力するための機能。
AlmaLinux9などでそのまま実装することができる。
今回は、細かいログレベルの指定などは一旦置いておいて、
ログを取得できるようにするところまで実装する。
実行環境
AlmaLinux 9.2
実装手順
以下のファイルを変更する。
sudo vi /etc/rsyslog.conf
その後、以下の行を探す
#module(load="imudp") # needs to be done just once
#input(type="imudp" port="514")
そして、コメントアウトを外す。この場合は、udpによる受信の許可を設定している。すぐ下にtcpもあるので許可してもよい。
次に、ファイルをどこに保存するかを指定する。
今回は以下の場所にtemplateで指定した。これでファイルパスの名前host_log_filepath
を指定した。%hostname%にて、サーバのホスト名を引数に作成していく。その中で、対象のログファイルを作成するようにしている。
template(name="host_log_filepath" type="string" string="/var/log/remote/%hostname%/%hostname%.log")
また、このファイルパスを、ルールセットを用いて指定してやる。さきほどコメントアウトしたところを、
input(type="imudp" port="514" ruleset="remote")
にする。
また、新たにルールセットの関数を作成して、ファイル作成の権限とパスを作る。
ruleset(name="remote") {
action(type="omfile" dynaFile="host_log_filepath" fileCreateMode="0644" dirCreateMode="0755")
}
これはルール事に区切っているが、以下リンク先のようにファイル全体で指定することも可能
以下のコマンドで動作確認ができる。
rsyslogd -N 1
間違っているときは、行数とともに表示される。
[ito@test-vmname-1 ~]$ sudo rsyslogd -N 1
[sudo] jst-dito のパスワード:
rsyslogd: version 8.2310.0-4.el9, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.
以下のコマンドで動作確認ができる。
必要な場合はsystemctl restart rsyslog
で再起動させること。
sudo systemctl status rsyslog
また、udpの514ポートを開放してあげる。今回はちょっと面倒なので、停止させた。
sudo systemctl stop firewalld.service
その後、このrsyslogサーバに疎通できるネットワーク帯のサーバから、以下のコマンドを実行してテストする。
logger -p local0.notice -t test -n 10.26.240.11 "Test log message"
catで確認できることを確認する。
[ito@test-vmname-1 log]$ sudo cat /var/log/remote/office-sboxvh-0188.mgt.stream.jp/office-sboxvh-0188.mgt.stream.jp.log
Feb 4 15:55:48 office-sboxvh-0188.mgt.stream.jp test Test log message
[ito@test-vmname-1 log]$
[ito@test-vmname-1 log]$
関連リンク