ELFK-Filebeta 日志收集

1.Filebeta介绍

Filebeat是一个开源的日志收集器,它能够收集并解析各种日志数据。Filebeat在系统日志、Web服务器日志、应用程序日志等方面有着广泛的应用。Filebeat具有高可用性、可扩展性、高效性等特点,能够满足大规模的日志收集需求。

1.1 特点

Filebeat的主要特点包括:

  1. 轻量级:Filebeat是一个轻量级的代理,对系统资源的消耗非常低,设计用于高性能和低延迟,可以在各种环境中运行,包括服务器、容器和虚拟机。
  2. 多源收集:Filebeat支持从各种来源收集数据,包括日志文件、系统日志、Docker容器日志、Windows事件日志等。它具有多个输入模块,可以轻松配置用于不同数据源的数据收集。
  3. 模块化:Filebeat采用模块化的方式组织配置,每个输入类型都可以作为一个模块,易于扩展和配置。这使得添加新的数据源和日志格式变得更加简单。
  4. 自动发现:Filebeat支持自动发现服务,可以在容器化环境中自动识别新的容器和服务,并开始收集其日志数据。
  5. 可视化:Filebeat可以解析多种常见的日志格式,简化用户操作。它还内置多个模块(如auditd、Apache、NGINX、System、MySQL等),将常见日志格式的收集、解析和可视化简化成了一个单独命令。
  6. 容器应用日志收集:Filebeat支持容器应用的日志收集,并且能通过libbeat的autodiscover特性检测新加入的容器并使用对应的模块(module)或输入。

1.2 原理

Filebeat的工作流程如下:

  1. 启动Filebeat时,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件。
  2. 对于探测器找出的每一个日志文件,Filebeat都会启动一个收割进程(harvester)。
  3. 每个收割进程会读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler)。
  4. 处理程序会聚集这些事件,最后Filebeat会发送聚集的数据到你指定的地点。

2.Filebeta基本使用

2.1 Filebeta安装

filebeta的安装比较简单,直接官网下载安装包,直接解压到相对应的目录,然后通过命令启动

#windwos 启动命令  
filebeat -e -c D:\work\filebeat\filebeat.yml
#linux启动命令
sudo service filebeat start

3.Filebeta 配置

3.1 收集日志输出到kafka配置

#日志收集配置
filebeat.inputs:
#收集类型,可以是log,kafka,redis,tcp,udp,Http endpoint等等,每个类型配置并不一样,更多可以参考官网
- type: log
  #收集项唯一id,自定义,收集网关服务日志
  id: gateway-server-id
  #开启收集配置
  enabled: true
  #收集日志文件路径
  paths:
    - D:\work\logs\gatway-server\*.log
  #自定义收集日志标签字段,在下面output可以根据这个配置动态配置
  fields:
    log-topic: gateway-server-log
  #指定多行模式下的匹配模式。当日志以多行形式出现时,例如在错误日志中,每行可能是单独的错误消息或异常报告,
  #multiline.pattern配置项可以帮助Filebeat将这些多行日志组合成一个完整的消息进行发送。
  multiline:
    #正则表达式 匹配日期时间格式的行首
    pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}'
    #否要取反匹配结果
    negate: false
    #指定要在哪个位置进行匹配,可选值如下
    #after: 将当前行与下一行组合成一个完整的消息。当前行后面的所有行都将与下一行组合在一起,直到遇到一个不符合指定模式的行。
    #before: 将当前行与上一行组合成一个完整的消息。当前行前面的所有行都将与上一行组合在一起,直到遇到一个不符合指定模式的行。
    #between: 将当前行与前一行和下一行组合成一个完整的消息。当前行之前的所有行和当前行之后的所有行都将与当前行组合在一起,直到遇到一个不符合指定模式的行。
    match: after
  #在Filebeat中,每个文件都有一个唯一的inode,它是一个指向文件系统的索引节点。通过使用file_identity.inode_marker.path配置项,
  #Filebeat可以在指定的路径下创建一个标记文件,用于记录文件的inode信息。这个标记文件可以帮助Filebeat识别文件的唯一性,以便在文件发生变化时能够重新读取文件并发送新的数据
  file_identity: 
    inode_marker: 
    path: /logs/.filebeat-marker
  #配置排除需要收集日志的标识,包含此标识的日志不收集
  exclude_lines: ['^DBG']
  #配置收集日志标识,仅收集包含此配置标识的日志
  include_lines: ['^ERR', '^WARN']
- type: log
  id: auth-server-id
  enabled: true
  paths:
    #收集授权服务日志
    - D:\work\logs\auth-server\*.log
  fields:
    log-topic: auth-server-log
  multiline:
    pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}'
    negate: false
    match: after
- type: log
  id: baseWeb-id
  enabled: true
  paths:
    #收集后台管理服务日志
    - D:\work\logs\baseWeb\*.log
  fields:
    log-topic: baseWeb-log
  multiline:
    pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}'
    negate: false
    match: after
#日志输出配置
output.kafka:            
  #开启kafka模块  
  enabled: true       
  #填写kafka服务器地址
  hosts: ["192.168.31.190:9092"]
  #填写kafka的topic(主题),自定义的,这里根据上面配置fields.log-topic动态配置topic,不同服务的日志输出到不同的topic
  topic: "%{[fields.log-topic]}"

3.2 收集日志输出到es配置

以下是Filebeat的output.elasticsearch的完整配置示例:

output:
 elasticsearch:
  hosts: ["localhost:9200"]
  username: "your_username"
  password: "your_password"
  index: "myindex"
  doc_type: "mytype"
  ignore_failure: true
  manage_template: true
  mode: "push"

在这个配置示例中,我们使用了以下参数:

  • hosts:Elasticsearch的主机地址和端口号。这里我们指定了本地主机(localhost)和默认的Elasticsearch端口(9200)。
  • usernamepassword:用于身份验证的凭据。如果需要身份验证,可以提供这些字段的值。
  • index:要将日志发送到的Elasticsearch索引名称。在这个例子中,我们使用"myindex"作为索引名称。
  • doc_type:要发送到Elasticsearch的文档类型。在Elasticsearch 7.x之后,索引和类型合并为一个概念,因此这个字段不再需要。如果你使用的是早期版本的Elasticsearch,可以指定一个类型名称。
  • ignore_failure:如果设置为true,Filebeat将继续发送未成功处理的日志。默认为false,如果日志处理失败,Filebeat将停止发送日志。
  • manage_template:如果设置为true,Filebeat将管理Elasticsearch的索引模板。默认为true。
  • mode:指定Filebeat的输出模式。在这个例子中,我们使用"push"模式,将日志推送到Elasticsearch。还有其他模式可供选择,例如"pull"模式,从Elasticsearch中拉取日志。

请根据你的需求进行适当的配置调整。

3.3 收集日志输出到logstash

以下是一个完整的Filebeat配置示例,将日志输出到Logstash:

filebeat:
  outputs:
    - name: logstash
      logstash:
        hosts: ["localhost:5044"]
        username: "your_username"
        password: "your_password"
        index: "myindex"
        manage_template: true
  config_dir: /etc/filebeat/conf.d/
  config_reloads: 30s
  shutdown_timeout: 30s

这个配置示例包括以下部分:

  1. outputs:定义输出配置。在这个例子中,我们定义了一个名为logstash的输出,将日志发送到Logstash。hosts指定Logstash的主机地址和端口号,usernamepassword用于身份验证(如果需要),index指定要使用的Elasticsearch索引名称,manage_template指定是否管理Elasticsearch的索引模板。
  2. config_dir:指定Filebeat配置文件夹的路径。
  3. config_reloads:指定配置重新加载的时间间隔。在这个例子中,Filebeat将每30秒重新加载一次配置。
  4. shutdown_timeout:指定Filebeat关闭之前等待完成的时间。在这个例子中,Filebeat将等待30秒完成所有的处理任务后关闭。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容