美文网首页
ELK + Filebeat

ELK + Filebeat

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2024-08-15 11:19 被阅读0次

    在如今这个微服务盛行的时代,各行各业都在打造自己的软件产品。动辄要求微服务、大数据、BI、AI,别管用不用的到,反正你得会这些,我打算做。你说就一个小的制造行业工厂,就一个开发,还兼职厂里的网络和修电脑,做什么啊?现有的能维护好就不错了。其实每个公司都有适合自己的框架,就拿前面说的日志系统ELK来说吧,对于传统的软件来说没必要啊。来个spring boot admin来看日志就挺好的,甚至你拿notepad直接查看log文件也是可以的。
    对于ELK的使用,就像上一节讲的,简单的流程是这样的:

    一般流程
    我们甚至可以直接在程序中引入logstash插件(我是不建议这样的,1是耦合度高,2是日志量大时,输入可能出问题),然后使用tcp输入:
    简化流程
    一般微服务架构下,尤其是多节点架构,日志文件较多且分散,为了方便查看,我们才使用elk呢。此时,日志流程是这样的:
    微服务流程
    但是官网不推荐logstash这样使用去收集日志,而是加入Filebeat来做收集工具。

    1. Filebeat简介和使用情形

    Filebeat:轻量型日志采集器。无论您是从安全设备、云、容器、主机还是 OT 进行数据收集,Filebeat 都将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。
    官网给了介绍,可以仔细读一下。我感觉这个说的挺好,干什么的,怎么配合其他组件干(甚至考做了管道过载的优化),干完怎么看效果。
    当我们加入Filebeat后,流程就变这样了:

    增强流程

    如果有丢失,logstash处理能力不够的话,我们可以加入kafka消息队列,做一下缓存,那就是这样了:


    kafka流程

    而按照官网的意思,若我们只是收集日志,不做其他处理,我们都不用加logstash管道流程,直接就成这样了:


    直接流程

    2. 安装Filebeat

    前面已经安装过ELK了,这里我们只是加入Filebeat,同样的docker compose安装。

    2.1 docker compose文件

    docker-compose-filebeat.yml

    version: '3.9'
    services:
        beats:
            image: 'docker.elastic.co/beats/filebeat:8.14.3'
            container_name: filebeat
            hostname: filebeat
            restart: always
            # 启动用户
            user: root
            environment: 
                - TZ=Asia/Shanghai
                - ES_JAVA_OPTS=-Xms512m -Xmx512m
            privileged: true
            volumes:
                - /etc/timezone:/etc/timezone
                - /etc/localtime:/etc/localtime:ro
                # 映射日志文件,要读取的
                - '/logs/test:/logs/test'
                # 映射filebeat配置文件
                - '/opt/soft/filebeat/config/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml'
                # 映射elasticsearch证书目录,连接时候用
                - '/opt/soft/elasticsearch/config/certs:/usr/share/filebeat/config/certs'
            networks:
                elastic: 
                    ipv4_address: 172.18.0.17
    networks:
        elastic: 
          external: true
          driver: bridge
    
    2.2 filebeat.yml配置文件

    这个filebeat.yml的配置文件其实和前面的metricbeat.yml配置文件差不多的。所有beats都应该差不多:docker安装需要的配置、数据输入、数据输出、连kibana初始化看板的、processors增强的(一般也用不到)、开启自身监控数据的。
    查看官网教程,里面很全。

    filebeat.config:
      modules:
        path: ${path.config}/modules.d/*.yml
        reload.enabled: false
    
    filebeat.autodiscover:
      providers:
        - type: docker
          hints.enabled: true
    
    # 输入日志文件,docker-compose文件中要把这个映射进容器 
    filebeat.inputs:
    - type: log
      paths:
        - /logs/test/test.log
        
    #name: "test-01-filebeat"
    #tags: ["test-01-server-log"]
    # 额外添加字段传递信息
    fields: {project: "test", server-id: "test-01"}
    
    processors:
    - add_host_metadata: ~
    
    # 连接kibana
    setup.kibana.host: "http://172.18.0.14:5601"
    #账号密码,如果不设置,会直接取output中elasticsearch的账号密码
    setup.kibana.username: "elastic"
    setup.kibana.password: "123456"
    # kibana启用ssl时
    #setup.kibana.ssl.enabled: true
    #setup.kibana.ssl.certificate_authorities: ["/etc/client/ca.pem"]
    #setup.kibana.ssl.certificate: "/etc/client/cert.pem"
    #setup.kibana.ssl.key: "/etc/client/cert.key
    
    # 启动kibana自带的展现filebeat数据的功能,这个开启了,那filebeat启动时,kibana必须运行,不然启动不了
    setup.dashboards.enabled: true
    
    # 禁用 官方模板 的自动加载(加载时名字也是默认的),因为模板的名字需要自定义,为什么要自定义模板名字,因为自定义索引名字时要求的
    setup.template.enabled: false
    # 自定义模板名称    这个和自定义索引名配合使用的
    setup.template.name: "%{[fields.server-id]}-filebeat"
    setup.template.pattern: "%{[fields.server-id]}-filebeat-*"
    # 覆盖现有模板
    setup.template.overwrite: true
    # 索引生命周期管理ilm功能默认开启,开启的情况下索引名称只能为filebeat-*, 通过setup.ilm.enabled: false进行关闭
    setup.ilm.enabled: false
    
    
    # 输出到elasticsearch
    output.elasticsearch:
      hosts: ["https://172.18.0.11:9200"]
      # 自定义索引名称,配合上面setup一块使用
      index: "%{[fields.server-id]}-filebeat-%{+yyyy.MM.dd}" 
      username: "elastic"
      password: "123456"
      ssl: 
        certificate_authorities: "config/certs/ca/ca.crt"
     
    # 输出到logstash 
    #output.logstash:
    #  hosts: ["172.18.0.16:5044"]
    
    # 开启自身监控,发送数据到elasticsearch,因为配置了输出到elasticsearch,所以这里就配这几个
    monitoring:
      enabled: true
      elasticsearch:
        username: "elastic"
        password: "123456"
    
    2.3 启动filebeat,输出到elasticsearch
    docker compose -f docker-compose-filebeat.yml up -d
    

    我们在kibana看一下情况


    被监控到
    情况

    可以看到,被监控到了。我们看一下索引:


    索引
    索引也有了,我们创建一个数据视图就可以在discovery中查看了:
    image.png
    可以看到我们在配置文件中加入的2个字段也有了,在fields底下。
    2.4 启动filebeat,输出到logstash

    这个就需要注意几点了:

    • logstash的pipeline配置中,input输入要改成beats,端口一般 5044
    • logstash的pipeline配置中,output输出,elasticsearch索引可以根据filebeat输出的标志来配置
    • logstash的pipeline配置中,filter过滤中都先别用,搞懂以后自己按需求加,不然可能filebeat传给logstash报错
    • logstash的docker compose 文件不用映射日志文件目录了,不用读取了
    • filebeat 配置中,输出改成 logstash
    • filebeat 配置中,因为不需要自定义 elasticsearch索引了,一些配置可以精简
    • filebeat 配置中,不需要kibana了

    logstash配置前面已经做了,里面包含了这些,filebeat配置上面也有了,稍精简一下:
    filebeat.yml配置文件 -- 输出到logstash:

    filebeat.config:
      modules:
        path: ${path.config}/modules.d/*.yml
        reload.enabled: false
    
    filebeat.autodiscover:
      providers:
        - type: docker
          hints.enabled: true
    
    # 输入日志文件,docker-compose文件中要把这个映射进容器 
    filebeat.inputs:
    - type: log
      paths:
        - /logs/test/test.log
        
    #name: "test-01-filebeat"
    # 官方文档建议把日志来源标志放到这里,其实用下面的fields添加字段也行
    tags: ["test-01-server"]
    # 额外添加字段传递信息
    fields: {project: "test", server-id: "test-01"}
    
    processors:
    - add_host_metadata: ~
     
    # 输出到logstash 
    output.logstash:
      hosts: ["172.18.0.16:5044"]
    
    # 开启自身监控,发送数据到elasticsearch,
    # 建议监控用metricbeat来做,这个就不用了,setup.template(ilm/dashboard)配置就都不用了
    monitoring:
      enabled: true
      elasticsearch:
        hosts: ["https://172.18.0.11:9200"]
        username: "elastic"
        password: "123456"
        ssl: 
          certificate_authorities: "config/certs/ca/ca.crt"
    

    启动 filebeat,过2分钟,日志文件写几条日志,看kibana里面已经有了:


    filebeat索引

    创建数据视图看一下内容:


    索引视图
    可以看到内容,还有我们加的tags。

    相关文章

      网友评论

          本文标题:ELK + Filebeat

          本文链接:https://www.haomeiwen.com/subject/qffskjtx.html