Мы используем Serilog HTTP sink для отправки сообщений в Logstash. Но тело сообщения HTTP таково:Serilog HTTP sink + Logstash: разбиение массива сообщений Serilog на отдельные события журнала
{
"events": [
{
"Timestamp": "2016-11-03T00:09:11.4899425+01:00",
"Level": "Debug",
"MessageTemplate": "Logging {@Heartbeat} from {Computer}",
"RenderedMessage": "Logging { UserName: \"Mike\", UserDomainName: \"Home\" } from \"Workstation\"",
"Properties": {
"Heartbeat": {
"UserName": "Mike",
"UserDomainName": "Home"
},
"Computer": "Workstation"
}
},
{
"Timestamp": "2016-11-03T00:09:12.4905685+01:00",
"Level": "Debug",
"MessageTemplate": "Logging {@Heartbeat} from {Computer}",
"RenderedMessage": "Logging { UserName: \"Mike\", UserDomainName: \"Home\" } from \"Workstation\"",
"Properties": {
"Heartbeat": {
"UserName": "Mike",
"UserDomainName": "Home"
},
"Computer": "Workstation"
}
}
]
}
ie. события регистрации группируются в массиве. Можно отправлять сообщения один за другим, но он по-прежнему является массивом из одного элемента.
событие будет отображаться в Kibana как имеющий поле message
со значением
{
"events": [
{
// ...
},
{
// ...
}
]
}
т.е.. буквально то, что исходило от ввода HTTP.
Как я могу разделить элементы в events
массива отдельных событий лесозаготовительных и «подтянуть» свойства до верхнего уровня, так что я бы две записи событий в ElasticSearch:
"Timestamp": "2016-11-03T00:09:11.4899425+01:00",
"Level": "Debug",
"MessageTemplate": "Logging {@Heartbeat} from {Computer}",
"RenderedMessage": "Logging { UserName: \"Mike\", UserDomainName: \"Home\" } from \"Workstation\"",
"Properties": {
"Heartbeat": {
"UserName": "Mike",
"UserDomainName": "Home"
},
"Computer": "Workstation"
}
"Timestamp": "2016-11-03T00:09:12.4905685+01:00",
"Level": "Debug",
"MessageTemplate": "Logging {@Heartbeat} from {Computer}",
"RenderedMessage": "Logging { UserName: \"Mike\", UserDomainName: \"Home\" } from \"Workstation\"",
"Properties": {
"Heartbeat": {
"UserName": "Mike",
"UserDomainName": "Home"
},
"Computer": "Workstation"
}
Я попытался Logstash json и split, но я не могу это сделать Работа.
Вы должны были обновить свой вопрос, чтобы упомянуть версию Logstash, в которой работало предыдущее решение, и создал новый вопрос с новой версией и вашим новым решением. – Val
@Val Я не думаю, что это общий консенсус: https://meta.stackoverflow.com/q/265433/466738 https://meta.stackoverflow.com/q/268466/466738. Тем не менее, я ценю ваш ответ для Logstash 2.x! –
Достаточно честный, не беспокойтесь – Val