• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
学无止境
博客园   首页   新随笔   联系   订阅 订阅   管理

Filebeat入门

一、概述

Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。

以下是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。

 

二、Filebeat的简单配置

Filebeat的基本原理其实就是有一群prospector,每个prospector手下管着一批harvester,每个harvester负责监视一个日志文件,把变动的内容由spooler汇总之后交给Logstash或者Elasticsearch。如果想快速搭建一个可以工作的Filebeat,无非有三点:

1.说明要监视哪些文件

filebeat:
prospectors:
-
paths:
- "/var/log/lmz.log"

1、定义你的日志文件的路径(一个或多个)

对于大多数的基本filebeat配置,你可以定义一个单一探测器针对一个单一的路径,例如:

filebeat.prospectors:
- input_type: log
  paths:
    - /var/log/*.log

PS:若收取日志格式为json的log,请开启此配置

json.keys_under_root: true

在这个例子中,探测器会收集/var/log/*.log的所有匹配文件,这意味这filebeat会手机所有的/var/log下以.log结尾的文件,此处还支持Golang Glob支持的所有模式。

在预定义级别的子目录中获取所有文件,可以使用这个配置:/var/log/*/*.log,这会找到/var/log下所有子目录中所有的以.log结尾的文件。但它并不会找到/var/log文件夹下的以.log结尾的文件。现在它还不能递归的在所有子目录中获取所有的日志文件。

2.说明收集的日志发给谁

如果你设置输出到elasticsearch中,那么你需要在filebeat的配置文件中设置elasticsearch的IP地址与端口。

如果直接发送给Elasticsearch,可以设置如下:

output:
elasticsearch:
hosts: ["localhost:9200"]

如果需要发给Logstash,可以注释掉Elasticsearch的配置,然后设置Logstash如下:

output:
logstash:
hosts: ["localhost:5044"]

当然,也需要在Logstash的配置中指明要从该端口(5044)监听来自Filebeat的数据:

/etc/logstash/conf.d/beats-input.conf:
input {
beats {
port => 5044
}
}

这里的配置举例是把Filebeat、Logstash、Elasticsearch安装在了一台机器上,实际使用中肯定是分开部署的,需要根据实际情况修改配置文件中的IP地址及端口号。

3.让Elasticsearch知道如何处理每个日志事件。

在elasticsearch中加载索引模板#非必要,可直接进行第五步。filebeat会获取默认模板。

在Elasticsearch中,索引模板是用于定义字段应如何分析的设置和映射。

推荐的filebeat索引模板文件已经在filebeat的安装包中了,如果你允许默认的模板加载到配置文件filebeat.yml中,filebeat会在成功链接elasticsearch后自动加载这些模板。如果模板已经存在了,除非你配置了filebeat.yml,否则它不会被复写。

如果你不想自动加载索引模板,或者你想加载你自己的索引模板,你可以在filebeat的配置文件中改变模板的配置,如果你选择了关闭自动加载模板,你需要手动加载模板。更多的信息请看:

配置模板加载:只支持输出到elasticsearch

手动加载模板:需要输出到logstash时 #实测并不需要手动加载,或配置任何,一样可以输出到logstash

配置模板加载

默认上,filebeat自动加载推荐的模板文件,filebeat.template.json,如果禁用输出到elasticsearch,你可以配置filebeat.yml中的template.name和template.path选项:

output.elasticsearch:

  hosts: ["localhost:9200"]

  template.name: "filebeat"

  template.path: "filebeat.template.json"

  template.overwrite: false

默认上,如果索引里已经有这个模板,新的并不会覆盖旧的。若是想覆盖现有的模板,在配置文件中设置template.overwrite:ture。

若禁用自动加载模板,注释掉elasticsearch输出下模板的那一部分。

如果使用Logstash输出,则不支持自动加载模板的选项。

手工加载模板

如果你禁止了模板的自动加载,你需要运行接下来的命令来加载模板:

curl -XPUT 'http://localhost:9200/_template/filebeat' -d@/etc/filebeat/filebeat.template.json

这里的location:9200是elasticsearch监听的ip和端口

注:如果你已经使用filebeat输出索引数据到elasticsearch中,这些索引可能包含旧的文档,在你加载了索引模板后,你可以从filebeat-*中删除旧的文档,以强制kibana查看新的索引文档。

命令如下:

curl -XDELETE 'http://localhost:9200/filebeat-*'

默认的Elasticsearch需要的index template在安装Filebeat的时候已经提供,路径为/etc/filebeat/filebeat.template.json,可以使用如下命令装载该模板:

$ curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@/etc/filebeat/filebeat.template.json

当然,也不能忘了,每次修改完Filebeat的配置后,需要重启Filebeat才能让改动的配置生效。

 
posted on 2012-07-23 15:46  duanxz  阅读(1076)  评论(0)    收藏  举报
刷新页面返回顶部

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3