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

2023-09-19 11:09:30

遇到个奇奇怪怪的错误,我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"
		}

更多推荐

深入探讨Java面试中内存泄漏:如何识别、预防和解决

引言在编写和维护Java应用程序时,内存泄漏是一个重要的问题,可能导致性能下降和不稳定性。本文将介绍内存泄漏的概念,为什么它在Java应用程序中如此重要,并明确本文的目标,即识别、预防和解决内存泄漏问题。内存泄漏的概念内存泄漏是指应用程序中分配的内存(通常是堆内存)在不再需要时未能正确释放。这些未释放的内存块会积累,最

springboot+canal+mysql+redis缓存双写一致性

canal官网地址:https://github.com/alibaba/canal/wiki/QuickStart基本上按照官网的步骤来就行准备首先服务器上要安装好jdk,因为canal运行需要jdk,同时把canal对应的端口在服务中开放,否则连接不上对于自建MySQL,需要先开启Binlog写入功能,配置binl

【面试刷题】——堆栈窗口

“堆栈窗口”(StackWindow)通常不是一个特定的编程术语,但可以用来描述在编程和计算机科学领域中一些相关的概念。这些概念涉及到堆栈(stack)和窗口(window)等术语的组合。以下是一些可能涉及到的相关概念:堆栈窗口管理(StackWindowManagement):这是一种用于管理用户界面(UI)中不同窗

【Vue】模块基本语法「上篇」

【Vue】模块基本语法「上篇」一、插值1.1文本1.2v-html1.3数据双向绑定(v-model)二、指令2.1v-if|v-else|v-else-if2.2v-show2.3v-for2.4动态参数三、过滤器3.1局部过滤器3.2全局过滤器四、计算属性&监听属性4.1计算属性4.2监听属性五、案例实操5.1购物

嵌入式MCU都有什么高级用法?

嵌入式MCU都有什么高级用法?您举的几个例子,确实是MCU外设的一些高端玩法。只是不知道您是否想过,既然这些机制是被人设计出来的,那它就是种标准用法。从微控制器的发展历程来看,许多硬件机制都是有了实际需求后才添加进来,比如接收不定长数据,最初没有超时中断的情况下只能软件实现,极大的浪费最近很多小伙伴找我,说想要一些嵌入

Vue的进阶使用--模板语法应用

目录前言一.Vue的基础语法1.插值1.1文本插值1.2HTML插值1.3属性插值1.4Vue演示三元条件运算2指令2.1if&&else指令(v-if/v-else-if/v-else)2.2v-for指令2.3v-on指令(动态参数)2.4知识点补充之v-if与v-show的区别3.过滤器3.1局部过滤器3.2全局

什么是领域驱动设计(DDD): 领域驱动设计和实践如何做

引言软件系统面向对象的设计思想可谓历史悠久,20世纪70年代的Smalltalk可以说是面向对象语言的经典,直到今天我们依然将这门语言视为面向对象语言的基础。随着编程语言和技术的发展,各种语言特性层出不穷,面向对象是大部分语言的一个基本特性,像C++、Java、C#这样的静态语言,Ruby、Python这样的动态语言都

关于物联网技术的水电厂电气开关柜测温系统设计应用

摘要:针对洪江水电厂电气开关柜温度无法在线监测的问题,本文提出了一种基于物联网技术的水电厂开关柜温度测量系统。该系统部署简单高效,能快速采集设备温度数据,通过4G或者WiFi无线信号将数据送入物联网云平台,实现开关柜温度远程实时监测,为开关柜状态诊断提供决策依据。此外,该系统解决了人工巡检成本高、数据及时率低、作业风险

PostgreSQL如何支持PL/Python过程语言

瀚高数据库目录环境文档用途详细信息环境系统平台:Linuxx86-64RedHatEnterpriseLinux7版本:10.4文档用途本文档主要介绍PostgreSQL如何支持PL/Python过程语言,如何创建plpython扩展。详细信息一、PostgreSQL支持python语言的前提条件1、本地必须安装pyt

Twitter优化秘籍:置顶、列表、受众增长

在Twitter上,将你的一条推送文置顶到个人数据顶部是提高可见性和吸引关注者的绝佳方式。无论你是个人用户还是企业,此功能都可以让你的重要信息常驻在众人眼前,即使你发布了新的推文。接下来,我们将分享一些优化建议,帮助你合理地使用此功能。1、置顶要点:你可以使用置顶功能来展示人们需要看到的重要信息,比如:限时促销:如果您

C/C++内存管理

文章目录1.C/C++内存分布2.C语言中动态内存管理方式:malloc/calloc/realloc/free3.C++内存管理方式new/delete3.1new/delete操作内置类型3.2new/delete操作自定义类型4.operatornew和operatordelete函数(重点)4.1底层原理5.m

热文推荐