それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

rsyslog の転送機能でログを集約する

ログ集約

rsyslog/syslog で設定する

受信側

sudo -E cp /etc/rsyslog.conf{,.bak}
sudo systemctl restart rsyslog
sudo -E vim /etc/rsyslog.conf

18行目付近を、有効にする。TCP 514 ( または UDP 514 )

--- /etc/rsyslog.conf.bak       2022-08-29 08:13:05.132978351 +0900
+++ /etc/rsyslog.conf   2022-08-29 08:13:16.340874261 +0900
@@ -18,8 +18,8 @@
 #input(type="imudp" port="514")

 # provides TCP syslog reception
-#module(load="imtcp")
-#input(type="imtcp" port="514")
+module(load="imtcp")
+input(type="imtcp" port="514")

送信側

conf.d が使えるのを確認

$ sudo -E cat /etc/rsyslog.conf | grep rsyslog.d
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

ファイルを作る

sudo -E touch /etc/rsyslog.d/remote.conf   
sudo -E vim /etc/rsyslog.d/remote.conf

転送先を記入( TCP@@ip_or_host:514, UDPなら@ip_or_host:514)

*.* @@raspi-ubuntu.lan:514     

再起動して反映

sudo systemctl restart rsyslog

実験する

ログを書き出すコマンドが次の通り

logger -p syslog.info -t TEST "Test"

ログをtail して確認

受信側

takuya@raspi-ubuntu:~$ sudo tail -f  /var/log/syslog

送信側

takuya@pi-zero:~ $ sudo tail -f  /var/log/syslog

送信側でログを書き出す。

logger -p syslog.info -t TEST "Hello from pi-zero"

結果

きちんと集約しているのがわかる。

無事に、ログが転送されことがわかる。

転送済ログの分割

受信側では、ログをサーバーごと、エラーレベルごとに振り分けすることが出来る。(参考資料 https://www.secuavail.com/kb/tech-blog/tb-210521-01-2/)

書込みレート

デフォルトでは、5秒、200行まで書き込みを行いますが、200行以降は破棄されてしまいます。 5秒に200行以上ログが転送されるようなシステムの場合、チューニングが必要な項目になります。 https://qiita.com/tasakii/items/10db42392c487d5276da

ログの転送量には上限が決められているので注意する。

journald のとの関係?

journalctl はsyslog に転送する。

$ cat /etc/systemd/journald.conf  | grep -i syslog
#ForwardToSyslog=yes
#MaxLevelSyslog=debug

journalctl と syslog が互いにログを保持しているのでわかにくい。

以前は、syslog に転送しjournald自身は破棄していたため、journaldはvolatile (揮発性)になっていたようだが、いまは、journald もauto(デフォルト動作不明:たぶんファイル保存)で自分でログを保持するので、結果としてsyslog と journaldの両方にログが出来ることになる。

たとえば、次のように複雑に入れ込んで人も、やっぱり両方に出ている。

https://boscono.hatenablog.com/entry/2015/12/30/095620 /dev/kmsg -> imklog -> rsyslog -> /var/log/messages -> journald -> imjournal -> rsyslog -> /var/log/messages という流れになっているっぽいので

参考資料

https://www.kagoya.jp/howto/engineer/itsystem/syslog/ https://www.secuavail.com/kb/tech-blog/tb-210521-01-2/ https://isleofhoso.com/journald-conf/

あとで

journald と syslogd

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0546