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的目标是存 ...
随机推荐
- selenium爬虫2
无头浏览器简介 无头浏览器(Headless Browser)是一种没有图形用户界面的浏览器,它在后台运行,不会显示任何窗口或界面.无头浏览器通常用于自动化任务,如网页抓取.自动化测试和性能监控等. ...
- CentOS 版本选择DVD、Everything、LiveCD、Minimal、NetInstall
CentOS 7.X,主要是下载的时候有很多版本供选择,如何选择? DVD版:这个是常用版本,就是普通安装版了,推荐大家安装.里面包含大量的常用软件,大部分情况下安装时无需再在线下载,体积为4G.Ev ...
- 【虚拟机】在VMware中为Ubuntu虚拟机设置共享文件夹
[虚拟机]在VMware中为Ubuntu虚拟机设置共享文件夹 零.需求 有些开发工具在Windows上没有,只能在Ubuntu上开发,但是自己电脑是Windows的,开发完成后需要通过Windows分 ...
- 【Ubuntu】在Ubuntu上安装微信
[Ubuntu]在Ubuntu上安装微信 零.说明 微信官网最近发布了Linux的测试版本,实际使用下来与Windows版本相差不多,本文介绍如何在Ubuntu(Debian系)上安装Linux版本的 ...
- 阿里云ECS下安装的MySQL无法远程连接?
场景重现 在阿里云ECS下, Ubuntu系统上通过以下命令安装的MySQL数据库, 本地连接正常, 但远程死活连接不上. # 安装MySQL apt-get install mysql-server ...
- ESP32+Arduino入门教程(二):连接OLED屏
前言 文中视频效果可在此次观看:ESP32+Arduino入门教程(二):连接OLED屏 接线 现在先来看看接线. 我的是0.91寸的4针OLED屏. OLED引脚 ESP32-S3引脚 GND GN ...
- 使用Python计算万有引力势能
引言 在物理学中,万有引力是描述物体之间相互吸引的基本力之一.牛顿的万有引力定律告诉我们,任何两个物体之间都存在引力,这个引力与它们的质量和它们之间的距离有关.在这个定律中,万有引力势能是一个非常重要 ...
- rabbitmq学习与总结
一.rabbitmq的使用场景 1.高并发的流量削峰 举个例子,假设某订单系统每秒最多能处理一万次订单,也就是最多承受的10000qps,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒 ...
- 搞定 XLSX 预览?别瞎找了,这几个库(尤其最后一个)真香!
- Hey, 我是 沉浸式趣谈 - 本文首发于[沉浸式趣谈],我的个人博客 **https://yaolifeng.com** 也同步更新. - 转载请在文章开头注明出处和版权信息. - ...
- 一个简单的struts2配置
目录 1 需求 2 需要导入的jar包 3 项目的目录结构 3.1 demo1.jsp 3.2 success.jsp 3.3 HelloAction.java 3.4 struts.xml 3.5 ...