Logstash 01
Logstash 是一个具有实时管道处理能力的开源数据收集引擎, 它可以动态地整合各种来源的数据, 对数据进行处理后输出到指定的多个目的地
安装
Logstash 默认使用捆绑的 AdoptOpenJDK 11, 可以通过 JAVA_HOME
指定另一个 JDK
Installing from a Downloaded Binary
在任意位置解压
tar -xzf logstash-7.14.0-linux-x86_64.tar.gz
sudo mv logstash-7.14.0 /usr/share/
Installing from Package Repositories
以 APT 为例
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install logstash
Logstash 的安装位置为 /usr/share/logstash
配置 Logstash 环境
将 Logstash 安装目录的所有者变更到当前用户
sudo chown -R $USER:$USER /usr/share/logstash-7.14.0
USER 是一个环境变量, 表示当前用户
将 Logstash 的可执行目录加入环境变量 PATH 中, 可将下面的命令置于 ~/.bashrc 末尾, 这样每次都可直接使用 logstash
启动 Logstash
export PATH="$PATH:/usr/share/logstash-7.14.0/bin"
测试
一个 Logstash Pipeline 由 inputs, filters 和 outputs 组成
Logstash 拥有大量 input, filter, codec, and output 插件可供使用
这里使用最简单的配置测试一下
- input 部分使用 stdin
- 省略 filter 部分
- output 部分使用 stdout
logstash -e 'input { stdin { } } output { stdout { } }'
-e 选项表示直接从命令行读取配置
对应的配置文件等同于
input {
stdin { }
}
output {
stdout { }
}
完全启动 Logstash 后, 在终端输入 “Logstash”, 得到以下输出
{
"@timestamp" => 2021-08-13T08:51:18.463Z,
"host" => "911ME",
"message" => "Logstash",
"@version" => "1"
}
图示如下:
不可能每一次都在终端输入配置, 下面的示例使用配置文件 pipe.conf 启动 logstash, 内容如下:
input {
stdin { codec => json }
}
output {
stdout { }
}
codec 仅能在 input 和 output 部分使用
启动 logstash
logstash -f pipeline.conf
在终端输入:
{"name": "Hoss"}
Logstash 输出如下:
{
"@timestamp" => 2021-08-13T08:59:09.814Z,
"@version" => "1",
"name" => "Hoss",
"host" => "911ME"
}
输出中包含了 name 字段
如果配置中 stdout 没有指定 codec, 默认使用的 codec 为 rubydebug