大数据-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_path | sincedb 文件路径 |
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 只对新文件生效