ELKF日志学习(十)Logstash解析日志成json

logstash+grok+json+elasticsearch解析复杂日志数据(一) 这几天学习了logstash写配置文件conf解析包含部分json数据格式的日志数据,并在elasticsearch以及kibana进行直观的数据浏览。对于logstash有了更加深入的了解,logstash在运维方面是开源的日志收集框架,其中包含了许多插件,下载的时候就包含在其中了,比较常用的有输入插件,输出插件,codec编码插件,filter过滤器插件,输出插件等等,甚至还有许多美未能进入官 阅读详情

前言

之前大致说了一下 Logstash 的能力。

关于输入输出并不多做介绍了,这里主要讲解一下日志解析部分。

代码仓库

talk-lucky/elkf-study

Grok

原理很简单,就是 正则。

这里有个非常实用的网站 Grok Debugger,可以帮助我们验证调试解日志的正则。(可能需要自备梯子)

官方有一部分预定义 grok 的表达式,可以参考,我们也可以编写一些预定义的表达式供后续使用。

Kibana 也提供了相应的工具,只不过没那么好用罢了。

示例

比如,有这么一段日志(nginx/access.log):

192.168.200.1 - - [27/Aug/2018:06:36:58 +0800] "GET / HTTP/1.1" 200 16 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"

我们需要解析它,那我们需要先编写测试好 Grok 语句。

192.168.200.1 可以使用 IPV4 来匹配,比如:%{IPV4:remote_addr}。

这里不仅匹配了,并将其值赋予了 remote_addr,有点像 PHP 中的正则子模式。

问:IPV4 从哪里来的,不知道怎么办?还有其它方式么?

答:

  1. IPV4 来自 Logstash 自己的预定义,具体可以参考 grok。
  2. 还可以直接写正则来匹配,比如:(?<remote_addr>((?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])))。

问:还有一个疑问,为何定义为 remote_addr?

答:这个是自定义,一般情况下会保持和 nginx 日志定义一致,这个看项目的定义。

在了解了一些基本概念之后,那么我们的表达式应该这么写:

filter {
    grok {
        match => {
            "message" => '%{IPV4:remote_addr} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] \"%{WORD:request_method} %{URIPATHPARAM:request_uri} HTTP/%{BASE10NUM:http_version}\"\s{1,}%{INT:status}\s{1,}%{INT:request_length}\s{1,}%{QS:http_referer}\s{1,}%{QS:http_user_agent}\s{1,}%{QS:http_x_forwarded_for}'
        }
    }
}

匹配多种情况

在现实项目中,日志格式并不会像 nginx/access.log 那么工整,那么我们就要处理多种情况,比如 nginx/error.log。

具体实例就不写了(可以参考 git 项目中的 logstash/pipeline/logstash.conf),这里介绍一下格式:

filter {
    grok {
        match => [
            "message", '表达式1',
            "message", '表达式2',
            "message", '表达式3'
        ]
    }
}

判断输入来源

为了使 filter 更加高效,我们需要在一开始就知道需要执行哪些表达式,而不是一个个试过去,通过输入来源,可以帮助我们解决一些问题。

在介绍 FileBeat 部分的时候,当时为每个日志文件都定义了 file.source。

这里可以通过判断 fileds.source 来大致确认是哪一类日志。

例如:

filter {
    if [fields][source] == "nginx_access_log" {
        grok {
            match => [
                "message", '表达式1',
                "message", '表达式2',
                "message", '表达式3'
            ]
        }
    }
    if [fields][source] == "nginx_error_log" {
        grok {
            match => [
                "message", '表达式4',
                "message", '表达式5',
                "message", '表达式6'
            ]
        }
    }
}

最后

Logstash 的能力还有很多,这些就要靠小伙伴们自行探索发现了。

后续如果使用到了比较有意思的部分,会在后续文章中更新。

【ELKF】搭建部署V1版 复盘Logstash之grok格式化日志安装Logstash插件问题Mysql的一个web-slow.log日志是多行,且有多个message字段,解决处理开启多行合并一行问题Logstash还有两个message字段使用grok插件来处理日志为JSON格式# 日志案例:},},",},"log" => {},},"ecs" => {},], 阅读详情

相关推荐

ELK Stack:日志管理与分析的全能战士,Java的日志管理

ELK Stack 是一个功能强大且灵活的日志管理和分析平台,适用于从小型到大型的各种系统规模。它不仅提供了高效的日志处理能力,还具备直观的可视化展示工具,帮助开发者和运维人员更好地理解和利用日志数据。通过上述介绍和示例代码,相信你已经对如何搭建和使用 ELK Stack 有了初步的认识。希望这些内容能够为你提供有价值的参考,助力你在日志管理领域迈出坚实的步伐。如果有任何疑问或需要进一步的帮助,请随时查阅官方文档或联系社区。

横竖撇折点 1235

logstash-将nginx日志转为json格式存入kafka

不修改nginx日志格式的情况下,使用logstash filter-grok,匹配nginx日志格式后转为json格式存入kafka。

qq522044637的博客 1010

【网格生成】Gmsh快速入门教程 --1.图形化界面使用

初探 Gmsh软件的主界面如下图所示。通过点击菜单“File” -> "Open"可选择打开已经存在的几何模型或网格文件,初次使用可选择tutorial目录下的t1.geo文件。打开后效果如图所示,t1.geo描述的是一个长方体。 接下来依次尝试左侧菜单栏的功能:Geometry(几何)、Mesh(求解器)。Solver模块需依赖外置求解器,不在本文介绍范围内。 Geometry 该菜单下是与几何相关的功能,如新增一个点/面、体,移动一个体等,具体功能很多可以在后续使用中逐渐尝试学习。本文仅介绍几个

DJ_xiaoming的博客 1万+

【Spring Boot】Spring Boot之利用Logstash将日志转换成以JSON的格式存储和输出

一、Logstash的作用   Logstash是一个完全开源的工具,它可以对日志进行收集、过滤,能非常方便地将日志转换成以JSON的格式存储和输出,并将其存储供以后使用。 二、整合Logstash的步骤 注意:需要在logback日志框架的基础上:https://www.cnblogs.com/756623607-zhang/p/9695131.html 1)增加pom依赖 ...

weixin_30342827的博客 2251

在Wincc8.0的Wincc 3D Control控件中使用3D模型

如果之前没有在Blender中自定义光照,EnableBackground属性选择“是”,Wincc 3D Control会按一个均匀的光照强度渲染。Wincc8.0更新后提供了一个Wincc 3D Control控件来显示3D图像,但是该控件实际体验下来现阶段还存在功能不足、运行不稳定的问题。再把导出的dae文件复制进Wincc项目的GraCS文件夹中,文件名称复制进控件的SceneFile属性里。选择编辑模式,全选模型,点击网格→分离→按材质,分离出不同的部件(不同的部件最好使用不同的材质)。

ghoring的博客 7135

告别深度学习!用5个麦克风搞定多说话人分离:ReTM算法保姆级教程

本文详细介绍了ReTM算法,这是一种无需深度学习、仅需5个麦克风即可实现多说话人语音分离的创新信号处理方法。它通过估计相对传递矩阵,利用空间物理信息在混响环境中分离语音,具有数据需求低、计算复杂度小、无需先验几何信息等优势,特别适合嵌入式设备和资源受限场景。

desk3的博客 157

极客时间06

【代码】极客时间06。

夏末的博客 229

史上最小白之RNN详解

1.前言 网上目前已经有诸多优秀的RNN相关博客,但是我写博客的出发点主要是为了加深和巩固自己的理解,所以还是决定自己再进行一下总结和描述,如有不正确的地方欢迎指正~ 2.区分RNN 循环神经网络(Recurrent Neural Network),递归神经网络(Recursive Neural Network),你有没有发现他们的缩写都是RNN,那他们两个是同一回事儿吗?网上有一些博客把这两就当...

Tink1995的博客 4万+

logstash的安装与使用(读取嵌套json平级格式,grok语法与正则使用,双线程处理,导入elasticsearch)

logstash的安装与使用一、简介与安装二、简单体验输入输出(配置字符串)修改输出格式为json格式三、读取配置文件输入输出读取文件中的内容(1)读取普通文本(2)读取json格式内容(3)多层嵌套json平级格式四、grok语法与正则的使用五、双线程处理 一、简介与安装 logstash的作用:日志收集 如何工作: 输入(input):必须,如stdin、file、http、exec… 过滤器(filter):可选,如grok、mutate… 输出(output):必须,如stdout、elastic

weixin_42487460的博客 1721

从mseed到SAC格式转换全攻略:mseed2sac工具安装与批量处理技巧

本文详细介绍了如何将mseed格式的地震数据高效转换为SAC格式,涵盖mseed2sac工具的安装、单文件转换技巧、批量处理自动化实现以及元数据高级处理策略。通过具体命令和脚本示例,帮助地震学研究者快速掌握数据预处理的关键技术,提升波形数据分析效率。

ruby5的博客 927

ABAP Open SQL 数据拷贝导致 SAPSQL_DATA_LOSS:从报错机理到稳妥修复

数据类型与长度不合规。一旦在Open SQL的无损赋值检查里被发现,系统宁可中止也不会偷偷替你截断。把变量声明对齐到字典、在需要时明确表达转换/截断意图、写法上避免落入高危的操作数位置,再配合ATC的预防性检查,既能解决你这次的ST22Dump,也能把同类问题消灭在萌芽状态。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 429

ELKF日志学习(七)Filebeat解析json

这是 EKF 的部分,抛去了 Logstash。 前言 有些时候,我们已经将日志存储成了 json 的格式,而且不需要经过 Logstash 了,我们可以直接将日志写入 Elasticsearch 中。 识别 json FileBeat 可以解析 json 格式的日志,并将其传递给 Elasticsearch。 比如: filebeat.inputs: - type: log enabled: true fields: source: nginx_access_log .

IMJCW的博客 2214

Arcgis中的模型构建器(ModelBuilder)技术之批量图层转KML

这段时间全省各地都在开展耕地流出图斑整改恢复工作,期间或多或少都需要村委会协助摸排举证,除了举证软件外,奥维、外业精灵等软件想必大家接触得也很多。这就经常需要我们转kmz文件给业主或者摸排人员,那么有没有什么方法在arcgis下快速批量转kmz文件呢,今天就介绍一下如何在模型构建器(ModelBuilder)构建批量图层转KML的模型。

weixin_44671081的博客 1324

ELKF日志学习(三)EKF平台搭建 Docker单机

本文和 《ELKF日志学习(二)ELKF平台搭建 Docker单机》 的区别如下: 去除了 Logstash 模块。 Filebeat 直接写入 Elasticsearch。 熟悉者可以直接进入相应目录安装环境。 前言 本文是基于 hub.docker.com 站点提供的 Docker 容器进行搭建的,且是 单机 ,仅用于学习。 代码仓库 talk-lucky/elkf-study EKF目录 说明 为了能够达到更好的学习效果,这里将 Elasticsearch 设置成了无需密码的状态。 同时,El.

IMJCW的博客 462

ContextCapture系列教程(三):大疆精灵4RTK版无人机POS数据提取、处理(处理后勉强达到免相控要求)

大疆精灵 Phantom 4 RTK于2018年发布,是大疆为高精度建图与精准飞行设计的行业级无人机,在精灵4无人机外形的基础上,机身增加了RTK模块,可以实现高精度 RTK 定位导航,相机与 RTK 系统采用微秒级时间同步,可以通过app 进行航线规划飞行

pausau的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ELKF日志学习(九)Logstash基础介绍

前言 Logstash 是数据收集引擎,可以对数据进行过滤、分析、丰富、统一格式等操作,存储到用户指定的位置,包含但不限于文件、 elasticsearch 。 配置 Logstash 的配置分为 3 部分,输入、过滤器 和 输出。 input { # 这里填写输入部分 } filter { # 这里填写过滤、解析部分 } output { # 这里填写解析部分 } 输入 官方文档传送门 相对于 FileBeat,Logstash 的输入类型丰富很多。 支持 FileBeat、

IMJCW的博客 219

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ELK / ELFK日志审计系统(一)ELFK介绍

ELFK指的是由四个核心开源软件组成的日志管理和分析解决方案的统称。它是最流行的集中式日志处理架构之一。: 一个分布式、RESTful 风格的搜索和分析引擎。它负责存储、索引和快速检索来自任何来源的大规模数据。它是整个架构的“数据库”和搜索引擎。: 一个服务器端的数据处理管道,可以同时从多个来源采集数据,转换数据,然后将数据发送到您喜欢的“存储库”(如 Elasticsearch)。它是数据的收集、过滤和转发工具。: 一个轻量型的日志采集器。

IT运维记录 951

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efk入门搭建

ELFK各功能 Elasticsearch: 数据库,存储数据 java语言 logstash: 日志收集,过滤数据 java语言 kibana: 分析,过滤,展示 java语言 filebeat: 收集日志,传输到ES或logstash go语言 Elasticsearch入门: 简单介绍: 开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。 官方网站: https://www

weixin_47445145的博客 479

Docker 部署环境下典型的 ELK 日志处理流程

摘要: 在开源的日志管理方案中,最出名的莫过于 ELK 了。ELK 是三个软件的合称:Elasticsearch、Logstash、Kibana。 Elasticsearch一个近乎实时查询的全文搜索引擎。Elasticsearch 的设计目标就是要能够处理和搜索巨量的日志数据。在开源的日志管理方案中,最出名的莫过于 ELK 了。ELK 是三个软件的合称:Elasticsearch、Logstas...

vitaair的博客 838

基于Docker的日志分析平台(四)平台整合

在上一篇中我们基本上完成了 ELK 和 Kafka 环境的安装,并且也通过几个简单的例子入门。现在我们就把搭建好的架构中加入 Kakfa 作为缓冲区。再来说一下,首先 Logstash 从日志源读取日志并且存储到 Kafka,然后 Logstash 再从 Kafka 中读取日志存储到 Elasticsearch。所以我们需要两步骤。 Lo...

weixin_33860722的博客 166

grok使用(将日志结构化)

grok使用(将日志结构化)

ApexPredator的博客 4611

logstash filter 字符串转换为json

logstash filter 字符串转换为jsonlogstash filter 字符串转换为json logstash filter 字符串转换为json filter { # 去除\n 和空值[字符串可能存在空值、\n等特殊字符] mutate { strip => ["message"] } # 转为json 并赋值给 target json { source => "message" target => "message2"

a123147abc的博客 3016

Logstash处理json根式日志文档的三种方式

假设日志文件中的每一行记录格式为json的,如:{"Method":"JSAPI.JSTicket","Message":"JSTicket:kgt8ON7yVITDhtdwci0qeZg4L-Dj1O5WF42Nog47n_0aGF4WPJDIF2UA9MeS8GzLe6MPjyp2WlzvsL0nlvkohw","CreateTime":"2015/10/13 9:39:59",&am

为一个人走几座城 2151

logstash使用之json输入输出

概述如果发送给logstash的数据内容为json格式,那么可以通过解析json内容,根据具体内容生成字段.方便分析和储存,比如:有一个json内容为: {"name":"nihao"},我们需要获取这个记录然后通过logstash分析后,放到mysql数据库中.一个简单的logstash输出内容为:{ "@version" => "1", "host" => "lo

落叶下的光 2万+

grok 和 JSON 检测

https://github.com/qiniu/logkit/wiki/Grok-Parser    #grok 格式检测 https://github.com/qiniu/logkit/wiki/Grok-Parser   #json 格式检测

my_bai的博客 2136
上一篇: ELKF日志学习(九)Logstash基础介绍
下一篇: ELKF日志学习(十一)Logstash实现钉钉告警(莫当真)
IMJCW
博客等级 码龄10年 13粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值