大数据-185 Logstash 7 入门实战

1. Logstash 架构

Logstash 管道三阶段:

Input → Filter → Output

2. stdin 输入

bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

3. file 输入

3.1 基本配置

input {
  file {
    path => "/var/log/nginx/access.log"
    type => "nginx"
    start_position => "end"
  }
}

output {
  stdout { codec => rubydebug }
}

3.2 关键参数

参数说明
path文件路径,支持通配符
type添加类型字段,便于后续处理
start_position从哪里开始读取:beginning 或 end
discover_interval发现新文件间隔(默认 15 秒)
close_older关闭多久未更新的文件(默认 3600 秒)
sincedb_pathsincedb 文件路径

4. sincedb 机制

  • 记录每个文件的读取偏移量
  • 断点续传,防止重复采集
  • 文件路径 + inode 关联

4.1 start_position 生效条件

  • 仅对首次看到的文件生效
  • 如果 sincedb 已有记录,start_position 被忽略

5. 错误速查表

问题可能原因解决方案
重复数据sincedb 记录错误删除 sincedb 文件重新开始
采集不到数据权限问题检查文件读取权限
文件不更新close_older 过短调大 close_older

6. 总结

  • Logstash 管道:Input → Filter → Output
  • sincedb 实现断点续传
  • start_position 只对新文件生效