官方文档 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html
重要参数:
- path # 文件路径
- sincedb_path # 隐藏文件,记录读取文件的位置,默认在启动用户的目录下,如root用户在/root下
- start_position # 默认从文件尾开始读取记录,可以设置从文件头开始读取,类似tail -f
- type # 类型,可以通过if进行判断
一.logstash配置文件使用
通过yum安装默认路径/etc/logstash/conf.d,配置文件存放路径
1.1 编写demo.conf文件,通过配置文件实现标准输入、两个输出:标准输出插件和elasticsearch插件
vim /etc/logstash/conf.d/demo.conf input{ stdin{} } filter{ } output{ elasticsearch { hosts => ["10.0.0.22:9200"] index => "logstash-%{+YYYY.MM.dd}" } stdout{ codec => rubydebug } }
备注:配置文件中#表示注释。
启动配置文件
[root@saltstack02 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/demo.conf
2.2 使用logstash配置文件收集messages日志
[root@linux-node1 ~]# vim /etc/logstash/conf.d/system.conf input { file { path => "/var/log/messages" #日志路径 type => "systemlog" #类型 start_position => "beginning" #logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成"beginning",logstash 进程就从头开始读取,类似 less +F 的形式运行。 stat_interval => "2" #logstash 每隔多久检查一次被监听文件状态(是否有更新) ,默认是 1 秒。 } } output { elasticsearch { hosts => ["10.0.0.22:9200"] #指定hosts index => "logstash-systemlog-%{+YYYY.MM.dd}" #索引名称 } } [root@saltstack02 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system.conf -t #检测配置文件是否有语法错误 WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console Configuration OK
1.3修改日志的权限,防止报错
[root@linux-node1 ~]# ll /var/log/messages -rw-------. 1 root root 791209 12月 27 11:43 /var/log/messages #这里可以看到该日志文件是600权限,而elasticsearch是运行在elasticsearch用户下,这样elasticsearch是无法收集日志的。所以这里需要更改日志的权限,否则会报权限拒绝的错误。在日志中查看/var/log/logstash/logstash-plain.log 是否有错误。 [root@linux-node1 ~]# chmod 644 /var/log/messages [root@linux-node1 ~]# systemctl restart logstash
1.4 执行
[root@saltstack02 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system.conf