LogStash介绍及二进制安装
概述
官方文档:https://www.elastic.co/guide/en/logstash/7.17/introduction.html
Logstash 是一款开源数据收集引擎,具备实时流水线功能。Logstash 可以动态地整合来自不同数据源的数据,并将其规范化到您选择的目标位置。它能够清理并简化您的所有数据,以适应各种高级下游分析和可视化用例。
虽然 Logstash 最初推动了日志收集领域的创新,但它的功能远不止于此。任何类型的事件都可以通过丰富的输入、过滤和输出插件进行丰富和转换,而许多原生编解码器则进一步简化了数据采集流程。Logstash 通过利用更大规模和更多样化的数据,加速您的洞察。
Logstash 的主要特点包括:
多输入源:Logstash 支持多种类型的输入数据,包括日志文件、系统消息队列、数据库等。
数据处理:Logstash 可以对数据进行各种转换和处理,如过滤、解析、格式化等。
多输出目标:Logstash 可以将数据发送到各种目标,如 Elasticsearch、Kafka、邮件通知等。
插件机制:Logstash 提供了丰富的插件,可以方便地扩展其功能。
与 Elasticsearch 和 Kibana 的集成:Logstash 是 Elastic Stack(前称 ELK Stack)的一部分,与 Elasticsearch 和 Kibana 有很好的集成,可以方便地进行数据搜索、存储和可视化。
LogStash的工作原理
参考文档:https://www.elastic.co/guide/en/logstash/7.17/pipeline.html
Logstash 的工作原理可以分为三个主要步骤:输入(Input)、过滤(Filter)和输出(Output)。
- 输入(Input):Logstash 支持多种类型的输入数据,包括日志文件、系统消息队列、数据库等。在配置文件中,你可以指定一个或多个输入源。
- 过滤(Filter):输入数据被收集后,Logstash 可以对数据进行各种转换和处理。例如,你可以使用 grok 插件来解析非结构化的日志数据,将其转换为结构化的数据。你也可以使用 mutate 插件来修改数据,如添加新的字段、删除字段、更改字段的值等。
- 输出(Output):处理后的数据可以被发送到一个或多个目标。Logstash 支持多种类型的输出目标,包括 Elasticsearch、Kafka、邮件通知等。
这三个步骤是在 Logstash 的事件处理管道中顺序执行的。每个事件(例如,一行日志数据)都会经过输入、过滤和输出这三个步骤。在过滤阶段,如果一个事件被过滤器丢弃,那么它将不会被发送到输出目标。
LogStash的工作模型
参考文档:https://www.elastic.co/guide/en/logstash/7.17/execution-model.html
每个 Input 启动一个线程:Logstash 会为每个输入插件启动一个线程,这些线程并行运行,从各自的数据源获取数据。
数据写入队列:输入插件获取的数据会被写入一个队列。默认情况下,这是一个存储在内存中的有界队列,如果 Logstash 意外停止,队列中的数据会丢失。为了防止数据丢失,Logstash 提供了两个特性:
- Persistent Queues:这个特性会将队列存储在磁盘上,即使 Logstash 意外停止,队列中的数据也不会丢失。
- Dead Letter Queues:这个特性会保存无法处理的事件。需要注意的是,这个特性只支持 Elasticsearch 作为输出源。
多个 Pipeline Worker 处理数据:Logstash 会启动多个 Pipeline Worker,每个 Worker 会从队列中取出一批数据,然后执行过滤器和输出插件。Worker 的数量和每次处理的数据量可以在配置文件中设置。
LogStash下载安装
下载地址:https://www.elastic.co/downloads/past-releases#logstash
在此地址下你可以下载LogStash不同版本、不同平台的安装包
安装JDK
LogStash是以Java语言编写的,安装JDK可以查看这篇文章:https://www.cnblogs.com/huangSir-devops/p/18919758
LogStash与Java版本对应关系,可以阅读这篇文章:https://www.elastic.co/support/matrix#logstash_plugins
我这里安装的是LogStash7.17.26,JDK版本选择的是JDK11
# 下载
[root@master ~]# wget https://mirrors.huaweicloud.com/openjdk/11.0.2/openjdk-11.0.2_linux-x64_bin.tar.gz
[root@master ~]# ll openjdk-11.0.2_linux-x64_bin.tar.gz
-rw-r--r-- 1 root root 187513052 Jan 18 2019 openjdk-11.0.2_linux-x64_bin.tar.gz
# 解压
[root@master ~]# tar -xvf openjdk-11.0.2_linux-x64_bin.tar.gz
# 创建软连接
[root@master ~]# ln -s /root/jdk-11.0.2 /usr/local/jdk11
[root@master ~]# ll /usr/local/jdk11
lrwxrwxrwx 1 root root 16 Jun 14 21:09 /usr/local/jdk11 -> /root/jdk-11.0.2/
# 配置环境变量
[root@master ~]# vim /etc/profile
# 根据实际安装路径修改
export JAVA_HOME=/usr/local/jdk11/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 加载环境变量
[root@master ~]# source /etc/profile
# 验证
[root@master ~]# java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
下载部署
我这里以7.17.26版本为准
# 下载
[root@ELK01 /data/software]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.26-linux-x86_64.tar.gz
# 解压
[root@ELK01 /data/software]# tar -xvf logstash-7.17.26-linux-x86_64.tar.gz
# 创建软连接
[root@ELK01 /data/software]# ln -s /data/software/logstash-7.17.26 /usr/local/logstash
[root@ELK01 /data/software]# ll /usr/local/logstash
lrwxrwxrwx 1 root root 31 Jun 15 12:09 /usr/local/logstash -> /data/software/logstash-7.17.26/
# 配置环境变量
[root@ELK01 ~]# echo 'export PATH=$PATH:/usr/local/logstash/bin' >> /etc/profile
[root@ELK01 ~]# source /etc/profile
验证LogStash
启动LogStash
[root@ELK01 ~]# logstash -e "input { stdin { type => stdin } } output { stdout { codec => rubydebug } }"
...# 启动日志省略
1 # 输入1
{
"message" => "1", # 输出1
"host" => "ELK01",
"@version" => "1",
"@timestamp" => 2025-06-15T04:15:58.847Z,
"type" => "stdin"
}
2 # 输入2
{
"message" => "2", # 输出2
"host" => "ELK01",
"@version" => "1",
"@timestamp" => 2025-06-15T04:16:00.123Z,
"type" => "stdin"
}
3 # 输入3
{
"message" => "3", # 输出3
"host" => "ELK01",
"@version" => "1",
"@timestamp" => 2025-06-15T04:16:01.564Z,
"type" => "stdin"
}
4 # 输入4
{
"message" => "4", # 输出4
"host" => "ELK01",
"@version" => "1",
"@timestamp" => 2025-06-15T04:16:03.969Z,
"type" => "stdin"
}
LogStash介绍及二进制安装的更多相关文章
- 二进制安装Kubernetes(k8s) v1.24.2 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.24.2 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 强烈建议在Github ...
- 二进制安装Kubernetes(k8s) v1.23.7 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.23.7 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 后续尽可能第一时间更新 ...
- 二进制安装Kubernetes(k8s) v1.24.1 IPv4/IPv6双栈 --- Ubuntu版
二进制安装Kubernetes(k8s) v1.24.1 IPv4/IPv6双栈 --- Ubuntu版本 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安 ...
- 二进制安装Kubernetes(k8s) v1.22.10 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.22.10 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 后续尽可能第一时间更 ...
- 二进制安装Kubernetes(k8s) v1.21.13 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.21.13 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 后续尽可能第一时间更 ...
- 二进制安装Kubernetes(k8s) v1.24.1 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.24.1 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 后续尽可能第一时间更新 ...
- 二进制安装Kubernetes(k8s) v1.24.0 IPv4/IPv6双栈 (三主俩从)
二进制安装Kubernetes(k8s) v1.24.0 IPv4/IPv6双栈 (三主俩从) Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes二进制安装 后续尽可 ...
- 二进制安装Kubernetes(k8s)IPv4/IPv6双栈 v1.24.0
二进制安装Kubernetes(k8s) v1.24.0 IPv4/IPv6双栈 介绍 kubernetes二进制安装 1.23.3 和 1.23.4 和 1.23.5 和 1.23.6 和 1.24 ...
- ELK 二进制安装并收集nginx日志
对于日志来说,最常见的需求就是收集.存储.查询.展示,开源社区正好有相对应的开源项目:logstash(收集).elasticsearch(存储+搜索).kibana(展示),我们将这三个组合起来的技 ...
- HBase介绍及简易安装(转)
HBase介绍及简易安装(转) HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存 ...
随机推荐
- 一款HTML转Markdown格式的工具
Markdown格式不仅对写博客的人非常友好和方便,对AI也是如此. 目前AI大语言模型的输出基本都是Markdown格式,这就意味着AI是能充分理解Markdown格式的,这一点非常重要. Mark ...
- final关键字、Object类--java进阶day01
1.规则 被final修饰的变量,名称都要大写,多单词的名称则需_来分隔 1.修饰方法 method方法已经不能被重写了,因为修饰该方法的是final 2.修饰类 当一个类中所有的成员方法都不想被重写 ...
- 我对TamperMonkey的不满-更新中
我认为我的电脑上的TamperMonkey插件的值得考虑的不足: 没有提供一个把脚本最小化的功能 不能编辑热键 脚本icon不能使用svg 没有提供一种很好的能够区分别人的脚本和自己的脚本的方式,自己 ...
- 【UWB】DWM1000 室内定位串口协议说明
UWB室内定位串口协议说明 通过串口发送的测距报告消息有三种: "mr"信息包括标签到锚定原始范围 "mc"标签到锚定范围偏差修正范围 - 用于标签位置 &qu ...
- 学习unigui【24】Echart的使用:多个坐标系
使用echart非常简单,网上有介绍. 主要放一个unihtmlFrame.然后unihtmlframe.text := 'html的代码',就会渲染(初次调用echart的js库要一点稍后). un ...
- 【Guava】IO工具
引言 Guava 使用术语 流来表示可关闭的,并且在底层资源中有位置状态的 I/O 数据流.字节流对应的工具类为 ByteSterams,字符流对应的工具类为 CharStreams. Guava 中 ...
- FastAPI 核心安全功能与模板渲染的完整示:登录、CSRF、JWT、会话、认证和缓存功能
以下是一个整合 FastAPI 核心安全功能与模板渲染的完整示例,基于多个技术文档的最佳实践,包含登录.CSRF.JWT.会话.认证和缓存功能: from datetime import dateti ...
- 从零开始:在Qt中使用OpenGL绘制指南
本文只介绍基本的 QOpenGLWidget 和 QOpenGLFunctions 的使用,想要学习 OpenGL 的朋友,建议访问经典 OpenGL 学习网站:LearnOpenGL CN 本篇文章 ...
- 智能简历解析器实战教程:基于Spacy+Flask构建自动化人才筛选系统
一.项目背景与技术选型 在人力资源领域,每天需要处理数百份简历的HR团队面临巨大挑战:人工筛选效率低下.关键信息遗漏风险高.跨文档对比分析困难.本教程将构建一个端到端的智能简历解析系统,通过NLP技术 ...
- 某公交管理系统简易逻辑漏洞+SQL注入挖掘
某公交管理系统挖掘 SQL注入漏洞 前台通过给的账号密码,进去 按顺序依次点击1.2.3走一遍功能点,然后开启抓包点击4 当点击上图的4步骤按钮时,会抓到图下数据包,将其转发到burp的重放模块 构造 ...