「视频小课堂」Logstash如何成为镇得住场面的数据管道(文字版)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 「视频小课堂」Logstash如何成为镇得住场面的数据管道(文字版)

视频地址


B站视频地址:Logstash如何成为镇得住场面的数据管道


公众号视频地址:Logstash如何成为镇得住场面的数据管道


知乎视频地址:Logstash如何成为镇得住场面的数据管道


内容


首先我们延续上一期视频中日志采集架构的案例,Filebeat采集日志并推送Kafka消息队列进行分发,再由Logstash消费日志消息,并将日志数据最终落地在Elasticsearch集群索引当中,Kafka作为消息队列分发服务需要将收集到的日志消息继续分发下去,最终数据落地在Elasticsearch集群索引当中。


那么连接整个过程的主角Logstash是如何工作的,就是我们今天讲解的重点。


Logstash工作过程分为三个部分:Input输入、Filter过滤、Output输出,它们共同协作形成了完整的Logstash数据管道传输机制


我们先从一个最简单的例子演示开始,看看Logstash是怎么输入和输出的,这一次先跳过filter过滤环节。


下面查看已经预置好的一个配置文件01-kafka-elastic-nginx.conf


首先是input输入配置点,从Kafka订阅消息,Kafka集群地址与filebeat中都指向了一个地址,其他配置我们先略过,后续Kafka专题再说


下来看到要订阅的Topic主题TestT3,我们先不用json格式解码消息,默认就是纯文本的方式


一样的,这一步先略过过滤环节,直接看看output输出配置点,目标是给Elasticsearch输出数据,并指定了elasticsearch集群的三个节点


输出环节创建需要写入的elasticsearch日志索引,我们先按照默认的filebeat采集时间,进行日期格式化,按照每个小时建立一个索引,这块会有时间问题,一会儿再说。


让数据输出到终端,方便我们调试结果。


通过演示中最简单的配置方式,这时候的Logstash已经成为连接Kafka和Elastisearch之间的数据管道了!


好,接下来我们将所有系统运行起来,并生成一条nginx请求日志,看看管道各个阶段的数据变化。


首先nginx日志数据被filebeat采集,是一条典型的无结构的文本日志数据,大家注意红色标注的时间是2021年2月21日13时


接着这条日志数据通过Kafka进入到了Logstash管道的输入阶段,


Logstash为这条日志生成了更为非常庞大的Json数据,里面包括了所有被采集主机的信息,以及nginx日志,实际上这些原始信息并没有被良好的进行数据清洗与结构化


最后数据被写入到Elastisearch一个按小时划分的索引当中,对应时间为2021年2月21日5时


我们发现Logstash对原始数据在没有任何处理的情况下,会很不方便将来数据的使用;


这次我们利用Logstash json解码器让管道重新再来一次,


接下来我们进入Logstash中对应的配置文件,并找到input输入点的codec配置,删掉注释,打开Logstash对输入数据的json解码方式·。


我们看看再次进入管道中的日志数据,Logstash首先对原始日志数据进行Json解析


这时候我们再看Json解析后的数据,是不是就清晰多了,filebeat采集到的本地机器数据、以及红色框中Nginx HTTP日志数据、以及其他标签数据都进行了字段分离


做到这一步其实还是不够好,为什么呢?一方面因为我们依然希望将Nginx HTTP的日志数据也进行结构化处理,


另一个方面,Filebeat传递给Logstash的系统时间是慢了8个小时的UTC时间标准,反而Nginx日志中的时间是我们本地的北京时间标准,因此我们希望用Nginx日志时间作为创建Elasticsearch日志索引的唯一依据


这时候我们就要使用Logstash的过滤机制了,我们继续进入Logstash对应的配置中,删掉过滤配置中的注释,让Logstash过滤最常用插件grok、date、ruby、mutate起作用


grok插件是专业处理非结构化数据的能手,通过自定义的Nginx日志正则表达式,就能实现Nginx日志的结构化解析


date插件用于处理时间问题,我们通过date插件将nginx日志中的时间转换成Logstash时间对象,并赋给一个新的临时时间字段indextime


ruby就是在过滤过程中可以插入ruby脚本语言来进行程序级处理,我们通过ruby语言对indextime时间格式化,生成一个精确到小时的字符串字段index.date,用于elasticsearch索引名称


mutate是最常用的可以对管道中数据字段进行操作的插件了,我们的目的是删除临时时间字段indextime


最后我们还需要将output输出中的索引生成方式修改一下,注释掉原来用filebeat生默认时间生成的索引,改成nginx日志时间生成的索引。


我们重新运行Logstash,数据经过了Input解码、日志grok结构化处理、本地时间对象创建,并进行日期格式化,为了生成新的Elasticsearch索引字段,并对临时字段进行删除,最终经过Output输出阶段,创建Elasticsearch索引或写入日志数据


让我们看看Elasticsearch最终保存的数据效果,index索引对应的时间来自过滤器创建的index.date字段,index.date字段又来自nginx日志中分离出的本地时间。这样我们就不用再去修改Logstash的系统时间了


我们看到菱形标注的字段数据就是由过滤器对nginx http日志进行结构化抽取的结果,


同样elasticsearch依然保存着nginx日志的原始数据以备不时之需


相关文章
|
关系型数据库 PostgreSQL
PostgreSQL错误: 操作符不存在: smallint = boolean
PostgreSQL错误: 操作符不存在: smallint = boolean
489 0
|
3月前
|
Oracle Java 关系型数据库
Java 17 采用率增长 430%
1995年,Sun Microsystems发布Java语言,推动现代多媒体应用发展。凭借“一次编写,到处运行”的优势,Java迅速成为主流编程语言。New Relic最新发布的《2023年Java生态系统现状》报告显示,Java 11以超56%的使用率稳居榜首,Java 8仍占近33%。尽管Oracle每半年更新一次Java版本,但开发者更倾向使用长期支持(LTS)版本。Java 17的采用率在过去一年增长430%,潜力巨大。此外,Amazon已成为最受欢迎的JDK供应商,市场份额达31%。容器化应用也已成为主流,70%的Java应用来自容器。
|
11月前
|
监控 数据可视化 数据挖掘
哪些可视化软件最适合项目管理?
本文介绍了五款优秀的可视化管理软件:板栗看板、Trello、Asana、Monday.com 和 ClickUp,分别强调了它们在项目管理、任务协作及团队沟通中的独特优势,帮助用户根据自身需求选择最合适的工具。板栗看板以其直观的看板视图和灵活的任务管理功能脱颖而出,适合寻求高效简洁解决方案的团队。
|
负载均衡 Dubbo 算法
Dubbo服务负载均衡原理
该文章主要介绍了Dubbo服务负载均衡的原理,包括Dubbo中负载均衡的实现位置、为什么需要负载均衡机制、Dubbo支持的负载均衡算法以及随机负载均衡策略的源码分析。
|
弹性计算
阿里云账号注册流程图文详解、账户实名认证和申请免费服务器全流程
阿里云账号注册支持手机号、支付宝等验证方式。使用手机号需手动验证,而支付宝等可自动完成实名认证。注册后须进行个人或企业实名认证才能正常使用服务。个人认证推荐使用支付宝快速完成;企业认证也支持支付宝法人扫描完成。完成认证后,可在免费中心申请最长达3个月的免费服务器试用,或选择付费方案获得更多资源。
|
编解码 Android开发
Android | 老生常谈!屏幕适配原理 & 方案总结笔记
Android | 老生常谈!屏幕适配原理 & 方案总结笔记
865 0
Android | 老生常谈!屏幕适配原理 & 方案总结笔记
|
存储 数据挖掘 数据库
InfluxDB的连续查询与数据聚合技术详解
【4月更文挑战第30天】InfluxDB的连续查询(CQ)功能用于自动定时聚合时间序列数据,适用于数据降采样、实时分析和告警通知等场景。CQ使用InfluxQL编写,例如,每1小时对`cpu_usage`测量值计算主机的平均CPU使用率并存入`cpu_usage_hourly`。InfluxDB提供多种聚合函数如`MEAN()`, `MAX()`, 支持滑动窗口聚合等复杂操作,助力时间序列数据分析和趋势预测。通过CQ,用户能高效管理和利用时间序列数据信息。
1386 0
|
存储 缓存 前端开发
企业级包管理服务 cnpmcore
企业级包管理服务 cnpmcore
442 0
基于C#的ArcEngine二次开发31:addin开发时调用ArcMap的进度条
基于C#的ArcEngine二次开发31:addin开发时调用ArcMap的进度条
基于C#的ArcEngine二次开发31:addin开发时调用ArcMap的进度条
|
机器学习/深度学习 传感器 人工智能
Alibaba DChain Forecast:无代码、可视、可调节的智能预测系统
阿里巴巴数字供应链事业部面向云上企业和用户推出一款预测工具——Alibaba DChain Forecast,让AI驱动的时间序列预测变得极度简单,人人可以快速构建出一套预测系统,操作过程不需要理解机器学习技术,不需要编写代码,并且预测过程可视、可调节。
Alibaba DChain Forecast:无代码、可视、可调节的智能预测系统