在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 =>
}
}
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中就可以建不同的索引文件