转:filebeat+logstash 日志收集
1. 概述
web服务产生的日志文件,需要进行日志收集并进行可视化展示,一般使用filebeat和logstash组合。
2. 组件
(1)filebeat
Filebeat是用于转发和采集日志数据的轻量级服务。能监视指定的日志文件或位置,收集日志事件,并将它们转发到Logstash或elasticsearch。
(2)logstash
logstash具有实时收集日志功能,可以动态统一来自不同来源的数据,任何类型的事件都可以通过各种各样的输入、过滤功能和输出插件来丰富和转换。是一个重量级的服务,很占用内存,会影响到部署到本机器上的服务。
(3)选型
如果对于日志不需要进行过滤分析的,可以直接使用filebeat。
如果需要对日志进行过滤分析, 可以使用filebeat+Logstash最合适,如果单独使用Logstash,多台机都需部署Logstash,每台机消耗资源大,filebeat+Logstash相结合,每台机部署filebeat进行数据采集, 一台机部署Logstash作为中心进行接收数据处理以及存储到不同的地方。
如果需要对日志进行过滤分析, 可以使用filebeat+Logstash最合适,如果单独使用Logstash,多台机都需部署Logstash,每台机消耗资源大,filebeat+Logstash相结合,每台机部署filebeat进行数据采集, 一台机部署Logstash作为中心进行接收数据处理以及存储到不同的地方。
3. 单点部署
(1)配置filebeat.yml文件
filebeat.prospectors: # 输入设置 - input_type: log paths: # 指定日志文件位置,可以使用正则方式,也可以指定多个路径的日志 - /mnt/log/log.* # 输出设置 output.logstash: # logstsh的ip地址 hosts: ["127.0.0.1:5044"] loadbalance: true index: filebeat
(2)配置logstash.conf文件
input { # 接收filebeat读取的数据 beats { port => 5044 codec => "json" } } output { # 输出到es(ElasticSearch) elasticsearch { hosts => ["127.0.0.1:9200"] index => "test" document_type => "log" manage_template => false } }
(3)配置logstash.yml文件
http.host: "0.0.0.0" path.config: /usr/share/logstash/pipeline xpack.monitoring.enabled: false
(4)创建容器
logstash
sudo docker run \ --restart always \ --name logstash \ -itd \ -p 5044:5044 \ -p 9600:9600 \ -v /path/logstash/pipeline/:/usr/share/logstash/pipeline/ \ -v /path/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \ elastic/logstash
filebeat
sudo docker run \ --restart always \ --name filebeat \ -itd \ -v /path/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \ -v /path/mylog:/data \ elastic/filebeat
4. 多点部署
(1)配置filebeat.ymlfilebeat.prospectors: # 日志源1 - input_type: log paths: - /data/video/log.* tags: ["log1"] # 后面logstash用于区别哪个日志来源写入不同的位置 # 日志源2 - input_type: log paths: - /data/search/*.log tags: ["log2"] # 后面logstash用于区别哪个日志来源写入不同的位置 # 输出位置 output.logstash: # The Logstash hosts hosts: ["127.0.0.1:5044"] loadbalance: true index: filebeat
(2)配置logstash.conf文件
input { # 接收filebeat读取的数据 beats { port => 5044 codec => "json" } } # 不同的日志输出到不同的位置 output { if "log1" in [tags] { elasticsearch{ hosts => ["127.0.0.1:9200"] index => "test_logstash_log1" document_type => "log" } } if "log2" in [tags] { elasticsearch{ hosts => ["127.0.0.1:9200"] index => "test_logstash_log2" document_type => "log" } } }
链接:https://www.jianshu.com/p/7aa55172c3e2
来源:简书