zoukankan      html  css  js  c++  java
  • 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才能让改动的配置生效。

     
    查看全文
  • 相关阅读:
    [转]xshell实现端口转发
    Windows下gvim配置
    Linux环境下段错误的产生原因及调试方法小结
    elasticsearch的服务器响应异常及应对策略
    scp不可用:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
    windows下python安装pyquery
    python实现简单爬虫功能
    关于Elasticsearch单个索引文档最大数量问题
    pthread_mutex_lock
    一道模拟题:改进的Joseph环
  • 原文地址:https://www.cnblogs.com/duanxz/p/2605075.html
  • 最新文章
  • JVM Object Query Language (OQL) 查询语言
    微信公众号
    微信小程序
    微信小程序
    微信小程序
    js
    伪代码
    ejs
    es6
    node
  • 热门文章
  • node
    【转】Linux基础与Linux下C语言编程基础
    shell脚本用crontab执行和手动执行结果不一致
    [转]shell脚本每行的执行顺序是怎样
    sort命令的使用,结合uniq, awk等
    【转】Linux防火墙(iptables)之黑名单
    [转]使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化
    xshell tunnel的使用
    xshell下配置ssh tunnel实现proxy (port forward)
    Nginx配置基于多域名、端口、IP的虚拟主机
Copyright © 2011-2022 走看看