前提
OpenWRTで収集したログをGraylogに送信する。
ただしOpenWRT側はあまりGraylogに依存していないので、送信先はGraylog以外でも構わない。
Graylogのログ受信設定
- Graylogのログ受信設定は以下を参照する
https://www.designet.co.jp/ossinfo/graylog/manual/input.php
OpenWRTでログを収集したい場合
基本的に/etc/config/system
を編集してやれば良い。
編集後は、以下のコマンドを実行して適用してやる必要がある。
service log restart
service system restart
/ect/config/systemファイルの設定例:
config system
option hostname 'OpenWrt'
option timezone 'UTC'
option ttylogin '0'
option log_size '64'
option urandom_seed '0'
option log_file '/var/log/mylog'
option log_remote '1'
option log_ip リモートサーバのIPアドレス
option log_port 5555
option log_proto tcp
OpenWRTでsyslog的なものをログファイルに書き込む
- 以下の資料を参考に、
/etc/config/system
を編集してファイルにログを書き込む設定を行う。
https://openwrt.org/docs/guide-user/base-system/log.essentials#local_file_logging
設定例:
/etc/config/system
config system
option log_file '/var/log/mylog'
※ 上記の公式ドキュメントにはoption log_remote '0'
も設定されているが、0のままだとリモートサーバにログを送信出来ないので注意。1にしてもログファイルにはちゃんと書き込まれる。
OpenWRTで書き込んだログファイルのログローテート設定
- OpenWRTに以下のコマンドでlogrotateのパッケージをインストールする
opkg update
opkg install logrotate
- 以下の資料を参考に、ログローテートの設定を行う
https://openwrt.org/docs/guide-user/base-system/log.essentials#logrotate
↓毎晩ローテーションし、ログファイルを一週間保持する設定(コマンドを実行)
cat << "EOF" > /etc/logrotate.conf
include /etc/logrotate.d
/var/log/mylog {
daily
rotate 1
missingok
notifempty
postrotate
service log restart
sleep 1
logger -p warn -s "Log rotation complete"
endscript
}
EOF
cat << "EOF" >> /etc/crontabs/root
58 23 * * * logrotate /etc/logrotate.conf
EOF
service cron restart
logrotateをデバッグするには、以下のコマンドを使用する
logrotate --verbose --debug /etc/logrotate.conf
OpenWRTでログをリモートサーバに送信する
- 以下の資料を参考に、
/etc/config/system
を編集してリモートサーバへログ送信する設定を行う。
https://openwrt.org/docs/guide-user/base-system/log.essentials#network_logging
設定例:
/ect/config/system
config system
option log_remote '1'
option log_ip リモートサーバのIPアドレス
option log_port 5555
option log_proto tcp
※ あらかじめGraylogのInputでRaw/Plaintext TCP
を設定しておく
※ Graylog側でポートを制限している場合は忘れずにポート開放しておくこと(docker-compose.ymlのportsとか)