如何使用FileBeat从日志行设置字段

时间:2017-01-04 10:52:05

标签: logging redis elastic-stack filebeat

在Windows Server上,我有一个FileBeat进程,它接收我所有的NCSA日志(NCSA格式的HTTP请求)并将它们发送到我们的redis数据库(用于ELK堆栈的缓冲区)。

我第一次执行FileBeat进程时,它将我的所有日​​志都发送到Redis,完美,除了@timestamp在执行当天设置而不是日志本身(我有6个月)历史)。 由于6个月的日志历史记录同时(分钟),因此在Kibana看起来不太好。

我每天有一个文件,我想知道在filebeat配置中是否可以从日志文件本身中提取时间戳来设置@timestamp,以便每个行/文件都有正确的时间? / p>

日志行如下所示:

172.16.70.18 -  -  [03/Dec/2016:09:24:24 +0000] "GET /svc/product/v2/IDCDN8QH00?sid=mobile HTTP/1.1" 404 411 "-" "Jakarta Commons-HttpClient/3.1"
172.16.70.18 -  -  [03/Dec/2016:13:00:52 +0000] "GET /svc/asset/v2/560828?sid=mobile HTTP/1.1" 200 6670 "-" "Jakarta Commons-HttpClient/3.1"
172.16.82.232 -  -  [03/Dec/2016:15:15:55 +0000] "GET /svc/store/v1?sid=tutu&lang=en&lang=fr HTTP/1.1" 200 828 "-" "Apache-HttpClient/4.5.1 (Java/1.7.0_51)"
172.16.82.235 -  -  [02/Dec/2016:15:15:55 +0000] "GET /svc/asset/v1?sid=tutu&size=1 HTTP/1.1" 200 347 "-" "Apache-HttpClient/4.5.1 (Java/1.7.0_51)"
172.16.82.236 -  -  [02/Dec/2016:15:16:02 +0000] "GET /svc/product/v2?sid=tutu HTTP/1.1" 200 19226 "-" "Apache-HttpClient/4.5.1 (Java/1.7.0_51)"
172.16.82.237 -  -  [02/Dec/2016:15:16:14 +0000] "GET /svc/catalog/v2?sid=tutu HTTP/1.1" 200 223174 "-" "Apache-HttpClient/4.5.1 (Java/1.7.0_51)"
172.16.82.238 -  -  [02/Dec/2016:15:16:26 +0000] "GET /svc/store/v1?sid=tutu&lang=en&lang=fr HTTP/1.1" 200 3956 "-" "Apache-HttpClient/4.5.1 (Java/1.7.0_51)"
172.16.70.15 -  -  [01/Dec/2016:15:53:42 +0000] "GET /svc/product/v2/IDAB062200?sid=mobile HTTP/1.1" 200 5400 "-" "Jakarta Commons-HttpClient/3.1"
172.16.70.17 -  -  [01/Dec/2016:15:53:42 +0000] "GET /svc/product/v2/IDAB800851?sid=mobile HTTP/1.1" 200 3460 "-" "Jakarta Commons-HttpClient/3.1"
172.16.70.18 -  -  [01/Dec/2016:16:35:36 +0000] "GET /svc/product/v2/IDAB601071?sid=mobile HTTP/1.1" 404 400 "-" "Jakarta Commons-HttpClient/3.1"
172.16.70.18 -  -  [01/Dec/2016:16:35:36 +0000] "GET /svc/product/v2/IDCDN8QH00?sid=mobile HTTP/1.1" 401 400 "-" "Jakarta Commons-HttpClient/3.1"

此外,我想知道我是否可以使用处理器,例如使用第一列的内容创建一个新字段“IP”。

我看到了similar post,但它看起来只与ElasticSearch直接集成有效。 我的FileBeat outpout是Redis。

1 个答案:

答案 0 :(得分:1)

Filebeat唯一的解析功能是JSON日志。因此,如果您可以更改服务器以JSON格式写入数据,则可以在不触及管道的其余部分的情况下完成此操作(Redis - > Logstash - > Elasticsearch)。

否则,在将数据写入Redis之前,您需要使用Logstash进行解析。你可以运行Filebeat - > Logstash - > Redis或只是Logstash - > Redis的。

或者,如果您可以修改上游Logstash配置,则可以在那里进行解析。