一、下载安装
下载地址:https://www.elastic.co/cn/downloads/past-releases#logstash。下载完成后直接解压即可。
二、Hello World
1、创建配置文件 logstash.conf:
input { stdin { } }
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
2、执行如下命令:
bin/logstash -f logstash.conf
如果看到 Successfully started Logstash API endpoint {:port=>9600} ,则说明启动成功。
3、启动成功后,终端会等待用户的输入,输入Hello World,回车,结果如下:
{
"@timestamp" => 2019-06-20T13:44:36.510Z,
"@version" => "1",
"host" => "ubuntu",
"message" => "Hello World"
}
4、重新打开一个终端,执行:
curl 127.0.0.1:9200/_search?q=hello
可以看到如下的输出:
{"took":57,"timed_out":false,"_shards":{"total":37,"successful":37,"failed":0},"hits":{"total":2,"max_score":1.2039728,"hits":[{"_index":"logstash-2019.06.20","_type":"logs","_id":"AWt1Ifw0TS7QeaapgTXy","_score":1.2039728,"_source":{"@timestamp":"2019-06-20T13:44:49.952Z","@version":"1","host":"ubuntu","message":" \"message\" => \"Hello World\""}},{"_index":"logstash-2019.06.20","_type":"logs","_id":"AWt1IcfgTS7QeaapgTXt","_score":0.6931472,"_source":{"@timestamp":"2019-06-20T13:44:36.510Z","@version":"1","host":"ubuntu","message":"Hello World"}}]}}
5、在浏览器中访问 http://192.168.124.102:5601,点击Discover页面可以看到下面的界面,在终端输入的数据,可以从这个页面任意搜索了:
三、配置语法
3.1 语法
3.1.1 区段(section)
Logstash用{}定义区域,区域内可以包含插件区域定义,可以在一个区域内定义多个插件。插件区域内可以定义键值对设置。如下:
input {
stdin { }
syslog { }
}
3.2.2 数据类型
1、布尔(bool)
debug=>true
2、字符串(string)
host=>“hostname”
3、数值(number)
port=>5600
4、数组(array)
match=>["datetime", "UNIX", "ISO8859-1"]
5、哈希(hash)
options=>{key1="value1", key2="value2"}
3.3.3 字段引用(field reference)
字段是Logstash::Event对象的属性,事件就像哈希,所以可以把字段想象成键值对。
如果在Logstash配置中使用字段的值,只需把字段的名字写在中括号[]中就可以了,这就叫字段引用。
3.2 命令行参数
Logstash提供了一个shell脚本让Logstash快速方便的运行。下面是它支持的参数:
1、-e
意即执行。这个参数的默认值如下:
input {
stdin { }
}
output {
stdout{ }
}
2、--config或-f
意即文件。用于指定配置文件,比如bin/logstash -f logstash.conf。此外,还可以使用bin/logstash -f /etc/logstash.d/来运行,Logstash会自动读取/etc/logstash.d/目录下所有的文本文件,然后在内存中拼接成一个完整的大配置文件,再去执行。
3、--configtest或-t
意即测试。用来测试Logstash读取到的配置文件语法是否能被正常解析。
4、--log或-l
意即日志。Logstash默认输出日志到标准错误,可以通过此参数改变日志存储路径。
5、--pipleline-workers或-w
运行filter和output的pipline线程数量,默认是CPU核心数。
6、--pipleline-batch-size或-b
每个Logstash pipline线程,在执行具体的filter或output函数前,最多能累计的日志条数,默认是125条,越大性能越好,同样会消耗最多的JVM内存。
7、--pipline-batch-delay或-u
每个Logstash pipline线程,在打包批量日志的时候,最多等待几毫秒,最多是5毫秒。
8、--pluginpath或-P
用于加载自己写的插件。
9、--verbose
输出一定的调试日志。
10、--debug
输出更多的调试日志。
3.3 设置文件示例
Logstash 5.0新增了$HOME/config/logstash.yml文件,可以将所有的命令行参数通过YAML文件方式设置,同时为了反应命令行配置参数的层级关系,参数都改成.而不用-了。
前面的pipline相关命令行参数,改用YAML文件的写法如下:
pipline:
workers: 24
batch:
size: 125
delay: 5
四、插件安装
从Logstash 5.0开始,Logstash将每个插件都独立拆分成gem包,这样,每个插件都可以独立更新,不必等待Logstash自身做整体更新。Logstash配置了专门的插件管理命令,语法如下:
bin/logstash-plugin [OPTION] SUBCOMMAND [ARG] ...
其中,SUBCOMMAND可以是install、ubinstall、update和list。
可以通过如下命令查看本机现在有多少插件可用:
bin/logstash-plugin list
如果想安装某个插件,则使用如下命令:
bin/logstash-plugin install plugin-name
如果是升级插件,则执行:
bin/logstash-plugin update plugin-name
bin/logstash-plugin不但可以通过rubygems平台安装插件,还可以读取本地路径的gem文件,这对自定义插件和无外网的情况下非常有用:
bin/logstash-plugin install /path/to/sush-plugin.gem