なぜか、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 件のコメント:
こんにちは。Link Station LS220DN0402にssh、ipkg、syslog-ngを入れてsyslogサーバーにできました。が、通常の管理画面からユーザーを追加するとsshでログインできなくなりました。rootパスワード不一致です。また共有フォルダもLANからアクセスできなくなります。初期化して何度か試してみましたが同じでした。せっかくsyslog-ngが動いたのに通常運用ができないのが残念です。何か回避策があればご教示ください。
ノイさん、こんにちは。
通常の管理画面からではなく、ターミナルプロンプトからコマンドでユーザ追加してみてください。
お返事ありがとうございます。
再度syslog-ngまで入れて動作確認、再起動後にsshでログインしてuseraddで追加してみました。何も問題なく動作しています。再起動後もOKでした。通常の管理画面からユーザー追加した場合だけ先の症状になるようです。
追伸です:sshで入って追加したユーザーはpasswdとshadowには表示されますが、管理画面のユーザーリストには追加されませんでした。(管理画面で追加したユーザーはpasswdとshadowに存在します)
ノイさん、おはようございます。
管理画面の方は、NAS アプリのものではないでしょうか。
Linux のユーザとは違う扱いだと思われます。
おはようございます。
はい。NASアプリ(http)の管理画面です。ここからユーザー追加登録するとpasswdとshadowに反映されます。しかしsshで入ってuseraddで追加したユーザーは管理画面のユーザーには出てきません。なんか変ですね(w
お世話になります。当ページを参考に、Syslogサーバを立ち上げることができました。ありがとうございます。
もしご存知でしたら教えていただきたいのですが、コマンド入力でサービスを起動することはできるのですが、Linkstationを再起動するとプロセスが起動されず、再起動のたびにコマンドを入力しています。もし、自動実行の方法をご存知でしたら教えていただけないでしょうか?
おはようございます、お返事が遅れてすみません。
/etc/rc0.d(/etc/rc.d かも知れません)の配下にスクリプトを追加し、そのスクリプトに起動コマンドを記述してみてください。
現在 Linkstation は手元にありませんので私の方で実機での確認はできません。
コメントを投稿