ELK(九)—logstash

目录

  • 简介
  • 安装部署
      • 测试
  • 配置详解
  • 编写配置文件
    • 连接elasticsearch
    • 将数据推送到elasticsearch中。

简介

Logstash 是一个开源的服务器端数据处理管道,由 Elastic 公司维护和开发。它被设计用于从不同来源收集、处理和转发数据,以供 Elasticsearch 进行存储和检索。

以下是 Logstash 的主要特点和功能:

  1. 数据收集:Logstash 支持从各种来源收集数据,包括日志文件、数据库、消息队列、网络流量等。它具有丰富的插件生态系统,可以轻松地集成到多种数据源。

  2. 数据处理:Logstash 允许用户对收集到的数据进行处理和转换。通过配置不同的过滤器,可以执行各种任务,如解析结构化数据、过滤不需要的信息、标准化字段等。

  3. 数据输出:处理后的数据可以发送到各种目标,其中最常见的目标是 Elasticsearch,用于存储和检索数据。此外,Logstash 还支持输出到其他存储后端,如文件、消息队列、关系型数据库等。

  4. 插件生态系统:Logstash 的强大之处在于其插件生态系统。用户可以根据需要选择合适的输入、过滤器和输出插件,以满足特定的数据处理和集成需求。

  5. 可扩展性:Logstash 是可扩展的,可以通过添加自定义插件或使用现有的插件进行扩展。这使得 Logstash 适用于不同规模和类型的数据处理工作负载。

  6. 配置简单:Logstash 的配置文件采用简单的文本格式,易于理解和维护。用户可以根据需要编写配置文件,定义数据流的输入、过滤和输出。

  7. 日志监控和管理:Logstash 提供了用于监控和管理的工具和接口。用户可以使用 Kibana 可视化工具对 Logstash 进行监控,并查看其性能指标和运行状态。

整个 ELK(Elasticsearch、Logstash、Kibana)堆栈通常一起使用,以实现从数据收集到存储、分析和可视化的完整数据处理流程。Logstash 在这个堆栈中的角色是作为数据处理引擎,负责处理和传递数据到 Elasticsearch,而 Kibana 提供了强大的可视化和查询工具。

安装部署

下载安装包

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.11.1-linux-x86_64.tar.gz

解压

tar -xvf logstash-8.11.1-linux-x86_64.tar.gz

重命名

mv logstash-8.11.1/ logstash

测试

简单示例

./logstash -e 'input { stdin { } } output { stdout {} }'
  • ./logstash:这是启动 Logstash 的命令。前提是你在 Logstash 的安装目录中,这个命令会在当前目录下寻找 logstash 可执行文件。

  • -e:这个参数允许你在命令行中直接指定 Logstash 的配置,而不必使用配置文件。后面跟着的是包含 Logstash 配置的字符串。

  • 'input { stdin { } } output { stdout {} }':这个字符串是 Logstash 的配置,分为三个部分:

    • input { stdin { } }:定义了一个输入插件,使用 stdin 插件从标准输入接收数据。

    • filter { }:这里没有定义过滤器,表示不对输入数据进行过滤。

    • output { stdout {} }:定义了一个输出插件,使用 stdout 插件将处理后的数据输出到标准输出。

所以,这个 Logstash 配置的作用是从标准输入接收数据,不对数据进行过滤,然后将处理后的数据输出到标准输出。这对于在命令行中手动输入数据、测试 Logstash 配置或查看处理结果非常有用。

​ 我们在控制台输入 你好,程序猿,马上就能看到它的输出信息

image-20231208174520513

配置详解

Logstash 的配置文件主要由三个部分组成:input、filter 和 output。每个部分负责不同的任务,用于定义数据的输入、处理和输出。

input { #输入
stdin { ... } #标准输入
}
filter { #过滤,对数据进行分割、截取等处理
...
}
output { #输出
stdout { ... } #标准输出
}

以下是对 Logstash 配置文件中 input、filter 和 output 部分的简要详解:

  1. Input(输入)

    input {stdin {# 配置参数}
    }
    
    • stdin:此输入插件从标准输入接收数据。这对于在命令行中手动输入数据进行测试非常有用。

    • 配置参数:stdin 插件本身不需要太多的配置参数。它主要用于从标准输入读取数据。

  2. Filter(过滤)

    filter {# 过滤器插件
    }
    
    • 过滤器插件:在 filter 部分,可以配置一个或多个过滤器插件,用于对输入的数据进行处理和转换。这些过滤器可以执行各种任务,如解析结构化数据、截取字段、添加标签等。

    • 例子:例如,可以使用 grok 过滤器解析日志中的特定字段,使用 mutate 过滤器修改字段值,或者使用其他过滤器执行数据转换操作。

  3. Output(输出)

    output {stdout {# 配置参数}
    }
    
    • stdout:此输出插件将处理后的数据输出到标准输出。这对于在命令行中查看 Logstash 处理后的数据非常有用,用于调试和测试。

    • 配置参数:stdout 插件通常不需要太多的配置参数。它用于在控制台上显示处理后的数据。

配置文件中还可以包含其他的 input、filter 和 output 部分,以根据需求定义多个输入来源、多个过滤器和多个输出目标。整个配置文件定义了数据的整个处理流程。

编写配置文件

在“/opt/elk/logstash”下创建hmiyuan-pipeline.conf

input {file {path => "/opt/elk/logs/test.log"start_position => "beginning"}
}
filter {mutate {split => {"message"=>"|"}}
}
output {stdout { codec => rubydebug }
}

启动

./bin/logstash -f ./hmiyuan-pipeline.conf

插入数据

echo "2023-12-13 16:28:24|ERROR|读取数据出错|参  :i=1002" >> //opt/elk/logs/test.log

然后我们就可以看到logstash就会捕获到刚刚我们插入的数据,同时我们的数据也被分割了

image-20231213162915144

连接elasticsearch

更改配置文件,将我们日志记录输出到Elasticsearch中。

image-20231213163049823

向配置文件中的日志追加数据

echo "2023-12-13 16:30:24|ERROR|读取数据出错|参  :i=1002" >> //opt/elk/logs/test.logecho "2023-12-13 16:31:24|ERROR|读取数据出错|参  :i=1002" >> //opt/elk/logs/test.log

最后登录elasticsearch-head界面查看,如果成功的话,就可以查看到插入的数据了。

image-20231213163522927

将数据推送到elasticsearch中。

input {file {path => "/opt/logs/*.log"start_position => "beginning"sincedb_path => "/dev/null"exclude => "*.gz"}
}filter {mutate {split => {"message"=>"|"}}
}output {elasticsearch {hosts => ["192.168.150.190:9200"]index => "logs_index"}
}

​ 配置文件说明:

​ input: 指定输入源,logstash会从输入源读取数据。

​ file:输入源为文件。

​ path:文件路径,* 是通配符,用于匹配文件路径中的任意字符序列。

​ start_position: 设定为 “beginning”,表示从文件的开头开始读取数据。

​ sincedb_path: 指定了 sincedb 文件的路径,但这里设置为 /dev/null,意味着不使用 sincedb 文件来跟踪已读取的文件位置。

​ exclude:排除以 .gz 结尾的文件。

​ output:指定输出源,logstash会把数据处理成elasticsearch识别的数据发送给elasticsearch。

​ hosts:elasticsearch 应用地址

​ index:指定索引,会在elasticsearch中创建

启动

./bin/logstash -f ./hmiyuan-pipeline.conf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

持续集成交付CICD:Jenkins使用GitLab共享库实现前端项目镜像构建

目录 一、实验 1. GitLab修改项目文件与Harbor环境确认 2.Jenkins使用GitLab共享库实现前端项目镜像构建 3.优化CI流水线封装Harbor账户密码 4.Jenkins再次使用GitLab共享库实现前端项目镜像构建 一、实验 1. GitLab修改项目文件与Harbor环境确认 (1&#xf…

掌握 Babel:让你的 JavaScript 与时俱进(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

npm简介与使用指南

一、什么是npm? npm,全称为Node Package Manager,是Node.js的包管理器。它允许开发者分享和重用代码,提供了一个巨大的开源库供开发者选择和使用。通过npm,你可以轻松安装、更新和管理Node.js的库和工具。 二、npm的主要功能 …

Java对象结构

Java 对象(Object 实例)结构包括三部分:对象头、对象体、对齐字节。 Object的三个部分 对象头包括三个字段,第一个字段叫做 Mark Word(标记字),用于存储自身运行时的数据 例如 GC 标志位、哈希码、锁状态等信息。 第二个字段叫做 Class Pointer(类对象…

2024免费mac苹果电脑系统电脑管家CleanMyMac X

macOS已经成为最受欢迎的桌面操作系统之一,它提供了直观、简洁的用户界面,使用户可以轻松使用和管理系统。macOS拥有丰富的应用程序生态系统;还可以与其他苹果产品和服务紧密协作,如iPhone、iPad,用户可以通过iCloud同…

2023_Spark_实验二十八:Flume部署及配置

实验目的:熟悉掌握Flume部署及配置 实验方法:通过在集群中部署Flume,掌握Flume配置 实验步骤: 一、Flume简介 Flume是一种分布式的、可靠的和可用的服务,用于有效地收集、聚合和移动大量日志数据。它有一个简单灵活…

缓存击穿的原因和解决方案

缓存击穿 原因:一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击 解决方案 1.互斥锁 优点 没有额外的内存消耗保证一致性实现简单 缺点 线程需要等待,性能受影响可能有死锁风险 …

vue 历程记

目录 前言一、源码优化1、vue3.x 采用 monorep 的理念来管理源码2、vue3.x 源码采用 TypeScript 开发 二、性能优化1、减少源码的体积2、数据劫持优化3、编译优化(1)、编译粒度的优化 三、语法 API 的优化1、优化了编码的逻辑组织2、优化了代码的逻辑复用…

webpack学习-6.缓存

webpack学习-6.缓存 1.前言2.输出文件的文件名3. 提取引导模板4.模块标识符5.总结 1.前言 webpack 会在打包后生成可部署的 /dist 目录,并将打包后的内容放在此目录。一旦 /dist 目录中的内容部署到服务器上,客户端(通常是浏览器&#xff09…

Linux操作系统:自由、稳定、强大的开源之光

导言 Linux操作系统作为一个开源的、多用户、多任务、支持多线程和多CPU的UNIX类操作系统,不仅在服务器领域占有显著份额,也逐渐在桌面和嵌入式系统中崭露头角。Linux操作系统的多样性体现在各种不同的发行版上,而Ubuntu、CentOS和Red Hat可以…

C# WPF上位机开发(进度条操作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 软件上面如果一个操作比较缓慢,或者说需要很长的时间,那么这个时候最好添加一个进度条,提示一下当前任务的进展…

SQL进阶理论篇(十一):什么是MVCC?

文章目录 简介什么是MVCC快照读与当前读悲观锁的问题示例参考文献 简介 在MySQL中,默认的隔离级别是可重复读,可以解决脏读和不可重复读的问题,但不能解决幻读问题。如果想要解决幻读问题,就需要采用串行化的方式,通过…

js中for-in和for-of的区别

文章目录 一、介绍1.1、for-in1.2、for-of 二、区别2.1、迭代对象的内容不同2.2、迭代对象的类型不同2.3、迭代对象的顺序不同2.4、迭代对象的原理不同 三、联系四、如何选择合适的循环方法五、总结六、最后 一、介绍 在JavaScript中,for-in 和 for-of 是两种不同的…

详细教程 - 从零开发 Vue 鸿蒙harmonyOS应用 第六节(js版) ——模块化设计实现复杂页面

随着HarmonyOS生态的日渐完善,越来越多的厂商加入鸿蒙系统应用开发的行列。然而从其他系统转到鸿蒙开发,很多开发者还是需要一个适应的过程,特别是面对比较复杂的页面,应该如何合理进行模块化拆分是一个难点。 本文将通过一个实例,来分析如果采用模块化的方式实现一个包含丰富内…

【个人版】SpringBoot下Spring-Security自定义落地篇【四】

SpringBoot Spring-Security 背景: 上篇文章在源码读取的基础上,根据自身代码习惯及需求,总结了一个自定义简单落地版本。后来在看到松哥写的博文(不太爱看官网),发现还有新的变种模式,虽然整…

mysql使用全文索引+ngram全文解析器进行全文检索

表结构:表名 gamedb 主键 id 问题类型 type 问题 issue 答案 answer 需求 现在有个游戏资料库储存在mysql中,客户端进行搜索,需要对三个字段进行匹配,得到三个字段的相关性,选出三个字段中相关性最大的值进…

【MYSQL】-库的操作

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

前端框架如何帮助开发者构建应用程序?

目录 前言 1.项目简介 2. 平台特性 2.1 构架特性 2.2 功能特性 3. 整体架构 4. 技术栈 平台的开放性: 平台高拓展性: 5. 基础功能及搭建 5.1 代码生成器 5.2 工作流程 5.3 门户设计 5.4 大屏设计 5.5 报表设计 5.6 第三方登录 5.7 多租…

vscode 同步插件

vscode 扩展商店链接 https://marketplace.visualstudio.com/vscode settings sync 插件

apache shiro 反序列化漏洞解决方案

apache shiro 反序列化漏洞解决方案 反序列化漏洞解决方案产生原因解决方案1:1.升级shiro至最新版本1.7.1解决方案2:修改rememberMe默认密钥,生成随机密钥。 反序列化漏洞解决方案 反序列化漏洞介绍 序列化:把对象转换为字符串或…