Elasticsearch黑鸟教程14:Logstash的安装和使用
1、Logstash是什么?
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。如下图所示:
2、Logstash的数据输入
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
3、Logstash的过滤器:实时解析和转换数据
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。
Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响,例如:
(1)利用 Grok 从非结构化数据中派生出结构
(2)从 IP 地址破译出地理坐标
(3)...
4、Logstash的数据输出
尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。
Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
5、安装Logstash
从官网下载,解压即可:https://www.elastic.co/cn/downloads/logstash
安装完毕之后,请先让我们通过最基本的Logstash管道来测试一下刚才安装的Logstash,如下所示:
bin/logstash -e 'input { stdin {} } output { stdout {} }'
备注:选项 -e 的意思是允许你从命令行指定配置
Logstash管道有两个必需的元素:输入和输出,以及一个可选元素:过滤器。输入插件从数据源那里消费数据,过滤器插件根据你的期望修改数据,输出插件将数据写入目的地。
启动以后,下面我们在命令行下输入"hello world"
[root@localhost logstash7]# bin/logstash -e 'input { stdin {} } output { stdout {} }'
Using JAVA_HOME defined java: /usr/local/java/jdk11
WARNING, using JAVA_HOME while Logstash distribution comes with a bundled JDK
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
.........
[2020-12-08T14:33:53,723][INFO][logstash.runner] Starting Logstash {"logstash.version"=>"7.10.0", "jruby.version"=>"jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94bcc Java HotSpot(TM) 64-Bit Server VM 11.0.9+7-LTS on 11.0.9+7-LTS +indy +jit [linux-x86_64]"}
.........
[2020-12-08T14:33:58,603][INFO][logstash.agent] Successfully started Logstash API endpoint {:port=>9600}
# 启动完毕,输入hello world
hello world
{
"host" => "localhost",
"@timestamp" => 2020-12-08T06:34:13.871Z,
"@version" => "1",
"message" => "hello world"
}