前面已经了解过Filebeat收集日志及简单的过滤方法,但是Filebeat的功能相对比较弱,在对日志进行更高级的处理时会力不从心,这时就可以引入Logstatsh来对日志进行更高及的处理,来满足对日志进行更详细分析的要求。一般情况下公司使用的架构是
Filebeat(采集并进行基础过滤和加工)--->Kafka或Redis等中间件(如果数据量巨大)--->Logstatsh(对日志进行更高级的处理)--->ES(存储)--->Kibana(对数据查询,制作更详细的展示图对想要查看的内容进行展示)
1.Logstash拉取Redis数据
Logstash消费Redis
ini
root@ubuntu2204test99:~/elkf/logstash/pipeline# cat logstash.conf
input {
redis {
# redis key的类型
data_type => "list"
# 指定数据库编号
db => 3
# 指定数据库IP
host => "192.168.1.47"
# 指定端口号
port => "6379"
# 身份验证
password => "123456"
# redis存储数据的key名
key => "filebeat-log"
}
}
output {
stdout {
}
}
2. Filebeat输出到Logstash
2.1 Logstatsh配置
ruby
# Logstash配置
root@ubuntu2204test99:~/elkf/logstash/pipeline# cat logstash.conf
input {
beats {
port => 5044
}
}
output {
stdout {
}
}
2.2 Filebeat设置
makefile
# Filebeat配置
output.logstash:
hosts: ["127.0.0.1:5044"]
3.Logstash输出到Redis
ini
# 使用nc命令测试,输入选择tcp信息输入
root@ubuntu2204test99:~/elkf/logstash/pipeline# cat logstash.conf
input {
tcp {
port => 9999
}
}
output {
stdout {}
redis {
# 指定redis地址
host => "192.168.1.47"
# 指定redis端口号
prot => "6379"
# 指定redisdb
db => 8
# 指定redis密码
password => "123456"
# 写入数据的类型
data_type => "list"
# 写入到那个key
key => "redis-logstash"
}
}
# 使用nc测试
echo "123456" |nc 192.168.1.99 9999
# 查看redis
SELECT 8
KEYS *
LRANGE redis-logstash 0 -1
4.Logstash输出到File
ruby
root@ubuntu2204test99:~/elkf/logstash/pipeline# cat logstash.conf
input {
tcp {
port => 9999
}
}
output {
stdout {}
file {
path => "/tmp/file-logstash.log"
}
}
# 使用nc测试
echo "88888" |nc 192.168.1.99 9999
7.Logstash输出到ES
ini
root@ubuntu2204test99:~/elkf/logstash/pipeline# cat logstash.conf
input {
tcp {
port => 9999
}
}
output {
stdout {}
elasticsearch {
hosts => ["10.10.128.15:9200"]
user => "elastic"
password => "ELK@1188."
index => "cn-crm-138-%{+yyyy.MM.dd}"
}
}
# 使用nc测试
echo "88888" |nc 192.168.1.99 9999