文章目录
1、部署Logstash
需要jdk环境
[root@localhost ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
(1)下载解压lostash
[root@localhost ~]# mkdir -p /hqtbj/hqtwww/
[root@localhost ~]# wget -cP /hqtbj/hqtwww/ https://artifacts.elastic.co/downloads/logstash/logstash-7.17.6-linux-x86_64.tar.gz
[root@localhost ~]# cd /hqtbj/hqtwww/
[root@localhost hqtwww]# tar -zxf logstash-7.17.6-linux-x86_64.tar.gz
[root@localhost hqtwww]# mv logstash-7.17.6 logstash_workspace
(2)修改配置文件编写测试案例
[root@localhost ~]# mkdir -pv /hqtbj/hqtwww/logstash_workspace/conf-logstash
[root@localhost ~]# cd /hqtbj/hqtwww/logstash_workspace/
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/01-stdin-stdout.conf << EOF
input {
stdin {}
}
output {
stdout {}
}
EOF
(3)运行测试案例
[root@localhost ~]# sh /hqtbj/hqtwww/logstash_workspace/bin/logstash -f /hqtbj/hqtwww/logstash_workspace/conf-logstash/01-stdin-stdout.conf
2、input插件基于file案例
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/02-log-stdout.conf << EOF
input {
file {
#指定收集的路径
path => "/tmp/logstash/*.log"
#指定文件的读取位置,仅在".sincedb*"文件中没有记录的情况下生效
start_position => "beginning"
#默认的文件读取位置,从末尾开始读取数据
#start_position => "end"
}
}
output {
stdout {}
}
EOF
3、logstash实现日志聚合案例
#也是input插件基于TCP收集数据的案例
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/03-tcp-stdout.conf << EOF
input {
tcp {
#监听的端口
port => 9999
}
tcp {
#监听的端口
port => 8888
}
}
output {
stdout {}
}
EOF
4、input插件基于http收集数据案例
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/04-http-stdout.conf << EOF
input {
http {
port => 9999
}
http {
port => 8888
}
}
output {
stdout {}
}
EOF
5、input插件基于redis收集数据案例/output插件将数据发送到redis案例
###filebeat的配置文件【将数据推送到redis当作缓存】###
[root@localhost ~]# cat >> /hqtbj/hqtwww/filebeat_workspace/20-log-to-redis.yml << EOF
filebeat.inputs:
- type: log
paths:
- /tmp/test.log
output.redis:
#写入redis的主机地址
hosts: ["192.168.1.2:6379"]
#指定redis的认证口令(登录密码)
password: "123.com.cn"
#指定的key的值,可自定义
key: "filebeat-test-redis"
#指定redis桶(数据库)编号
db: 7
#规定超时时间
timeout: 5
EOF
###logstash的配置文件【将filebeat推送到redis的数据拿出来输出在终端】###
```bash
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/05-redis-stdout.conf << EOF
input {
redis{
#指定的是redis的键(key)的类型
#list类型将在redis拿过来一条数据,删除redis上的一条数据
#例如本例就是将redis的数据拿过来输出在终端上后,就会把redis里的数据删除;
#注意只会删除redis里的数据,并不会删除原文件(filebeat收集的/tmp/test.log)的数据;
data_type => "list"
#指定redis的主机地址,默认值为localhost
host => "192.168.1.2"
#指定数据库的端口号,默认值为6379
port => 6379
#指定redis的桶编号,默认值为0号桶
db => 7
#指定redis的认证密码
password => "123.com.cn"
#指定从redis的哪个key获取数据
key => "filebeat-test-redis"
}
}
output {
stdout {}
}
EOF
6、input插件基于beats收集数据案例
###filebeat配置###
[root@localhost ~]# cat >> /hqtbj/hqtwww/filebeat_workspace/21-log-to-logstash.yml << EOF
filebeat.inputs:
- type: log
paths:
- /tmp/test.log
output.logstash:
#指定logstash监听的IP和端口
hosts: ["192.168.1.4:5044"]
EOF
###logstash配置###
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/06-beats-stdout.conf << EOF
input {
#监听的类型
beats {
#监听的本地端口
port => 5044
}
}
output {
stdout {}
}
EOF
7、output插件将数据落地到本地file案例
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/07-tcp-file.conf << EOF
input {
tcp {
port => 9999
}
}
output {
stdout {}
file {
#指定磁盘的落地位置
path => "/tmp/20221214.log"
}
}
EOF
8、output将数据发送到es案例
ES手动创建索引模版
【左侧菜单栏】–>【stack management】–>【索引管理】–>【索引模版】–>【创建模版】
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/08-tcp-es.conf << EOF
input {
tcp {
port => 9999
}
}
output {
stdout {}
elasticsearch {
#定义es集群的主机地址
hosts => ["10.8.0.2:9200","10.8.0.6:9200","10.8.0.9:9200"]
#定义索引名称
index => "hqt-application-pro-%{+YYYY.MM.dd}"
}
}
EOF
运行完这个案例之后就可以看到我们创建的索引应用的就是我们刚才手动创建的索引模版,主分片是3,副本分片是2;
生产环境建议10分片/2副本