我們使用Serilog HTTP sink將消息發送到Logstash。但HTTP消息正文是這樣的:Serilog HTTP接收器+ 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爲具有值
{
"events": [
{
// ...
},
{
// ...
}
]
}
即字段message
。字面上來自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