
私は初めてsyslog-ngを使用し、外部デバイスからsyslogへの書き込みをテストしたいと思います。外部デバイスは、ポート516のsyslogに「接続」されていることを示します。しかし、私のCentOS7ホストではログファイルには何も記録されません(現在/var/log/messagesにエラーが発生します)。 localhost:516にTelnetを接続して(テストで)いくつかのテキストをダンプしようとしましたが、どこにも何も記録されませんでした。 netstat は、syslog が tcp 516 でリッスンしていることを確認します。
私の設定は次のとおりです。
source s_test {
system()
internal()
syslog(ip(0.0.0.0) port(516) transport("tcp"));
};
destination d_test { file("/var/log/test"); };
log { source(s_test); destination(d_test); };
私の設定に問題がありますか?
答え1
いくつかのバグがあります。次のいずれかで終了する必要がありますsystem()
。internal()
;
source s_test {
system();
internal();
syslog(ip(0.0.0.0) port(516) transport("tcp"));
};
destination d_test { file("/var/log/test"); };
log { source(s_test); destination(d_test); };
手動で起動すると、新しいエラーと警告が生成されますsyslog-ng
(次のメッセージはsystemd
Centos 7でのデバッグには役に立ちません)。
# syslog-ng -F -p /var/run/syslogd.pid
WARNING: Configuration file has no version number, assuming syslog-ng 2.1 format. Please add @version: maj.min to the beginning of the file to indicate this explicitly;
...
Error parsing source, source plugin system not found in /etc/syslog-ng/syslog-ng.conf at line 16, column 5:
system();
^^^^^^
syslog-ng
デフォルトの設定ファイルに次の文を含めることで、これらの問題を解決できます。
@version:3.5
@include "scl.conf"
source s_test {
system();
internal();
syslog(ip(0.0.0.0) port(516) transport("tcp"));
};
destination d_test { file("/var/log/test"); };
log { source(s_test); destination(d_test); };
今始めましょうsyslog-ng
:
# syslog-ng -F -p /var/run/syslogd.pid
...
しかし、logger(1)
他の端末でのテストは失敗します。ログに
/var/log/test
エラーが報告されますInvalid frame header
。
# logger --server 127.0.0.1 --tcp --port 516 foo
これはnetwork
代わりに次のように変更できますsyslog
。
@version:3.5
@include "scl.conf"
source s_test {
system();
internal();
network(ip(0.0.0.0) port(516) transport("tcp"));
};
destination d_test { file("/var/log/test"); };
log { source(s_test); destination(d_test); };
syslog
それでもリモートデバイスに必要かどうかはわかりませんnetwork
。