logstash与filebeat收集日志

1、背景介绍

日志收集,采用的是 ELK 框架,即 elasticsearch,logstash,kibana,另外还有 filebeat 组件,其中 filebeat 用于扫描日志文件,将日志发送到 logstash 服务,logstash 服务则完成将日志切分,发送到 elasticsearch 服务。

2、filebeat的部署步骤(日志 -> logstash)
  • 下载安装包,并解压。
  • 创建xxx.filebeat.yml文件,注意内容的格式,否则你会找半天的错误都可能找不出原因。
  • 启动服务
[root@hadoop1 opt] tar -xf  filebeat-5.2.2-linux-x86_64.tar.gz  ./

# 这里根据实际的业务需要编写filebeat.yml文件
[root@hadoop1 filebeat-5.2.2-linux-x86_64] vim  swordfish.filebeat.yml
# 文件的具体内容如下:
filebeat.prospectors:
- input_type: log
  multiline.timeout: 1s
  paths:
    - /opt/swordfish/target/swordfish-all-1.0-SNAPSHOT/logs/exec-server*.log
  multiline:
    pattern: '^\['
    negate: true
    match: after
# exclude_lines: ["^\\[DEBUG\\]"]
output.logstash:
  hosts: ["192.168.14.148:9999"]

配置解释

multiline:适用于日志中每一条日志占据多行的情况,比如各种语言的报错信息调用栈。这个配置的下面包含如下配置:
   pattern:多行日志开始的那一行匹配的pattern
   negate:是否需要对pattern条件转置使用,不翻转设为true,反转设置为false
   match:匹配pattern后,与前面(before)还是后面(after)的内容合并为一条日志
   max_lines:合并的最多行数(包含匹配pattern的那一行)
   timeout:到了timeout之后,即使没有匹配一个新的pattern(发生一个新的事件),     也把已经匹配的日志事件发送出去

启动指令-后台启动

[root@hadoop1 filebeat-5.2.2-linux-x86_64]$ nohup ./filebeat -e -c udp-filebeat.yml -d publish &
3、logstash的部署(logstash -> elasticsearch)
  • 下载安装包,并解压。
  • 创建swordfish-pipeline.conf文件,注意内容的格式,否则你会找半天的错误都可能找不出原因。
  • 启动服务
# 解压
[root@hadoop1 opt]# tar -xf logstash-5.2.2.tar.gz ./
[root@hadoop1 opt]# vim swordfish-pipeline.conf
# 内容格式要注意
input {
  beats {
    port => "9999"
  }
}

filter {
  grok {
    match => { "message" => ["%{LOGLEVEL:logLevel}\]\[%{NUMBER:nanoTime:integer}\](?<V1>.*)\[jobId=(?<jobId>[\w\d\-_]+)\](?<V2>.*)", "%{LOGLEVEL:logLevel}\]\[%{NUMBER:nanoTime:integer}\](?<V1>.)(?<V2>.*)"] }
    add_field => { "nest_msg" => "[%{logLevel}]%{V1}%{V2}" }
    remove_field => [ "message", "V1", "V2" ]
  }

  if ![jobId] {
  drop {}
}

mutate {
  convert => { "nanoTime" => "integer" }
}
}

output {
  stdout {
    codec => json
  }
  elasticsearch {
    hosts => ["192.168.14.148:9200"]
    codec => json
    index => "swordfish-logstash-%{+YYYY.MM.dd}"
  }
}

启动指令-后台启动

[root@hadoop1 logstash-5.2.2]# nohup bin/logstash -f udp-pipeline.conf &
4es的部署我们之前有介绍过,下面我们去es-head页面去看一下日志是否在es中存储。


上面图片中我们发现日志是可以收集到的。

LogstashFilebeat是两个常用的开源工具,用于处理和传输日志数据。它们通常与Elasticsearch和Kibana一起使用,形成ELK堆栈,用于实时日志分析和可视化。 Logstash是一个用于收集、处理和转发日志和事件数据的工具。它可以从各种来源(如文件、网络、消息队列等)收集数据,并对数据进行过滤、换和增强,然后将其发送到目标位置(如Elasticsearch、Kafka等)。Logstash使用插件来实现各种功能,例如输入插件、过滤器插件和输出插件。通过配置Logstash的管道,可以定义数据的流动和处理方式。 Filebeat是一个轻量级的日志数据传输工具,用于将日志数据从服务器发送到中央存储或分析系统。它可以监视指定的日志文件或位置,将新的日志事件发送到指定的目标位置(如Logstash、Elasticsearch等)。Filebeat具有低资源消耗和高性能的特点,适用于在大规模分布式环境中收集和传输日志数据。 通过LogstashFilebeat的结合使用,可以实现以下功能: 1. 收集和传输日志数据:Filebeat负责监视和传输日志文件,Logstash负责接收和处理传入的日志数据。 2. 数据过滤和转换:Logstash可以使用各种过滤器插件对日志数据进行过滤、解析和转换,以便更好地理解和分析数据。 3. 数据增强和丰富:Logstash可以对日志数据进行增强,例如添加额外的字段、记事件等,以便更好地进行分析和可视化。 4. 数据存储和索引:Logstash可以将处理后的日志数据发送到Elasticsearch等目标位置,以便进行存储和索引,以供后续的搜索和分析。 下面是一个演示LogstashFilebeat的例子: 1. 配置Filebeat: ```yaml filebeat.inputs: - type: log paths: - /var/log/nginx/access.log output.logstash: hosts: ["localhost:5044"] ``` 2. 配置Logstash: ```conf input { beats { port => 5044 } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => ["localhost:9200"] index => "nginx-access-%{+YYYY.MM.dd}" } } ``` 3. 启动FilebeatLogstash: ``` # 启动Filebeat filebeat -e -c filebeat.yml # 启动Logstash logstash -f logstash.conf ``` 通过以上配置和命令,Filebeat将监视Nginx访问日志文件,并将新的日志事件发送到LogstashLogstash将使用Grok过滤器对日志数据进行解析和转换,然后将处理后的数据发送到Elasticsearch进行存储和索引。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值