• Filebeat 快速开始


    Filebeat可以做什么

    条目
    filebeat
    编写语言 GO
    是否支持多输出 支持
    是否支持多输入 支持
    是否支持修改日志内容 支持
    是否会丢数据 不会
    对多行文件的合并 支持
    对多层目录的模糊匹配 支持
    安装配置 简单
    内存占用 与队列相关

    filebeat安装

    系统版本:Centos7.2

    filebeat版本:5.5.1。

    wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.1-x86_64.rpm

    安装命令

    rpm -Uvh filebeat-5.5.1-x86_64.rpm

    配置文件路径

    /etc/filebeat/filebeat.yml

    日志文件路径

    /var/log/filebeat

    注意 每次新启动都会生成一个新的filebeat,上次启动的会被mv为filebeat.1

    启动命令

    systemctl restart filebeat

    配置文件模板

    注意!文件格式为yml,对格式(缩进必须使用空格,注意不要遗漏“-”)有严格要求。

    #=========================== Filebeat prospectors 文件探测器 =============================
    filebeat.prospectors:  #文件探测器
    
    - input_type: log  #探测类型,日志文件
      paths:            #路径
        - /data/w/www/*/logs/request.log  #注意,通配符*的存在使得相同目录结构的工程日志都会被收集到。
      #json.keys_under_root: true 若收取日志格式为json的log,请开启此配置
      document_type: request                #日志类型,也就是elastic索引的type,请见文章随后详细解释1
      fields:
        topic: log_common                   #增加fields.topic:"application_log"字段,用于kafka的多topic配置。
    
    - input_type: log 
      paths: 
        - /data/w/www/*/logs/dubbo-access-consumer.log 
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}' #对于多行的的日志处理,请见文章随后的详细解释2
      multiline.negate: true
      multiline.match: after
      document_type: dubbo_consumer 
        topic: application_log  
      
    
    #----------------------------- kafka output --------------------------------
    output.kafka:  #输出到kafka
      hosts: ["kafka4.dp.data.cn1.wormpex.com:9092", "kafka5.dp.data.cn1.wormpex.com:9092", "kafka6.dp.data.cn1.wormpex.com:9092"] #kafka-broker地址
      topic: '%{[fields.topic]}' #输出到哪个topic(就是日志探测哪里定义的fields.topic,利用变量自动发送到不同topic)
      partition.round_robin:
        reachable_only: false
      required_acks: 1
      compression: gzip
      max_message_bytes: 100000000 #单条日志大小不超过10MB(笔者公司日志出现过单条好几MB的情况。。。)
    #----------------------------- Logstash output --------------------------------
    #output.logstash:
    #  # The Logstash hosts
    #  hosts: ["logstash1.ops.sys.cn1.wormpex.com:5044"] #logstash需要开启input beta插件,启动监听5044端口

    注解:

    注解1:fields.topic

      定义了这种类型的日志将要发到哪个topic里面,在kafka配置中的topic作为变量使用。

    注解2:multiline.pattern

      公司有java工程做web服务器的同学都知道,在我们生产中,java经常会在日志中打印堆栈信息,类似:

    2018-04-17 15:12:25.185 IndexNotFoundException[no such index]
        at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver$WildcardExpressionResolver.resolve(IndexNameExpressionResolver.java:566)
        at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:133)
        at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:77)
        at org.elasticsearch.action.admin.indices.delete.TransportDeleteIndexAction.checkBlock(TransportDeleteIndexAction.java:75)
    若直接按行收集的话,在kibana里展示没有上下文,令人无法观看。
    此配置的功能就是把堆栈信息合并到带有日期的开头的日志中,并作为一条发送出去,这样在kibana里展示就清晰可见了。

    有问题请留言,谢谢大家。
  • 相关阅读:
    多线程
    关于并发和并行
    文件系统
    java.util.Arrays类
    程序管理与SElinux
    用户和用户组管理总结
    useradd和adduser
    打印可见字符
    cmd中控制某个命令执行多少次
    keras模块之-优化器(optimizers)--笔记
  • 原文地址:https://www.cnblogs.com/kerwinC/p/8866471.html
Copyright © 2020-2023  润新知