Vyatta(VyOS)にsyslogを設定する方法を説明します。
設定まとめ
コマンドまとめ
以下のコマンドでsyslog転送を定義します。
ここで注意すべきは、ciscoやjuniperなどのネットワークOSのような設定ではなくrsyslogの設定に近い事を意識して下さい。Vyattaで指定したファシリティで指定したログレベル以上が出力されます。
set system syslog host <syslogサーバ> facility <ファシリティ> level <ログレベル>
例えば、以下の設定は「Vyattaで発生したログのうちinfo以上のものをlocal0として転送する」というのがciscoやjuniper経験者のイメージですが、実際の挙動は「Vyattaで発生したlocal0のイベントのうちinfo以上のものを送付する」という挙動です。Vyattaではlocal0のイベントは発生しないので、以下の設定では何もログは転送されないでしょう。
set system syslog host <syslogサーバ> facility local0 level info
以下のような設定ならば、「daemonのinfo以上を転送する」という意味です。
set system syslog host <syslogサーバ> facility daemon level info
取捨選択せずに全部のログを転送するならば、以下のように設定します。
set system syslog host <syslogサーバ> facility all level all
以下のコマンドでudpで送付するかtcpで送付するかを指定できます。省略時はudpです。
set system syslog host <syslogサーバ> facility <ファシリティ> protocol {udp|tcp}
設定の追跡
VyOSはDebianを元にしたOSです。ですので、上記のsetコマンドを実行すると、内部的にはrsyslogの設定が生成されます。想定外の挙動をした場合は、rsyslogの設定を追跡してみましょう。/etc/rsyslog.d/vyos-rsyslog.confにsetコマンドで指定した設定が格納されています。
vyos@vy001:~$ show configuration commands | grep syslog set system syslog host 192.168.10.10 facility authpriv level 'err' set system syslog host 192.168.10.10 facility authpriv protocol 'tcp' set system syslog host 192.168.10.10 facility daemon level 'info' set system syslog host 192.168.10.10 facility daemon protocol 'tcp' vyos@vy001:~$ vyos@vy001:~$ vyos@vy001:~$ cat /etc/rsyslog.d/vyos-rsyslog.conf ## generated by syslog.py ## ## file based logging $outchannel global,/var/log/messages,262144,/usr/sbin/logrotate /etc/logrotate.d/vyos-rsyslog *.notice;local7.debug :omfile:$global ## console logging ## remote logging authpriv.err;daemon.info @@192.168.10.10
動作確認
動作確認の構成
以下の環境で動作確認を行います。社内端末向けの環境を想定し、クライアント端末からプロキシサーバ(squid)を経由してWeb(apache)へ通信する要件を想定します。
+-----------------------+ | host010 | | | +-----------+-----------+ ens224 | .10 | | 192.168.10.0/24 | eth0 | .1 +-----------+-----------+ | vy001 | | | +-----------------------+
初期設定
初期設定はIPアドレスのみとします。
動作確認 snmptrapの有効化
全てのログを転送する設定を入れます。
[vy001:VyOS1.4] set system syslog host 192.168.10.10 facility all level all
サーバにてsyslogを受信している事を確認します。。確認方法は、syslogdサーバを構築したりパケットキャプチャなどで確認する事ができます。
[host010:RockyLinux8.4] [root@host010 ~]# tail -f /var/log/messages Aug 31 21:35:37 vy001 ospfd[1054]: [EC 100663310] snmp[warning]: Warning: Failed to connect to the agentx master agent ([NIL]): Aug 31 21:35:42 vy001 systemd[1]: serial-getty@ttyS0.service: Succeeded. Aug 31 21:35:43 vy001 systemd[1]: serial-getty@ttyS0.service: Scheduled restart job, restart counter is at 235. Aug 31 21:35:43 vy001 systemd[1]: Stopped Serial Getty on ttyS0. Aug 31 21:35:43 vy001 systemd[1]: Started Serial Getty on ttyS0. [root@host010 ~]# tcpdump -nnn -i ens224 port 514 dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens224, link-type EN10MB (Ethernet), capture size 262144 bytes 21:37:14.868150 IP 192.168.10.1.34994 > 192.168.10.10.514: SYSLOG daemon.info, length: 76 21:37:15.099600 IP 192.168.10.1.34994 > 192.168.10.10.514: SYSLOG daemon.info, length: 115 21:37:15.099636 IP 192.168.10.1.34994 > 192.168.10.10.514: SYSLOG daemon.info, length: 68 21:37:15.101279 IP 192.168.10.1.34994 > 192.168.10.10.514: SYSLOG daemon.info, length: 68 21:37:15.116045 IP 192.168.10.1.34994 > 192.168.10.10.514: SYSLOG authpriv.error, length: 61