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

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

460次阅读
没有评论

共计 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、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7963051
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...