1. Logstash 命令行参数
#测试配置文件语法是否能正常解析
./logstash -t xxx.conf
#直接执行,不使用配置文件(默认input,output)
./logstash -e
#指定配置文件启动
./logstash -f xxx.conf
#指定配置文件目录夹启动-----系统会自动读取文件夹下所有配置文件,并在内存中整合
./logstash -f /xxx/
#指定logstash运行日志输出位置
./logstash -l /xxx/
以上命令可以组合使用:
#使用xxx.conf 配置文件启动,并且输出日志在当前目录夹下的log文件中
./logstash -f xxx.conf -l ./log/
当然如果按上面输出,那么Ctrl + C后,程序就关了。这个有很多解决方式,这里贴最简单的nohup
# 这里的日志并不会输出在nohup.out中,而是输出在log文件夹下
nohup ./logstash -f xxx.conf -l ./log/ &
2. 输入插件 (配置)
-
标准输入
启动后在控制台输入Hello World ,输出台打印Hello Wolrd ,与-e 指令启动一样。
input{ stdin { add_field => {"key" => "value"} codec =>"plain" tags => ["add"] type =>"std" } } output{ stdout { } }
-
文件输入
指定读取日志文件输入,提取日志推送给elasticsearch
input { file { path => ["/home/*.log"] type => "system" start_position =>"beginning" } } output{ elasticsearch { hosts => ["127.0.0.1:9200"] action => "index" index => "matthiola-log-%{+YYYY-MM-dd}" } }
配套配置项:
#Logstash每隔多久检查一次被监听的路径下有新文件(默认15s) discover_interval #排除文件,即不监听哪些文件 exclude => ["xxx.log","xxxx-server.log"] #每隔多久写一次Sincedb文件(即记录监听事件的文件) sincedb_write_interval #每隔多久检查一次被监听的文件状态(文件有没有更新) stat_interval #从什么位置开始读取文件数据(默认是上一次结束位置),删除sincedb监听文件也可以达到从头读取的效果 start_position => "beginning" #从头开始读取,读取完后,自动变成从结束位置开始
-
TCP输入
TCP监听器会在接收每个链接时,都启动新的线程,即每一次传输,都会重新建立一次连接。UCP监听器只启动了一个线程。
input{ tcp{ type => "system-syslog" port => 8089 } } #输出到elastcisearch output{ elasticsearch{ hosts => ["127.0.0.1:9200"] #elasticsearch服务地址 action => "index" index => "matthiola-log-%{+YYYY-MM-dd}" #以天为单位创建的索引 } }