我有一个来自日志文件的时间戳,如{“ts”:“1486418325.948487”} 我的基础设施是“filebeat”5.2.0 - > “elasticsearch”5.2
我尝试将“ts”映射到“date” - “epoch_second”但是在filebeat中写入失败。
PUT /auth_auditlog
{
"mappings": {
"auth-auditlogs": {
"properties": {
"ts": {
"type": "date",
"format": "epoch_second"
}
}
}
}
}
filebeat错误消息类似
WARN Can not index event (status=400): {"type":"mapper_parsing_exception","reason":"failed to parse [ts]","caused_by":{"type":"illegal_argument_exception","reason":"Invalid format: \"1486418325.948487\""}}
我尝试使用“1486418325”是可以的,所以我猜es不接受十进制格式的时间戳。但是,python默认输出时间戳是这种格式。
我的目的是在elasticsearch中正确输入。我想使用ts作为elasticsearch中的原始时间戳。 除了更改原始日志数据外,欢迎使用任何解决方案!
答案 0 :(得分:1)
Filebeat没有针对此类内容的处理器。您无法用Filebeat中的日志替换@timestamp
。您可以做的是将该内容发送到logstash并让date
过滤器解析时代。
date {
match => ["timestamp","UNIX","UNIX_MS"]
}
另一种选择是使用摄取节点。虽然我自己也没有使用它,但它似乎也能够完成这项工作。查看文档here。