我已配置 filebeat 以收集我的结构化日志输出(新建项目,因此每个日志条目都是预定义格式的 JSON 文档)并将其直接发布到 ELS。
示例日志文件摘录(请注意,它additional
是自由格式,所有其他属性都是固定的。这篇文章的格式非常漂亮,但每个顶级对象都在文件中的一行上):
{
"TimeUtc": "2016-09-23T14:13:02.217520245Z",
"ServiceKey": "MAAS_SVC",
"Title": "Get All Campaigns - Start",
"Additional": {
"HTTPRequest": {
"Method": "GET",
"URL": {
"Scheme": "",
"Opaque": "",
"User": null,
"Host": "",
"Path": "/admin/campaigns",
"RawPath": "",
"ForceQuery": false,
"RawQuery": "",
"Fragment": ""
},
"Proto": "HTTP/1.1",
"ProtoMajor": 1,
"ProtoMinor": 1,
"Header": {
"Accept": ["*/*"],
"Accept-Encoding": ["gzip, deflate"],
"Connection": ["keep-alive"],
"Requestkey": ["78478050-47f0-4d0d-44e8-615d0599574a"],
"User-Agent": ["python-requests/2.7.0 CPython/2.7.12 Linux/3.13.0-74-generic"]
},
"Body": {
"Closer": {
"Reader": null
}
},
"ContentLength": 0,
"TransferEncoding": null,
"Close": false,
"Host": "xxxxxxxxx",
"Form": null,
"PostForm": null,
"MultipartForm": null,
"Trailer": null,
"RemoteAddr": "xxx.xxx.xxx.xxx",
"RequestURI": "/admin/campaigns",
"TLS": null,
"Cancel": ,
"Response": null
}
},
"RequestKey": "78478050-47f0-4d0d-44e8-615d0599574a",
"HostAddress": "xxxxxxxxx"
}
这会导致 filebeat 向 ELS 发出以下请求:
{
"@timestamp": "2016-10-12T13:53:21.597Z",
"beat": {
"hostname": "7bca0e28e69e",
"name": "7bca0e28e69e"
},
"count": 1,
"fields": null,
"input_type": "log",
"message": "{\"TimeUtc\":\"2016-09-23T14:13:02.217520245Z\",\"ServiceKey\":\"MAAS_SVC\",\"Title\":\"Get All Campaigns - Start\",\"Additional\":{\"HTTPRequest\":{\"Method\":\"GET\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"/admin/campaigns\",\"RawPath\":\"\",\"ForceQuery\":false,\"RawQuery\":\"\",\"Fragment\":\"\"},\"Proto\":\"HTTP/1.1\",\"ProtoMajor\":1,\"ProtoMinor\":1,\"Header\":{\"Accept\":[\"*/*\"],\"Accept-Encoding\":[\"gzip, deflate\"],\"Connection\":[\"keep-alive\"],\"Requestkey\":[\"78478050-47f0-4d0d-44e8-615d0599574a\"],\"User-Agent\":[\"python-requests/2.7.0 CPython/2.7.12 Linux/3.13.0-74-generic\"]},\"Body\":{\"Closer\":{\"Reader\":null}},\"ContentLength\":0,\"TransferEncoding\":null,\"Close\":false,\"Host\":\"bistromath.marathon.mesos:40072\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"172.20.1.70:42854\",\"RequestURI\":\"/admin/campaigns\",\"TLS\":null,\"Cancel\":,\"Response\":null}},\"RequestKey\":\"78478050-47f0-4d0d-44e8-615d0599574a\",\"HostAddress\":\"ba47316c9c45\"}",
"offset": 0,
"source": "/filebeat/log-harvest/maas-service-single.log",
"type": "log"
}
我可以防止 filebeat 转义我的日志 JSON 以使其成为嵌套对象而不是字符串,还是我需要修补 filebeat?