
当我们在对系统日志进行处理的时候,我们需要结合成本考虑方案,前期如果使用 Logstash 进行日志收集的话会耗费较多的机器性能,我们这里选择优化一下日志的采集。简单介绍一下即将出场的家伙: filebeat
首先 filebeat 是 Beats 中的一员。 Beats 在是一个轻量级日志采集器,其实 Beats 家族有6个成员,早期的 ELK 架构中使用 Logstash 收集、解析日志,但是 Logstash 对 内存 、 cpu 、 io 等资源消耗比较高。相比 Logstash , Beats 所占系统的 CPU 和内存几乎可以忽略不计。
Beats 有目前七个工具:
Functionbeat 能收集、传送并监测来云服务的相关数据Packetbeat 网络数据(收集网络流量数据)Metricbeat:指标(收集系统、进程和文件系统级别的CPU和内存使用情况等数据)Filebeat:日志文件(收集文件数据)Winlogbeat:windows事件日志(收集Windows事件日志数据)Auditbeat:审计数据(收集审计日志)Heartbeat:运行时间监控(收集系统运行时的数据)wget https://mirrors.huaweicloud.com/filebeat/7.6.0/filebeat-7.6.0-linux-x86_64.tar.gz
tar -zxvf filebeat-7.6.0-linux-x86_64.tar.gzfilebeat.inputs:
# 指定文件的输入类型log
- type: log
enabled: true
# 指定要监控的日志,可以指定具体得文件或者目录
paths:
- /var/log/test-filebeat.log
# 输出方式 可以以文件输出
output.file:
path: "/tmp"
filename: "filebeat.txt" echo test >> /var/log/test-filebeat.log查看到输出文件已经有变化了

output.logstash:
hosts: ["192.168.179.124:5044"]input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["192.168.179.124:9200"] #elasticsearch服务器地址
user => "elastic"
password => "${ES_PWD}"
index => "logstash-filebeat-%{+YYYY.MM.dd}" #索引名称
}
}echo hello >> /var/log/test-filebeat.log
output.redis:
hosts: ["192.168.179.124:6379"]
key: "test-filebeat"
db: 0
timeout: 5redis 日志

logstash-filebeat.conf 配置 logstashinput {
redis {
data_type => "list"
host => "192.168.179.124"
port => "6379"
db => 0 # 指定库
key => "test-filebeat" # 配置redis 键
}
}
output {
elasticsearch {
hosts => ["192.168.179.124:9200"] #elasticsearch服务器地址
user => "elastic"
password => "${ES_PWD}"
index => "logstash-test-%{+YYYY.MM.dd}" #索引名称
}
}logstash./bin/logstash -f ./conf.d/logstash-filebeat.confecho test >> /var/log/test-filebeat.loglogstash 会一直从 redis 中获取数据,获取完成会删除掉 redis 的键,我们创建 kibana 的索引模式来查看一下收取的数据

经过这篇文章的理解,我们应该更好的理解 Logstash, 他可以输出地方很多,可以直接输出到 队列、ES、文件等等,非常轻量和灵活