Logstash8.3.3 parse 包含a(AM PM)时间报错_dateparsefailure

遇到个奇奇怪怪的错误,我log中的时间是2023/08/24 12:01:39 AM,我写的格式化时间和转成东八区时间,但是就是一直报错_dateparsefailure,我反复检查了format没有问题,[xxxx][timestamp]这个字段从grok读出来也是正确的,百思不得其解。

 如果是这种的format的话,在grok就直接可以用TIMESTAMP_ISO8601提取,但是如果有AM或者PM的情况这样的grok就不可以了。

//2023-08-21 14:58:51,707
%{TIMESTAMP_ISO8601:[xxxx][timestamp]}

 就需要这样了,单独用年月日时分秒提取,然后拼接成具体时间,之后remove掉temp字段就可以了

grok {
			match => {
				"message" => [
					"%{YEAR:[xxxx][temp][year]}/%{MONTHNUM:[xxxx][temp][month]}/%{MONTHDAY:[xxxx][temp][day]}\s%{HOUR:[xxxx][temp][hour]}:%{MINUTE:[xxxx][temp][minute]}:%{SECOND:[xxxx][temp][second]}\s%{WORD:[xxxx][temp][ampm]}"
				]
			}
			break_on_match => true
		}
		mutate {
    		add_field => { "[xxxx][timestamp]" => "%{[xxxx][temp][year]}/%{[xxxx][temp][month]}/%{[xxxx][temp][day]} %{[xxxx][temp][hour]}:%{[xxxx][temp][minute]}:%{[xxxx][temp][second]} %{[xxxx][temp][ampm]}"}
		}

	mutate{
		remove_field => [ "[xxxx][temp]" ]
	}
date {
	match => [ "[xxxx][timestamp]", "yyyy/MM/dd HH:mm:ss a"]
	timezone => "Asia/Singapore"
	target => "[xxxx][timestamp]"
}

然后结合我之前遇到类似问题的经验,尝试了一个办法就是把laptop的Region Format改成东八区的英文(需要重启laptop), 这样之后就没有出现问题了。具体的原因不清楚,不知道为什么本地的regional format会影响整个parse。但是就是解决了,如果之后我找到了具体的原因之后我会更新blog的,现在展示提出一个我可以解决的方案。

参考我之前的Blog:

can'kDate.toLocaleString()不同系统语言之会返回不同的format(可能导致我查的出来数据别人查不出来)_Damien_J的博客-CSDN博客

Update

        找到问题原因了,我直接问new bing,它不会考虑到这个东西,必须我提到region format它才会返回这个解决方案.
        总结就是手动指定local来避免laptop不同的region format导致的parse问题。

date {
			match => [ "[xxxx][timestamp]", "yyyy/MM/dd HH:mm:ss a"]
			timezone => "Asia/Singapore"
			target => "[xxxx][timestamp]"
			locale => "en"
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值