filebeat中一种替换timestamp方法

文章讲述了如何通过JavaScript脚本在Filebeat中替换日志事件的时间戳,并设定时区为UTC,以避免Elasticsearch进一步处理。这种方法避免了对时间进行+8小时的调整,且强调在查询ES时应假设时间已是本地时间。示例脚本展示了从日志消息中提取时间并将其设置为新的时间字段的过程,同时展示了dissect和drop_fields配置来清理和结构化数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时要用日志文件中的时间来替换filebeat自带的timestamp,同时还要解决时区问题,方法如下:

通过网上相关搜索采用JS脚本来实现,再将时区就指定为UTC,这样ES不对会它做处理,相应值不会变(网上其它办法是指定本地时区,然后再对时间做+8处理)。这样就要注意按本地时间对ES进行查询时就不要再对时间做处理了,你就认为ES中timestamp时间已经是本地时间了。

例子脚本如下:

- script:

lang: javascript

source: >

function process(event) {

var str = event.Get("message");

var date = str.substr(1,23);

event.Put("start_time",date);

}

- timestamp:

field: start_time

timezone: UTC (这里注意就用UTC时间,ES默认用UTC,这样时间值不变)

layouts:

- '2006-01-02 15:04:05.999'

#- '2006-01-02T15:04:05.999Z'

- dissect:

tokenizer: "[%{Timestamp}][%{ThreadID}][%{LogLevel}][%{Msg}]"

target_prefix: "Message"

- drop_fields:

fields: ["input","ecs","container","agent","start_time"] (将临时产生的start_time字段去掉)

注意日志中时间格式要跟timestamp中的一样,如2023-03-16 11:22:42.724179

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值