これずっとうまく動かなかったんだけど、やっとわかったよ。
ログホストに全部送る
source src { unix-stream("/dev/log"); internal(); };
destination loghost { udp("loghost" port(514)); };
log { source(src); destination(loghost); };
ログ受け取るほうはこれだけでいいよ。
source net { udp(ip("0.0.0.0") port(514)); };
destination hosts {
file("/var/log/HOSTS/$HOST/$YEAR/$MONTH/$DAY/$FACILITY$YEAR$MONTH$DAY"
owner(root) group(root) perm(0600) dir_perm(0700) create_dirs(yes));
};
log { source(net); destination(hosts); };
なるほどねぇ。
でもさ、仕方ないのかな、ホスト名がFQDNじゃないから、
同じホスト名だとかなり厳しいものがある。
俺の管理してるマシンはドメインが違って、全部ホスト名nsだったりして...
$FULLHOSTっていうマクロもドキュメントにあったけど、実装されてないぽい。
空になるもの...
ちなみにsyslog-ngはホストごとに振り分けられるだけじゃなくて、
- プログラムの名称(正規表現match)
- ログの内容の正規表現match
- UDPじゃなくてTCP接続の使用
- 当然ポート指定可能なのでstunnelとか通せる
- pipeやプログラムにもログ渡せるよ
って感じぽいです。
動いてみれば、かなり素敵。
最近のコメント