• ELK安装、部署、调试(五)filebeat的安装与配置


    1.介绍

    logstash 也可以收集日志,但是数据量大时太消耗系统新能。而filebeat是轻量级的,占用系统资源极少。

    Filebeat 由两个主要组件组成:harvester 和 prospector。

    采集器 harvester 的主要职责是读取单个文件的内容。读取每个文件,并将内容发送到 the output。 每个文件启动一个 harvester,harvester 负责打开和关闭文件,这意味着在运行时文件描述符保持打开状态。如果文件在读取时被删除或重命名,Filebeat 将继续读取文件。

    查找器 prospector 的主要职责是管理 harvester 并找到所有要读取的文件来源。如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个 harvester。每个 prospector 都在自己的 Go 协程中运行。

    2.下载

    下载地址:www.elastic.co/downloads/beats/filebeat

    百度云elk

    3.安装

    1. tar -zxvf filebeat-7.9.3-linux-x86_64.tar.gz -C /usr/local
    2. cd /usr/local/
    3. mv filebeat-7.9.3-linux-x86_64 filebeat
    4. cd filebeat/
    5. [root@node1 filebeat]# ls -l
    6. fields.yml     filebeat      filebeat.reference.yml         filebeat.yml         kibana
    7. LICENSE.txt        module         modules.d      NOTICE.txt         README.md

    filebeat为应用程序
    cd /usr/local/filebeat/filebeat.yml 是配置文件
    modules.d的目录下放置的日志收集模板,实现了模块化的日志收集

    1. [root@node1 modules.d]# ls
    2. activemq.yml.disabled    coredns.yml.disabled        ibmmq.yml.disabled     microsoft.yml.disabled 
    3. okta.yml.disabled        squid.yml.disabled    apache.yml.disabled      crowdstrike.yml.disabled    icinga.yml.disabled    misp.yml.disabled       osquery.yml.disabled     suricata.yml.disabled
    4. auditd.yml.disabled      cylance.yml.disabled        iis.yml.disabled       mongodb.yml.disabled    
    5. panw.yml.disabled        system.yml.disabled   aws.yml.disabled         elasticsearch.yml.disabled  imperva.yml.disabled   mssql.yml.disabled      postgresql.yml.disabled  tomcat.yml.disabled
    6. azure.yml.disabled       envoyproxy.yml.disabled     infoblox.yml.disabled  mysql.yml.disabled      
    7. rabbitmq.yml.disabled    traefik.yml.disabled   barracuda.yml.disabled   f5.yml.disabled             iptables.yml.disabled  nats.yml.disabled        radware.yml.disabled     zeek.yml.disabled
    8. bluecoat.yml.disabled    fortinet.yml.disabled       juniper.yml.disabled   netflow.yml.disabled    
    9. redis.yml.disabled       zscaler.yml.disabled   cef.yml.disabled         googlecloud.yml.disabled    kafka.yml.disabled     netscout.yml.disabled     santa.yml.disabled
    10. checkpoint.yml.disabled  gsuite.yml.disabled         kibana.yml.disabled    nginx.yml.disabled      
    11. sonicwall.yml.disabled  cisco.yml.disabled       haproxy.yml.disabled        logstash.yml.disabled  o365.yml.disabled      
    12. sophos.yml.disabled

    4.配置

    配置filebeat.yml
    注意 以下使用“-” 为首字母的,要求前面不能使用tab做缩进,

    1. filebeat.inputs:   #定义日志输入的开始
    2. - type: log        
    3. #注意格式,收集日志类型为日志,还可以是redis,UDP,TCP,docker,syslog,stdin等
    4.   enabled: true                       #使用手动模式,如果false将使用modules.d目录下的模块方式
    5.   paths:                              #要收集的日志的路径
    6.    - /var/log/messages
    7.    - /var/log/secure
    8.  #如果日志较多,可以模糊的填写,如 - /data/nginx/logs/ngix_*.log
    9.  # - /var/log/*.log 的配置会获取/var/log下所有子目录中以.log结尾的日志,而不会查找/var/log/目录下的.log文件。
    10.   fields:
    11.    log_topic:osmessages        #osmessages是自己定义主体的名字
    12. name: "10.10.10.56"              #指定名字,不配置时默认使用主机名
    13. output.kafka:
    14.   eanbled: true
    15.   hosts: ["10.10.10.71:9092","10.10.10.72:9092","10.10.10.73:9092"]   #kafka集群的地址和端口号
    16.   version: 2.0.1                     #kafka的版本号
    17.   topic: '%{[fields][log_topic]}'    #也可以fields.log_topic的写法
    18.   partition.round_robin:             #采用轮询的方式
    19.   reachable_only: true
    20.   worker: 2
    21.   required_acks: 1                    #有1,2,3等可写,1最大限度保证
    22.   compression: gzip
    23.   max_message_bytes: 10000000
    24. logging.level: debug                #info,warming,error等可写,定义  日志级别
    25. 配置里还包含一些过滤条件,如行排除,行包含,文件排除等
    26. exclude_lines: ['^DBG']
    27. include_lines: ['^ERR', '^WARN']
    28. exclude_files: ['.gz$']

    以上配置使用了kafka作为filebeat的输出,

    配置

    1. # ============================== Filebeat modules ==============================
    2. filebeat.config.modules:
    3.   # Glob pattern for configuration loading
    4.   path: ${path.config}/modules.d/*.yml
    5.   # Set to true to enable config reloading
    6.   reload.enabled: false
    7.   # Period on which files under path should be checked for changes
    8.   #reload.period: 10s
    9. # ======================= Elasticsearch template setting =======================
    10. 文档中还有一些模块的配置,如上
    11. 由于我们在
    12. filebeat.inputs: 
    13. - type: log        
    14.   enabled: true      这里我们设置为了true,使用了手动配置的方式,屏蔽了快速模块,这里配置为false时,才使用模块配


    使用./filebeat test config 或者./filebeat -c filebeat.yml -configtest 对配置文件进行格式测试。检查启动filebeat

    1. more filebeat.yml
    2. nohup /usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml &

    测试
    tail -f nohup.out 查看收集的日志

    1.   "@timestamp": "2023-08-28T07:56:14.266Z",  时间戳
    2.   "@metadata": {
    3.     "beat": "filebeat",                       
    4.     "type": "_doc",
    5.     "version": "7.9.3"
    6.   },
    7.   "log": {                                   类型
    8.     "file": {
    9.       "path": "/var/log/secure"
    10.     },
    11.     "offset": 508431                         位置,偏移量
    12.   },
    13.   "message": "Aug 28 15:56:12 node1 sshd[31513]: pam_limits(sshd:session): invalid line 'End of file' -
    14. skipped",
    15.   "fields": {                                 自定义的域
    16.     "log_topic": "osmessages"
    17.   },
    18.   "input": {                                  类型
    19.     "type": "log"
    20.   },
    21.   "agent": {
    22.     "id": "a5a5cdf5-42f5-40a8-8c4c-068b76a2b22c",
    23.     "name": "10.10.10.56",
    24.     "type": "filebeat",
    25.     "version": "7.9.3",
    26.     "hostname": "node1",
    27.     "ephemeral_id": "826d8757-65f0-4838-b915-409eba0cd6bf"
    28.   },
    29.   "ecs": {
    30.     "version": "1.5.0"
    31.   },
    32.   "host": {
    33.     "name": "10.10.10.56"
    34.   }
    35. }

    我们看到,很多信息都是filebeat附带的一些信息。    我们可以通过配置参数的过滤掉一些信息。

    1. # ================================= Processors =================================
    2. processors:
    3. #  - add_host_metadata:
    4. #      when.not.contains.tags: forwarded
    5. #  - add_cloud_metadata: ~
    6. #  - add_docker_metadata: ~
    7. #  - add_kubernetes_metadata: ~
    8.   - drop_fields:
    9.       fields: ["host","input","offset","ecs","log","agent.id"]

    drop_fields:所定义的就是不需要在日志中显示的filebeat自带的一些信息。
    上面的配置信息agent.id ,因为agent下有很多个属性,仅过滤掉id这个属性

    1.  "agent": {
    2.     "id": "a5a5cdf5-42f5-40a8-8c4c-068b76a2b22c",
    3.     "name": "10.10.10.56",
    4.     "type": "filebeat",
    5.     "version": "7.9.3",
    6.     "hostname": "node1",
    7.     "ephemeral_id"

    这样配置后,将在日志文件中过滤掉 以上属性的内容,仅显示留下的内容。


    通过tail -f nohup.out查看本机产生的日志
    通过在kafka机器上用过消费来开传到kafka上的日志
    cd /usr/local/kafka/bin
    ./kafka-console-consumer.sh  --bootstrap-server 10.10.10.71:9092,10.10.10.72:9092,10.10.10.73:9092 --topic
    osmessages
     

  • 相关阅读:
    第十六章:构建n(5,7)阶素数幻方
    ajax 接口上传
    【c#】2022创建WEB API接口教程demo
    Jmeter-实战案例(随机上传文件,接口依赖调用)
    LeetCode 1173.即时食物配送
    VS2013任意一个项目配置Tiff环境
    SpringBoot 2.5.5整合轻量级的分布式日志标记追踪神器TLog
    我的世界Minecraft Java开服教程(Windows)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器资源包
    Spartan-6开发案例使用手册——嵌入式AD模块/接口基础测试(上)
    【web开发】1、flask入门和html开发
  • 原文地址:https://blog.csdn.net/ly4983/article/details/132582943