阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Filebeat的架构分析、配置解释与示例

231次阅读
没有评论

共计 4775 个字符,预计需要花费 12 分钟才能阅读完成。

写在前边的话

       在看 filebeat 之前我们先来看下 Beats,Beats 平台是 Elastic.co 从 packetbeat 发展出来的数据收集器系统。beat 收集器可以直接写入 Elasticsearch,也可以传输给 Logstash。其中抽象出来的 libbeat,提供了统一的数据发送方法,输入配置解析,日志记录框架等功能。也就是说,所有的 beat 工具,在配置上,除了 input 以外,在 output、filter、shipper、logging、run-options 上的配置规则都是完全一致的
       而这里的 filebeat 就是 beats 的一员,目前 beat 可以发送数据给 Elasticsearch,Logstash,File,Console 四个目的地址。filebeat 是基于原先 logstash-forwarder 的源码改造出来的。换句话说:filebeat 就是新版的 logstash-forwarder,也会是 ELK Stack 在 shipper 端的第一选择。

Filebeat 的架构设计


Filebeat 的架构分析、配置解释与示例
当我们安装完 filebeat 之后,我们可以在 filebeat 的安装目录下看到两个文件

  • filebeat.template.json(输出的文件格式,在 filebeat 的 template 中指定,当服务启动时,会被加载)
  • filebeat.yml(所有的配置都在该文件下进行)

整体架构理解:

        上边我们也说了 filebeat 是用来收集日志的,那么在 filebeat.yml 中会配置指定的监听文件,也就是上图中的一个个 log,这个 log 的目录是在 prospectors 中设置,在看配置文件的时候便可以很明白的看出来,对于 prospectors 定位每个日志文件,Filebeat 启动 harvester。每个 harvester 读取新的内容一个日志文件,新的日志数据发送到 spooler(后台处理程序),它汇集的事件和聚合数据发送到你已经配置了 Filebeat 输出。

环境准备


要开始使用自己的 Filebeat 设置,安装和配置这些相关产品:

  • Elasticsearch 存储和索引数据。
  • Kibana 为 UI。
  • Logstash(可选)将数据插入到 Elasticsearch。

具体配置可参考:http://www.linuxidc.com/Linux/2016-10/135849.htm

部署 filebeat


deb:

curl -L -O https://download.elastic.co/beats/filebeat/filebeat_1.3.1_amd64.deb
sudo dpkg -i filebeat_1.3.1_amd64.deb

rpm:

curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.0.1-x86_64.rpm
sudo rpm -vi filebeat-1.0.1-x86_64.rpm

mac:

curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.3.1-darwin.tgz
tar xzvf filebeat-1.3.1-darwin.tgz

win:

  • 下载 windows zip 文件 点击下载.
  • 解压文件到 C:\Program Files.
  • 重命名为 Filebeat.
  • 打开 PowerShell 提示符作为管理员(右键单击 PowerShell 的图标,并选择以管理员身份运行)。如果您运行的是 Windows XP,则可能需要下载并安装 PowerShell
  • 运行以下命令来安装 Filebeat 作为 Windows 服务

    cd‘C:\Program Files\Filebeat’
    C:\Program Files\Filebeat> .\install-service-filebeat.ps1

在启动 filebeat 服务之前,需要先修改配置文件,接下来我们看下配置文件

配置解析


上边我么也说了 FileBeat 的四种输出方式为输出到 Elasticsearch,logstash,file 和 console,下面我们具体看下示例
PS:

  • 这里说的是需要修改的配置文件,没有提的就是不需要修改
  • 每次修改完配置文件都需要重启 filebeat 服务
  • 这里不要追究时间的问题,小主是测试,主要是为了方便记录

这里主要是自定义监听文件的路劲,我设置的是 /opt/elk/log/*.log
然后在 filebeat.yml 中的 prospectors 路径设置如下 (该配置为以下四种方式通用)

paths:
– /opt/elk/log/*.log

1:output of Elasticsearch

filebeat.yml 中 output 的配置将除了 es 之外注释掉

output
  elasticsearch:
    hosts: ["192.168.197.128:9200"]  #es 的 ip 地址和端口,如果有多个,中间用逗号分隔 
    worker: 1             # 对应 es 的个数 
    index: "filebeat"     # 索引根名称 
    template:
      name: "filebeat"    # 模板名字和对应的 json 文件 
      path: "filebeat.template.json"
    max_retries: 3         # 发送到特定 logstash 的最大尝试次数。如果达到该次数仍不成功,事件将被丢弃。默认是 3,值 0 表示禁用重试。值小于 0 将无限重试知道事件已经发布。

    bulk_max_size: 20000   # 单个 elasticsearch 批量 API 索引请求的最大事件数。默认是 50
    timeout: 90          #elasticsearch 请求超时事件。默认 90 秒 
    flush_interval: 5    # 新事件两个批量 API 索引请求之间需要等待的秒数。如果 bulk_max_size 在该值之前到达,额外的批量索引请求生效。

往 log 文件中追加日志

echo“123456789”>> test1.log

这个时候我们看一下效果:
Filebeat 的架构分析、配置解释与示例

2:output of logstash

filebeat.yml 中 output 的配置将除了 logstash 之外注释掉

output:
    logstash:
        hosts: ["192.168.197.130:5044"]
        worker: 2
        loadbalance: true
        index: filebeat

这里  worker  的含义,是 beat 连到每个 host 的线程数。在  loadbalance  开启的情况下,意味着有 4 个 worker 轮训发送数据 

则对应的 logstash 配置,编写一个配置文件

sudo vim filebeat_logstash_out.conf

beat 写入 Logstash 时,会配合 Logstash-1.5 后新增的 metadata 特性。将 beat 名和 type 名 记录在 metadata 里。所以对应的 Logstash 配置应该是这样:

input {
    beats {port => 5044
    }
}
output {
    elasticsearch {hosts => ["http://192.168.197.128:9200"]
        index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
        document_type => "%{[@metadata][type]}"
    }
    stdout{codec=>rubydebug}
}

启动 conf

bin/logstash -f config/filebeat_logstash_out.conf

往 log 文件中追加日志

echo“2222333344445555”>> test1.log

前往查看效果:
Filebeat 的架构分析、配置解释与示例

Filebeat 的架构分析、配置解释与示例

3:output of File

filebeat.yml 中 output 的配置将除了 file 之外注释掉

output:file:
    path: "/opt/elk/log/filebeat_output_file"
    filename: filebeat
    rotate_every_kb: 10000
    number_of_files: 7

往 log 文件中追加日志:

echo“this is filebeat output of file”>> test1.log

查看效果:
Filebeat 的架构分析、配置解释与示例

4:output of Console

filebeat.yml 中 output 的配置将除了 cosnsole 之外注释掉

output:console:
    pretty: true

重启启动服务:

sudo filebeat -e -c /etc/filebeat/filebeat.yml

往 log 文件中追加日志:

echo“this is filebeat output of console”>> test1.log

前往服务启动窗口查看效果:
Filebeat 的架构分析、配置解释与示例

ELK+Filebeat 的 Demo


1:在 /opt/elk/log 目录下有三个文件分别是 test1.log,test2.log,test3.log**

2:通过 Python 脚本往三个文件中追加内容,内容格式如下:

name age address company
aa 23 beijing alibaba

Python 的脚本内容如下:

#-*-coding:utf-8-*-

name_list = ['aa','bb','cc','dd','ee']
addr_list = ['beijing','shanghai','guangzhou']
company_list =['baidu','tengxun','alibb']

import random
import time

def get_name():
    return name_list[random.randint(0,4)]

def get_age():
    return random.randint(20,25)

def get_addr():
    return addr_list[random.randint(0,2)]

def get_comp():
    return company_list[random.randint(0,2)]

if __name__=="__main__":
    while True:
        print("%s %s %s %s"%(get_name(),get_age(),get_addr(),get_comp()))
        str_line = get_name()+""+str(get_age())+" "+get_addr()+" "+get_comp()
        import os
        os.system("echo %s >> test1.log" % str_line)
        time.sleep(1)

3:filebeat 的配置文件使用 output=logstash

filebeat.yml

output:
    logstash:
        hosts: ["192.168.197.130:5044"]
        worker: 2
        loadbalance: true
        index: filebeat

4:filebeat_logstash_out.conf

input {
    beats {port => 5044
    }
}

filter{if [type] == 'log'{
    grok{
        match=>{"message"=>"%{WORD:username} %{WORD:age} %{WORD:address} %{WORD:company}"        
            }
    }
  }
}

output {
    elasticsearch {hosts => ["http://192.168.197.128:9200"]
        index => "%{[@metadata][beat]}-%{+YYYY.MM}"
        document_type => "%{[@metadata][type]}"
    }
    stdout{codec=>rubydebug}
}

5:启动服务

  • 启动 python 脚本
  • 启动 conf 配置文件

6:web 查看结果

Filebeat 的架构分析、配置解释与示例

Filebeat 的架构分析、配置解释与示例


END 

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-10/135850.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4775字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中