ELK: logstash gork filter 多个模式(pattern)匹配规则语法和多行日志匹配设置
项目里用logstash分析日志,由于有多种模式(pattern)需要匹配,网上搜了很多示例,发现这些都是老的写法,都会报错,后来查阅了官方文档,才发现,新版本只支持新语法。
错误的语法:
if "batch-trans" in [tags] {grok {match => ["message","\[(?<logDate>[\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}\s+d{1,2}:d{1,2}:d{1,2}]*)\]\s+\[(?<mainJobId>(?:[+-]?(?:[0-9]+)))\-(?<subJobId>(?:[+-]?(?:[0-9]+)))\-(?<shardingId>(?:[+-]?(?:[0-9]+)))\]\s+\[(?<traceId>[^\]]*)\]\s+\[(?<jobName>[^\]]*)\]\s+\[(?<threadId>[^\]]*)\]\s+\[(?<zoneId>[^\]]*)\]\s+\[(?<traceType>[^\]]*)\]\s+\[(?<cost>[^\]]*)\]\s+\[(?<splitZoneId>[^\]]*)\]\s+\[(?<url>[^\]]*)\]\s+\[(?<subJobId>[^\]]*)\](?<msg>.*)","message","\[(?<logDate>[\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}\s+d{1,2}:d{1,2}:d{1,2}]*)\]\s+\[(?<mainJobId>(?:[+-]?(?:[0-9]+)))\-(?<subJobId>(?:[+-]?(?:[0-9]+)))\]\s+\[(?<traceId>[^\]]*)\]\s+\[(?<jobName>[^\]]*)\]\s+\[(?<threadId>[^\]]*)\]\s+\[(?<zoneId>[^\]]*)\]\s+\[(?<traceType>[^\]]*)\]\s+\[(?<cost>[^\]]*)\]\s+\[(?<splitZoneId>[^\]]*)\]\s+\[(?<url>[^\]]*)\]\s+\[(?<subJobId>[^\]]*)\](?<msg>.*)",]}}
正确的语法:
filter {if "accounting-log" in [tags] {grok {match => {"message" => ["^\[(?<log-time>[\s\S]*)\]\s+%{LOGLEVEL:log-level}\s\[%{DATA:trace-id}\]\s\[%{DATA:thread-name}\s*\]\s\[%{DATA:logger}\s*: %{NUMBER:line-no}\] \[%{DATA:zone-id}\]\sJob-Sharding-Params: jobId=%{NUMBER:job-id}, transCode=*%{NUMBER:trans-code}, shardingId=*%{NUMBER:sharing-id}, shardingTable=*%{DATA:sharding-table}, JobParameters=\{%{GREEDYDATA:job-parameters}\}","^\[(?<log-time>[\s\S]*)\]\s+%{LOGLEVEL:log-level}\s\[%{DATA:trace-id}\]\s\[%{DATA:thread-name}\s*\]\s\[%{DATA:logger}\s*:\s*%{NUMBER:line-no}\]\s\[%{DATA:zone-id}\]\s%{GREEDYDATA:msg}"]}}}}
}
注意,先后顺序很重要,上面示例中,如果排错了顺序,后面规则永远匹配不到,都会被前面的规则抢先了。
为方便大家拿来主义,上面示例对应的logback配置如下:
logback:<property name="NORMAL_FILE_LOG_PATTERN"value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %5p [%0.16X{traceId}] [%-12.12t] [%-40.40logger{39}:%3L] [%0.2X{zoneId}] %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />gork:
"^\[(?<log-time>[\s\S]*)\]\s+%{LOGLEVEL:log-level}\s\[%{DATA:trace-id}\]\s\[%{DATA:thread-name}\s*\]\s\[%{DATA:logger}\s*:\s*%{NUMBER:line-no}\]\s\[%{DATA:zone-id}\]\s%{GREEDYDATA:msg}"
另外,为了让一条日志包含多行(如,异常日志),应该做如下配置:
input{file {path => "/logs/accounting-service.log"type => "system"tags => ["accounting-log"]codec => multiline {pattern => "^(\[.+\] )" #这儿就是说多行要匹配到一行开头:[******]跟随一个空格的形式negate => truewhat => "previous"auto_flush_interval => 2 #这行非常重要,就是2秒内如果没新的内容,就认为这条日志结束了,否则最后一条日志永远就是要等到有下一条日志进来才会被采集}start_position => "beginning"}
}
参考官方文档:(搜索“multiple patterns”)
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html
相关文章:
ELK: logstash gork filter 多个模式(pattern)匹配规则语法和多行日志匹配设置
项目里用logstash分析日志,由于有多种模式(pattern)需要匹配,网上搜了很多示例,发现这些都是老的写法,都会报错,后来查阅了官方文档,才发现,新版本只支持新语法。 错误的…...
Ubuntu20.04上编译安装TVM
本文主要讲述如何在ubuntu20.04平台上编译TVM代码并在python中import tvm成功。 源代码下载: git clone --recursive https://github.com/apache/tvm tvm 平台环境升级: 1) sudo apt-get update 2) sudo apt-get install -y pyth…...
伦敦金现图形态分析(深度好文)
对价格行为交易者来说,伦敦金价走势图表中的一些特殊形态,能够带来比较靠谱的交易信号。然而交易并不只和形态有关,也和我们能够从图表形态中阅读到什么,以及如何理解其他交易者对价格波动的推动有关。 在对伦敦金走势图的技术形态…...
慕尼黑电子展采访全程 | Samtec管理层对话电子发烧友:虎家卓越服务
【摘要/前言】 今年的慕尼黑上海电子展上,Samtec大放异彩,特装展台一亮相就获得了大家的广泛关注,展台观众络绎不绝。 作为深耕连接器行业数十年的知名厂商以及Electronica的常客,Samtec毫无疑问地获得了大量媒体朋友的关注和报…...
APP外包项目维护方案
APP项目维护是确保应用程序持续运行、安全性和性能不断优化的关键活动。以下是一个综合的APP项目维护方案,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.定期性能监控和优化: 使用性能…...
leetcode面试经典150题——32 串联所有单词的子串(中等+困难)
题目: 串联所有单词的子串(1中等) 描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串&…...
oracle关联更新
业务场景中需要对特定数据进行关联更新,记录一下关联更新语法: MERGE INTO fine_record_execute targ USING (SELECT "id","tname"FROM fine_record_executeWHERE "username" LIKE %目标人物%AND "time">20…...
SWT技巧
实现控件的刷新 问题可以简化如下,点击上方按钮,使下方按钮移动,但要求在监听事件里新建按钮对象,而不是使用原来的按钮(原来的按钮被移除了)。 解决代码如下: public class TestUI {protecte…...
3.数据结构
3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构”两个维度进行分类。 3.1.1逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照…...
一篇文章完成Hbase入门
文章目录 一、简介1、数据模型结构2、物理存储结构3、数据模型4、基本架构 二、安装1、下载解压安装包2、修改配置文件3、启动服务(单机、集群)4、配置高可用(HA) 三、命令行操作1、建表2、新增/更新数据3、查看表数据4、删除数据5、修改默认保存的数据版本 四、架构1、RegionS…...
使用PotPlayer播放器查看软解和硬解4K高清视频时的CPU及GPU占用情况
目录 1、问题说明 2、PotPlayer播放器介绍 3、视频的软解与硬解 4、使用PotPlayer查看4K高清视频软解和硬解时的CPU占用情况 4.1、使用软解时CPU和GPU占用情况 4.2、使用硬解时CPU和GPU占用情况 5、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅…...
怎么做excel表格的二维码?文件快速做二维码的教程
Excel表格怎么做成二维码来扫码插看呢?Excel是工作中常用的一种文件格式,想要将表格内容分享给其他人查看,那么将表格生成二维码的方法会更加的方便快捷,其他人只需要扫描二维码就可以查看或者下载文件。表格excel二维码可以通过文…...
Clion取消double shift(按两下shift键)全局搜索
Clion 取消 double shift(按两下 shift 键)全局搜索。 如下图所示打开 setting。 点击 advanced setting,搜索 disable,取消勾选左侧复选框,点击 ok。...
Spring RabbitMQ那些事(2-两种方式实现延时消息订阅)
目录 一、序言二、死信交换机和消息TTL实现延迟消息1、死信队列介绍2、代码示例(1) 死信交换机配置(2) 消息生产者(3) 消息消费者 3、测试用例 三、延迟消息交换机实现延迟消息1、安装延时消息插件2、代码示例(1) 延时消息交换机配置(2) 消息生产者(3) 消息消费者 3、测试用例 …...
免费SSL证书有效期只有90天?太短?
随着网络安全问题日益受到重视,SSL证书成为了网站安全的必需品。然而,在许多情况下,免费提供的SSL证书往往只有90天的有效期,这种期限对于很多用户来说显得过于短暂。 首先,我们要理解为什么 SSL 证书的有效期设定为90…...
Java小游戏 王者荣耀
GameFrame类 所需图片: package 王者荣耀;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayLis…...
Python:diskcache实现基于文件的数据缓存
diskcache是一个基于Sqlite文件的数据缓存 文档 https://grantjenks.com/docs/diskcache/https://github.com/grantjenks/python-diskcachehttps://pypi.org/project/diskcache/ 示例 from diskcache import Cache# 指定文件夹 cache Cache(./cache)# 存 cache.set(name, …...
微信小程序 - 一篇带你解读小程序强制更新(冷/热启动)
在小程序开发中,我们会不可避免的涉及到小程序新版本迭代的问题,因为小程序的更新机制是异步的,新版本发布后并不会立刻应用到所有的现有用户,部分用户用的可能还是原来的旧版本,但如果是急需修复的 bug 或其他急需上线…...
关于接口测试自动化的总结与思考!
序 近期看到阿里云性能测试 PTS 接口测试开启免费公测,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接口测试领域的一些方法和心得,希望大家一起讨论和分享,内容包括但不仅限于: 服务端接口测试介…...
如何用低代码的思路设计文字描边渐变组件
前言 文字特效设计一直是困扰 Web 前端 Css 世界多年的问题, 比如如何用纯 Css 实现文字描边, 渐变, 阴影等, 由于受限于浏览器兼容性的问题, 我们不得不使用其他替代方案来实现. 平时工作中我们使用 PS 等设计工具能很容易的实现文字渐变等特效, 但是随着可视化技术的成熟, 我…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
