在ELK中因为logstash是在jvm上跑的,资源消耗比较大,对机器的要求比较高。而Filebeat是一个轻量级的logstash-forwarder,在服务器上安装后,Filebeat可以监控日志目录或者指定的日志文件,然后将这些信息到发送给logstarsh或直接发送给elasticsearch。当发送数据到Logstash或Elasticsearch时,Filebeat使用一个反压力敏感(backpressure-sensitive)
的协议来解释高负荷的数据量。当Logstash数据处理繁忙时,Filebeat放慢它的读取速度。一旦压力解除,Filebeat将恢复到原来的速度,继续传输数据。
Filebeat目前已经是Elastic Stack非常重要的组成部分了。
闲话少说,先来看一下filebeat怎么安装配置吧。
官网地址:https://www.elastic.co/guide/en/beats/filebeat/current/index.html
一、 安装流程
在linux中的安装相当简单,在此主要说一下windows中的安装和配置:
1. 下载软件
下载地址:https://www.elastic.co/downloads/beats/filebeat 选择相应的版本下载即可。
2. 下载后解压软件到C:/Program Files 并将文件夹更名为filebeat
3. 以管理员身份运行powershell
PS C:/Windows/system32> cd 'C:/Program Files/Filebeat/' PS C:/Program Files/Filebeat> ./install-service-filebeat.ps1
4. 安装服务后只需要在配置一下filebeat.yml,然后启动filebeat服务即可
二、配置Filebeat
下面是本人实际项目中一个配置:
filebeat.prospectors: - type: log enabled: true #一定要启用 paths: - D:/web/webapi/log/* #日志路径 document_type: "webapi" #指定类型 在elastic中可通过[type]识别 fields: tag: webapi #指定标签 在logstahs中可通过[fields][tag]识别 - type: log #一定不要省略前面的- 血的教训 enabled: true paths: - D:/web/webmanage/log/* document_type: "webmanage" fields: tag: webmanage - type: log enabled: true paths: - D:/web/webuser/Log/* document_type: "webuser" fields: tag: webuser #-------------------------- Elasticsearch output ------------------------------ output.elasticsearch: # Array of hosts to connect to. hosts: ["192.168.1.2:9200"] #指定ES的路径和端口即可 # Optional protocol and basic auth credentials. #protocol: "https" #username: "elastic" #可为ES配置验证信息 #password: "changeme" #----------------------------- Logstash output -------------------------------- output.logstash: # The Logstash hosts hosts: ["192.168.1.1:5044"] #指定Logstash的地址
以上配置的是将FileBeat读取的日志传输到Logstash,对应的LogStash中的配置如下:
input { beats { port => 5044 } } output { if [fields][tag] == "webapi" { elasticsearch { hosts => ["192.168.1.2:9200"] index => "webapi-%{+YYYY.MM.dd}" } } if [fields][tag] == "webmanage" { #stdout { codec => rubydebug } elasticsearch { hosts => ["192.168.1.2:9200"] index => "webmanage-%{+YYYY.MM.dd}" } } if [fields][tag] == "webuser" { elasticsearch { hosts => ["192.168.1.2:9200"] index => "webuser-%{+YYYY.MM.dd}" } } }
这样通过[fields][tag]标识不同的日志来源和类型,可以针对性的进行日志处理,在Elastic中就可以建不同的索引文件
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/2757.html