システム上のすべてのイベントをsyslog-ng
を介してJSONファイルに記録します。
destination d_json { file("/var/log/all_syslog_in_json.log" perm(0666) template("{\"@timestamp\": \"$ISODATE\", \"facility\": \"$FACILITY\", \"priority\": \"$PRIORITY\", \"level\": \"$LEVEL\", \"tag\": \"$TAG\", \"Host\": \"$Host\", \"program\": \"$PROGRAM\", \"message\": \"$MSG\"}\n")); };
log { source(s_src); destination(d_json); };
このファイルは、コンテンツをlogstash
(2.0 RC1)に転送するelasticsearch
(2.0ベータ)によって監視されます。
input
{
file
{
path => "/var/log/all_syslog_in_json.log"
start_position => "beginning"
codec => json
sincedb_path => "/etc/logstash/db_for_watched_files.db"
type => "syslog"
}
}
output {
elasticsearch {
hosts => ["elk.example.com"]
index => "logs"
}
}
次に、結果をkibana
で視覚化します。
この設定は、kibana
がmessage
部分を展開しないことを除いて正常に機能します。
処理チェーンの要素のいずれかを微調整して、messages
の拡張を有効にすることは可能ですか(そのコンポーネントがpath
またはtype
と同じレベルになるように)。
編集:要求に応じて、/var/log/all_syslog_in_json.log
から数行
{"@timestamp": "2015-10-21T20:14:05+02:00", "facility": "auth", "priority": "info", "level": "info", "tag": "26", "Host": "eu2", "program": "sshd", "message": "Disconnected from 10.8.100.112"}
{"@timestamp": "2015-10-21T20:14:05+02:00", "facility": "authpriv", "priority": "info", "level": "info", "tag": "56", "Host": "eu2", "program": "sshd", "message": "pam_unix(sshd:session): session closed for user nagios"}
{"@timestamp": "2015-10-21T20:14:05+02:00", "facility": "authpriv", "priority": "info", "level": "info", "tag": "56", "Host": "eu2", "program": "systemd", "message": "pam_unix(systemd-user:session): session closed for user nagios"}