2019年10月24日木曜日

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 件のコメント:

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

    返信削除
    返信
    1. ノイさん、こんにちは。

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

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

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

    返信削除
    返信
    1. ノイさん、おはようございます。

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

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

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

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

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

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

      削除