04.logstash部署及实操
部署logstash
Logstash是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中,Logstash的作用就是在于日志处理,转换操作。
1.下载logstash
1 | [root@elk01:1 ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.23-amd64.deb |
2.安装logstash
1 | [root@elk01:1 ~]# dpkg -i logstash-7.17.23-amd64.deb |
3.添加软链接
1 | [root@elk01:1 ~]# ln -svf /usr/share/logstash/bin/logstash /usr/local/bin/ |
4.启动测试
1 | [root@elk01:1 ~]# logstash -e "input { stdin { type => stdin } } output { stdout { codec => rubydebug } }" |
温馨提示:如果你出现了和我一样报错如下
[ERROR] 2024-10-05 01:25:25.226 [pool-3-thread-1] jvm - Unknown garbage collector name {:name=>“G1 Concurrent GC”}
1
2
3
4
5
6
7
8
9 表示 Logstash 不识别 "G1 Concurrent GC" 作为垃圾回收器的名称。这可能是因为在 `jvm.options` 配置文件中指定了错误的垃圾回收器名称。
解决:编辑 jvm.options 文件:
[root@elk01:1 ~]# vim /etc/logstash/jvm.options
#修改或添加 JVM 参数:
在 jvm.options 文件中,应该设置 -XX:+UseG1GC 来启用 G1 垃圾回收器,而不是使用 "G1 Concurrent GC" 这样的名称。找到任何提及垃圾回收器的行,没有就添加,之后重启logstash
-XX:+UseG1GC
logstash组件
logstash有三个核心组件,分别为input,filter和output。其中,filter组件是可选组件。
1 | logstash多实例及pipeline概念 |
logstash类型案例
yes的为必选参数
input-tcp类型
1 | #1.编写logstash实例,标准输出stdout |
1 | #标准输出的#,若不指定codec属性,则默认的解码器为rubydebug。 |
input-file类型
1 | #1.编写logstash实例,标准输出stdout(注意path类型是数组,详细看官网) |
logstash的采集缓存
当我们停掉实例2时候,再次往test.conf里写入新数据 7890 ,重新执行实例2时候,发现数据并不会重新采集,而是只采集新数据,这种现象同filebeat一样,将采集过的记录放在缓存文件里,下次采集前先读取这个文件,看看采集的偏移量,那这个文件在哪呢?
1 | 启动实例时候发现读取文件-->/usr/share/logstash/data/plugins/inputs/file/.sincedb_387337cd9c394c04fb5a33c176cf8715", :path=>["/tmp/test.conf"]} |
如何实现文件重新采集?
1.清空这个文件喽,直接清空这一级目录所有文件即可
rm -f /usr/share/logstash/data/plugins/inputs/file/.sincedb*
2.设置文件采集为从头采集
1
2
3
4
5
6
7
8
9
10 [root@elk01:3 ~]# vim /etc/logstash/conf.d/02_file_stdout.yaml
input {
file {
path => ["/tmp/test.conf","/tmp/test2.log"] #path数组,支持采集多个文件
start_position => "beginning"
}
}
output {
stdout {}
}start_position 默认值end 从文件最后位置采集,有效值为 beginning end
logstash的多实例
1 | 同filebeat一样,启动时候指定不同数据目录 --path.data |
评论