摘要: 为简化日志接入门槛,我们提供了极简模式的日志解析方式(如[开启日志采集之旅]()中的介绍)。为了更好的对日志进行分析,我们还提供了其他解析方式,例如:分隔符模式、完整正则模式、JSON模式等。本文将为大家介绍如何使用完整正则解析模式。

前言

为简化日志接入门槛,我们提供了极简模式的日志解析方式(如[开启日志采集之旅]()中的介绍)。为了更好的对日志进行分析,我们还提供了其他解析方式,例如:分隔符模式、完整正则模式、JSON模式等。本文将为大家介绍如何使用完整正则解析模式。

日志解析介绍

日志采集最终目的还是为了分析,通常分析都要基于结构化或半结构化的数据,因此日志解析是整个日志解决方案中非常重要的一个部分。解析可以理解为从无结构化到半结构化的过程,即将文件中一行或多行文本变为一个个key&value对。

示例

例如对以下日志/log/error.log:

[2018-05-11T20:10:16,000] [INFO] [SessionTracker] [SessionTrackerImpl.java:148] Expiring sessions
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8E\x8F",...' for column 'data' at row 1
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
at org.springframework.jdbc.support.AbstractFallbackSQLException

可以解析成

time : 2018-05-11T20:10:16,000
level : INFO
method : SessionTracker
file : SessionTrackerImpl
line : 148
message : Expiring sessionsjava.sql.SQLException: Incorrect string value: '\xF0\x9F\x8E\x8F",...' for column 'data' at row 1at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)at org.springframework.jdbc.support.AbstractFallbackSQLException

解析所处阶段

对于不同的产品,日志解析在整个链路中所处的位置会有一定的区别,一般分为两类:schema on write 和 schema on read

  1. schema on write 是在进入存储系统前就已经将数据半结构化完毕。例如ES、GrayLog、MaxCompute等
  2. schema on read 在写入时并不进行解析,只存储原始数据,当读取时再进行解析。例如Splunk、Sumologic

关于schema on write 还是 schema on read 的比较这里就不再展开,目前日志服务是采用的schema on write形式,Logtail在写入前会将原始日志解析成Key&Value对。

解析方式

Logtail会不定期增加新的解析方式,具体可参考文本日志采集。

正则解析配置

正则解析配置流程如下文所示,下面我们将以解析/log/error.log为示例来向大家介绍如何使用正则方式解析日志。

创建正则模式采集配置

  1. 在Logstore列表页面中,点击待存储logstore的数据接入向导图标。
  2. 选择自建软件中的文本文件
  3. 在跳转的采集配置页面中选择完整正则模式

正则解析配置

自动配置

为尽可能减轻您的配置负担,我们提供了自动生成的配置方式,您可以使用鼠标点击、拖拽即可完成采集配置。具体配置请参考以下视频(地址:http://cloud.video.taobao.com//play/u/3220778205/p/1/e/6/t/1/50132666711.mp4):

手动配置

自动生成正则的配置方式较为简单,但有可能存在以下情况:

  1. 生成的正则并不一定能完全匹配您的日志模式
  2. 某些复杂的日志样例无法自动提取出可用模式
  3. 自动生成的正则匹配效率无法达到最优

因此某些情况下您还需要手动去提取正则。Logtail支持的是PCRE方式的正则表达式,建议您使用一些正则表达式工具进行编写和调试,例如regextester, regex101等

手动配置正则模式主要分为下述三个过程

配置行首正则

对于Java应用中的程序日志,一条日志通常会跨越多行,因此只能通过日志开头的特征区分每条日志行首。这里我们的示例是一个典型的Java错误堆栈日志,因此需要配置行首正则表达式。

  • 注意:行首正则表达式需要完整匹配一行,因此一般在表达式最后加上.*

解析字段

通过行首正则能够从原始文件中将日志一条条切分出来,接下来需要将切分后的整条日志再次分解成key&value对。

  • 注意:需要提取的字段用()包裹;key不要填在正则中,直接在控制台输入

提取时间

每条日志在服务日志都必须包括该日志发生的时间戳信息。Logtail默认会将采集时间作为日志时间。如果您的日志中有时间信息,建议配置时间提取规则,将日志时间映射为日志服务中的日志时间戳。

Logtail时间解析使用的是UNIX的strftime规则,具体请参考配置时间格式

  • 注意:时间默认从日志key中的time字段提取

数据采集效果

相关文档和参考

正则表达式采集配置

配置时间格式

索引与查询简介

schema-on-read-vs-schema-on-write-1

schema-on-read-vs-schema-on-write-2

原文链接

本文为云栖社区原创内容,未经允许不得转载。

Logtail从入门到精通(四):正则表达式Java日志采集实战相关推荐

  1. C4D致富经典入门到精通(四)

    C4D中的Nurbs建模 C4D基础界面的介绍与常用快捷键:  C4D致富经典入门到精通(一) C4D父子关系的理解与创建参数几何体与可编辑对象: C4D致富经典入门到精通(二) C4D样条曲线创建  ...

  2. 视频教程-最新完整VUE前端教程从入门到精通,纯干货企业级项目实战-Vue

    最新完整VUE前端教程从入门到精通,纯干货企业级项目实战 10年以上开发经验,曾经是八维教育实训主任,千峰教育高级HTML5前端讲师,尚品中国创始人.现任程序思维创始人.曾和大厂.国企等大型企业合作开 ...

  3. java从入门到精通 ppt_《Java从入门到精通》第4版全书完整PPT课件

    [实例简介] <Java从入门到精通>第4版全书完整PPT课件 [实例截图] [核心代码] e3a1ab08-ca73-47e5-9a3a-bec0b60c991a └── <Jav ...

  4. 【入门到精通】❤️「Java工程师全栈知识路线」

    持续更新中- Vue前端开发 章节 内容 实践练习 Vue.js高效前端开发 • (实践练习) 第1章 Vue.js高效前端开发 • [ 一.初识Vue.js ] 第2章 Vue.js高效前端开发 • ...

  5. python语法基础语法_Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  6. Java学习路线导航,带你入门到精通(附Java全套学习资源)

    最近也有很多小伙伴来向我请教,他们大多是一些Java刚入门的新手,还不了解Java这个行业,也不知道Java零基础该从何学起,开始的时候非常迷茫,所以今天写了这篇文章,具体来说说Java的学习路线. ...

  7. Java学习教程,Java从入门到精通,全套Java视频教程+笔记+配套工具

    目录 一.大纲 一.Java基础 二.计算机基础 三.工具的使用 四.数据库 五.web前端 六.JavaWeb 七.框架 八.互联网分布式技术 发现身边很多自学java却放弃的,真的挺可惜的. 白白 ...

  8. Logtail从入门到精通(三):机器分组配置

    摘要: 基于集团内数年来的Agent运维经验总结,我们设计了一种灵活性更高.使用更加便捷.耦合度更低的配置&机器管理方式:自定义标识机器分组.此种方式对于动态环境非常适用,尤其适用于弹性伸缩服 ...

  9. Logtail从入门到精通(二):开启日志采集之旅

    摘要: 为了更好的了解日志采集,这里我们首先对日志采集中遇到的基本概念进行简要的介绍. Logtail相关概念 为了更好的了解日志采集,这里我们首先对日志采集中遇到的基本概念进行简要的介绍. 概念介绍 ...

最新文章

  1. ExtJs4之常用函数
  2. 详细的基于opencv svm hog的描述讲解
  3. 【必看】新手妹子一键删库,老司机机智救场
  4. 音频处理六:(音频的反FFT)
  5. Java加视频特效,实现伪原创
  6. Js取float型小数点后两位数的方法
  7. Elasticsearch7.15.2 mysql8.0.26 logstash-input-jdbc 数据增量索引构建
  8. Python wxpy通过ModBus控制电脑鼠标和键盘
  9. vivado和modelsim联合仿真实现偶分频
  10. 2016级算法期末模拟练习赛-E.AlvinZH的青春记忆III
  11. 写了个鼠标键盘模拟器,希望对大家有用哈!
  12. Waymo上线11万美元挑战赛,福特开放1.6TB自动驾驶数据
  13. JS 实现数字转罗马数字
  14. 华三防火墙应用二层和三层的配置实例
  15. 40个常见的HTML5 面试问题及答案
  16. CPT101计算机系统概念(存储系统部分)
  17. (附源码)springboor大学生防疫封校管理系统 毕业设计632124
  18. MAC 系统安装 Maven 及环境变量配置
  19. 计算机网络 研究生入学考试,中南大学研究生入学考试 《计算机网络》试题
  20. R语言实战笔记--第十四章 主成分和因子分析

热门文章

  1. 一直未运行_【直击一线】延一转三相分离器投运成功,盘活全区生产运行一盘棋...
  2. native 真机测试react_react-native真机调试出现Failed to install all
  3. java truevfs_Java-Apache Commons VFS:使用FTP
  4. php改名下载,PHP如何给上传的文件改名
  5. 计算机的定点运算器原理,计算机组成原理第二章第10讲定点运算器的组成.ppt
  6. 联想340c笔记本cpu能升级吗_联想扬天威6 2021款酷睿版怎么样?评测值得买吗?从价格和配置看就知道了...
  7. mysql内置含糊_mySQL入门04 内置函数
  8. Nature调查:中国博士生们的科研围城
  9. 想申请AI方向硕、博,这个内容一定要提前准备!!
  10. 十大经典排序算法(下)