(0.3)logstash安装
【基本介绍】
官方文档:https://www.elastic.co/guide/en/logstash/current/first-event.html
【0.1】概念介绍
Logstash是一个具有实时管道的开源数据收集引擎。可以动态地统一不同来源的数据,并将数据归到不同目的地。也是一个管理事件和日志工具。你可以用它来收集日志,分析它们,并将它们储存起来以供以后使用。
Logstash 通常都是和 Kibana 以及 Elasticsearch 一起使用,且版本要一样。
【0.2】save your event
Logstash管道具有两个必需元素input
和output
,以及一个可选元素filter
。输入插件使用来自源的数据,过滤器插件根据您的指定修改数据,输出插件将数据写入目标。
【1】Centos7.X 下载
【1.1】下载
要和 es/kibana 下载同一个版本,最佳;
https://www.elastic.co/cn/downloads/logstash
【1.2】前置环境配置(JVM)
Logstash需要以下版本之一:
- Java 8
- Java 11
- Java 14
使用 官方的Oracle发行版或开源发行版,例如 OpenJDK。
如果要使用捆绑版本以外的JDK,请使用JAVA_HOME环境变量。如果您将JAVA_HOME环境变量设置为使用自定义JDK,则即使升级后,Logstash仍将继续使用您指定的JDK版本。
安装包里有自带捆绑JDK;
注意,如果操作系统并环境变量中没有配置 JAVA_HOME,则使用其自带的捆绑JDK;
【2】安装
【2.1】解压、移动位置、授权
tar -zxvf logstash-7.11.1-linux-x86_64.tar.gz mv logstash-7.11.1 /usr/local/logstash groupadd elk useradd elk -g elk chown -R elk:elk /usr/local/logstash
【2.2】快速启动的方法
#启动 基本的 intput output #stdin stdout 标准输入、标准输出插件 /usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{} }' # codec插件,指定输出格式为json /usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{ codec => json } }' # 日志内容写入elasticsearch /usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ elasticsearch{hosts => ["192.168.175.129:9200"]} }' #日志内容写入elasticsearch,同时标准输出 #注意elasticsearch插件的语法格式:hosts 对应数组 /usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ elasticsearch{hosts => ["192.168.175.129:9200"]} stdout{} }'
【3】启动演示
【3.1】标准输入、输出启动演示
(1)启动
su -l elk -c "/usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{} }'"
机器性能太差启动花了好几分钟,我还以为我出问题了呢,详细启动信息如下图:
(2)输入,输出,核验
在默认情况下,stdout输出插件的编码解释器为 rubydebug,所以输出内容中包含了时间、版本等额外信息;其中 message 就是我们输入的信息了;
(3)停止,我们没有后台运行,直接 ctrl c 即可
【3.2】更换编解器启动
在默认情况下,stdout输出插件的编码解释器为 rubydebug,所以输出内容中包含了时间、版本等额外信息;其中 message 就是我们输入的信息了;
换一些编码解码器试试:
(1)JSON
/usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{ codec => json } }'
(2)plain
/usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{ codec => plain } }'
【3.3】使用配置文件启动,连接 ES
在我们上面几种启动方法中,都是直接使用命令加 -e 参数传输配置字符串,指定了标准输入 stdin 和 标准输出 stdout 插件
(1)修改配置文件
logstash有两种类型的文职文件,一种是 .yml,一种是.conf;
我们这次用 .conf
vim /usr/local/logstash/config/logstash-sample.conf
input { stdin { } } output { elasticsearch { host = > ["http://192.168.175.129:9200"] index = > "stdin" } }
里面有个默认简单案例配置在里面,我们注释掉就好了;然后把我们上面的代码粘贴进来
(2)以配置文件启动
记得把配置文件修改成utf8格式不然十有八九就报错
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-sample.conf
【错误】
(1) Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main
解决:把.conf 文件转成utf8格式
(2)org.jruby.exceptions.SystemExit: (SystemExit) exit
org.jruby.exceptions.SystemExit: (SystemExit) exit at org.jruby.RubyKernel.exit(org/jruby/RubyKernel.java:747) ~[jruby-complete-9.2.13.0.jar:?] at org.jruby.RubyKernel.exit(org/jruby/RubyKernel.java:710) ~[jruby-complete-9.2.13.0.jar:?]