2019-10-25

LinkStation ネイティブ LS210D に syslog-ng server を立てる

LS210D に元々入っている syslog デーモンは外からのログを受け入れることができません(LS210D のログを外部に出力設定はできます)。


なぜか、LS210D よりも古い機種である LS-AVL の syslog は外部のログを受け入れる log server 機能があります。




ネイティブ LS210D に ipkg 環境を整備しましたので、syslog-ng をインストールすれば syslog server にできるはずです。


まずは、syslog-ng をインストールします。


[root@LS210DF58 ~]# ipkg  update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable//Packages
Updated list of available packages in /opt/lib/ipkg/lists/cs08q1
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/cross
Successfully terminated.
[root@LS210DF58 ~]# ipkg  install  syslog-ng
Installing syslog-ng (2.0.10-2) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/syslog-ng_2.0.10-2_arm.ipk
Installing glib (2.20.4-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/glib_2.20.4-1_arm.ipk
Installing eventlog (0.2.7-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/eventlog_0.2.7-1_arm.ipk
Installing psmisc (22.17-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/psmisc_22.17-1_arm.ipk
Configuring eventlog
Configuring glib
Configuring psmisc
update-alternatives: Linking //opt/bin/killall to /opt/bin/psmisc-killall
update-alternatives: Linking //opt/bin/pidof to /opt/bin/psmisc-killall
Configuring syslog-ng

To use syslog-ng, comment out any lines in /etc/inittab referring
to syslogd or klogd before you start syslog-ng for the first time.
After commenting the lines, run /opt/etc/init.d/S01syslog-ng.
The program will be started automaticaly at the next reboot.

Log files will be created by default in /opt/var/log.
Successfully terminated.
[root@LS210DF58 ~]#


上記の紫字部分に、

  syslog-ng を使用するには、syslog-ng を初めて起動する前に、syslogd または
  klogdを参照している /etc/inittab の行をコメント化します。
  行をコメント化した後、/opt/etc/init.d/S01syslog-ng を実行します。

  プログラムは、次回の再起動時に自動的に開始されます。

とありますが、/etc/inittab の各行をコメントアウトしてしまうと NAS を起動できなくなりますのでこのメッセージは無視します。


私は、疑問を懐きながらもコメントアウトして、再起動できなくなってしまいました。

修復のために、ディスクを Lubuntu PC につないで、これを元に戻して再起動できましたが、一時は慌てました。


 ::sysinit:/etc/init.d/rcS
 ::restart:/sbin/init
 ::shutdown:/etc/init.d/rcDown
 ::shutdown:/bin/umount -r /
 ::respawn:/sbin/agetty -L ttyS0 115200 vt100




実際の /etc/inittab は上記の内容ですが、冷静に考えると syslog-ng とバッティングするものはありません。




一度、syslog-ng を起動してみます。


[root@LS210DF58 ~]# /opt/etc/init.d/S01syslog-ng  start
[root@LS210DF58 ~]#


起動されました。


このままではまだ syslog server にはなっていませんので、/opt/etc/syslog-ng/syslog-ng.conf を編集します。


不要行を削除し、ログ対象のサーバー(ルーター RTX830 です)を定義します。




以下は編集後の /opt/etc/syslog-ng/syslog-ng.conf です。


syslog-ng は syslog や rsyslog とは少し設定ファイルが異なり、「構文」を持っています。

'options' と、'destination' と 'filter'、'log' からなり、それぞれ次の役割があります。


 'options'  :全般的なオプションを定義します 
 'destination':出力先を定義します
 'filter'    :入出力条件を定義します
 'log'    :’filter' 条件をどの 'destination' に適用するかを定義します。


[root@LS210DF58 ~]# cat  /opt/etc/syslog-ng/syslog-ng.conf
#
# Syslog-ng example configuration for for NSLU2 Unslung 3.x
#
# Copyright (c) 1999 anonymous
# Copyright (c) 1999 Balazs Scheidler
# $Id: syslog-ng.conf 5159 2007-01-12 20:37:44Z fcarolo $
#
# Syslog-ng configuration file, compatible with default Debian syslogd
# installation.
#

options { long_hostnames(off); sync(0); perm(0644); };
# 'perm(0644)' で作成されるログ・ファイルを root ユーザー以外が読めるようにする
# これは共用フォルダーに書かれたログファイルを Mac(PC)から読むためです

source src { pipe("/proc/kmsg");unix-stream("/dev/log"); internal(); udp(port(514)); };

destination authlog { file("/opt/var/log/auth.log"); };
destination syslog { file("/opt/var/log/syslog"); };
destination cron { file("/opt/var/log/cron.log"); };
destination daemon { file("/opt/var/log/daemon.log"); };
destination kern { file("/opt/var/log/kern.log"); };
destination messages { file("/opt/var/log/messages"); };
destination rtx830 { file("/mnt/disk1/Data/rtx830/${YEAR}${MONTH}${DAY}_rtx830.log"); };
# RTX830 のログファイルを NAS のデータフォルダーに置く
# ファイル名は 20191025_rtx830.log のように日付ごとに作成するようにする
# これによりログ・ローテーションが不要になる 

filter f_auth { facility(auth); };
filter f_authpriv { facility(auth, authpriv); };
filter f_syslog { not facility(authpriv, local1); };
# syslog から facility 'local1' を除外
filter f_cron { facility(cron); };
filter f_daemon { facility(daemon); };
filter f_kern { facility(kern); };
filter f_messages { level(info..warn) and not facility(auth, authpriv, local1); };
# messages から facility 'local1' を除外
filter f_rtx830 { facility(local1); };
# rtx830 の facility 'local1' を指定(rtx830 のログのファシリティ番号は 'local1'

log { source(src); filter(f_authpriv); destination(authlog); };
log { source(src); filter(f_syslog); destination(syslog); };
log { source(src); filter(f_cron); destination(cron); };
log { source(src); filter(f_daemon); destination(daemon); };
log { source(src); filter(f_kern); destination(kern); };
log { source(src); filter(f_messages); destination(messages); };
log { source(src); filter(f_rtx830); destination(rtx830); };
# rtx830 のログは destination(rtx830) とする設定
[root@LS210DF58 ~]#




構文チェックは次のようにします。
エラーがあればそのようにメッセージされ、なければプロンプトだけが戻ります。


[root@LS210DF58 ~]# /opt/etc/init.d/S01syslog-ng  -s
[root@LS210DF58 ~]#



エラーがなければ出力先のディレクトリを作成し syslog-ng を再起動します。

[root@LS210DF58 ~]# mkdir  -m  666  /mnt/disk1/data/rtx830
[root@LS210DF58 ~]# /opt/etc/init.d/S01syslog-ng  restart
[root@LS210DF58 ~]#


あとは RTX830 のログ出力先を RTX830 のコマンドで指定します。

syslog  host  1ww.xxx.yyy.zzz('1ww.xxx.yyy.zzz' は LS210D のアドレス)


このコマンドを入力すると YYYYMMDD_rtx830.log が作られて出力されます。



以上で、ネイティブ LS210D が syslog server になりました。




実際に LS210D の共用フォルダーを見てみますと下図のようになっています。

RTX830 ルーターのログが 20191025_rtx830.log / 20191026_rtx830.log ファイルとして採取されています。


日付ごとに採取されているのが見て取れます。

ログの中身にも 24:00 までが前日分、0:00 以降が本日分、というように採取されています。


したがって、ローテーションも不要です。




画像をクリックして拡大





NAS の共用フォルダーですから、いつでもログを見ることができますので便利です。

ログを見るためにルーターにログインしなくても済みます。



Mac の場合は .log はデフォルトではコンソールアプリが表示しますが、テキストエディターなどでも見ることができます。





ipkg によって、こういうことが可能になりますので Debian Server 化は結果的にはしなくても済んだことになります。









8 件のコメント:

Unknown さんのコメント...

こんにちは。Link Station LS220DN0402にssh、ipkg、syslog-ngを入れてsyslogサーバーにできました。が、通常の管理画面からユーザーを追加するとsshでログインできなくなりました。rootパスワード不一致です。また共有フォルダもLANからアクセスできなくなります。初期化して何度か試してみましたが同じでした。せっかくsyslog-ngが動いたのに通常運用ができないのが残念です。何か回避策があればご教示ください。

bike86-3 さんのコメント...

ノイさん、こんにちは。

通常の管理画面からではなく、ターミナルプロンプトからコマンドでユーザ追加してみてください。

Unknown さんのコメント...

お返事ありがとうございます。
再度syslog-ngまで入れて動作確認、再起動後にsshでログインしてuseraddで追加してみました。何も問題なく動作しています。再起動後もOKでした。通常の管理画面からユーザー追加した場合だけ先の症状になるようです。

Unknown さんのコメント...

追伸です:sshで入って追加したユーザーはpasswdとshadowには表示されますが、管理画面のユーザーリストには追加されませんでした。(管理画面で追加したユーザーはpasswdとshadowに存在します)

bike86-3 さんのコメント...

ノイさん、おはようございます。

管理画面の方は、NAS アプリのものではないでしょうか。
Linux のユーザとは違う扱いだと思われます。

Unknown さんのコメント...

おはようございます。
はい。NASアプリ(http)の管理画面です。ここからユーザー追加登録するとpasswdとshadowに反映されます。しかしsshで入ってuseraddで追加したユーザーは管理画面のユーザーには出てきません。なんか変ですね(w

匿名 さんのコメント...

お世話になります。当ページを参考に、Syslogサーバを立ち上げることができました。ありがとうございます。
もしご存知でしたら教えていただきたいのですが、コマンド入力でサービスを起動することはできるのですが、Linkstationを再起動するとプロセスが起動されず、再起動のたびにコマンドを入力しています。もし、自動実行の方法をご存知でしたら教えていただけないでしょうか?

bike86-3 さんのコメント...

おはようございます、お返事が遅れてすみません。

/etc/rc0.d(/etc/rc.d かも知れません)の配下にスクリプトを追加し、そのスクリプトに起動コマンドを記述してみてください。

現在 Linkstation は手元にありませんので私の方で実機での確認はできません。