Я пытаюсь переслать сообщения системного журнала в Logstash, а затем в Elasticsearch.
В исходной системе я создал /etc/rsyslog.d/logstash.conf
:
*.* action(type="omfwd" target="elk.example.com" port="50513" protocol="tcp")
На elk.example.com
конфигурация Logstash очень проста:
input {
tcp {
port => 50513
type => syslog
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
}
После запуска logger hello
в исходной системе сообщения, которые я вижу в Kibana:
{
"_index": "logstash-2019.03.12",
"_type": "doc",
"_id": "0DWkcWkB9fKcBjDya4El",
"_version": 1,
"_score": null,
"_source": {
"host": "domotique.example.com",
"message": [
"<13>Mar 12 12:23:14 domotique root: hello",
"hello"
],
"@timestamp": "2019-03-12T11:23:14.475Z",
"@version": "1",
"port": 43752,
"timestamp": "Mar 12 12:23:14",
"logsource": "domotique",
"program": "root",
"type": "syslog"
},
"fields": {
"@timestamp": [
"2019-03-12T11:23:14.475Z"
]
},
"sort": [
1552389794475
]
}
Почему hello
дублируется (и добавляется запятая)?
Это само по себе является проблемой. Следствием этого является то, что формат системного журнала не был распознан, но благодаря другому вопросу я добавил
filter {
if [type] == "syslog" {
grok {
match => { "message" => "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
}
}
}
в качестве фильтра, который решает проблему (см. "syslog_message": "hello"
ниже):
{
"_index": "logstash-2019.03.12",
"_type": "doc",
"_id": "fDWtcWkB9fKcBjDynoPf",
"_version": 1,
"_score": null,
"_source": {
"timestamp": "Mar 12 12:33:17",
"syslog_pri": "13",
"type": "syslog",
"@version": "1",
"host": "domotique.example.com",
"logsource": "domotique",
"program": "root",
"@timestamp": "2019-03-12T11:33:17.534Z",
"syslog_program": "root",
"port": 52636,
"syslog_message": "hello",
"syslog_hostname": "domotique",
"message": [
"<13>Mar 12 12:33:17 domotique root: hello",
"hello"
],
"syslog_timestamp": "Mar 12 12:33:17"
},
"fields": {
"@timestamp": [
"2019-03-12T11:33:17.534Z"
]
},
"highlight": {
"syslog_message.keyword": [
"@kibana-highlighted-field@hello@/kibana-highlighted-field@"
],
"message": [
"<13>Mar 12 12:33:17 domotique root: @kibana-highlighted-field@hello@/kibana-highlighted-field@",
"@kibana-highlighted-field@hello@/kibana-highlighted-field@"
],
"syslog_message": [
"@kibana-highlighted-field@hello@/kibana-highlighted-field@"
]
},
"sort": [
1552390397534
]
}
Тем не менее: почему сообщение дублируется в первую очередь?