使用filebeat和logstash收集多台服务器上的日志

由于我们的各个服务在多台服务器上部署,有时候遇到用户反馈的问题,技术人员需要挨个登录上去查看,并且dubbo服务之间链式调用时需要登录查看更多的服务器,增加了解决问题的时间,同时,error日志我们也希望统一收集起来,可以进行监控告警。

上图是通过Filebeat收集日志文件中的信息,然后统一发送到Logstash中。

我们的日志记录使用的是logback,其实本身是支持通过logback直接发送到Logstash中的,但是我们考虑日志的抽取不应该属于项目的管理范畴,logback的主要是各项目条线进行管理,因此统一由运维进行管理更加灵活。

下列是filebeat和logstash配置文件的内容:

filebeat.inputs:
- type: log
  paths:
    - /logdir/serviceA/*.debug.log
  document_type: serviceA
  fields_under_root: true
  fields:
    appid: serviceA
    log_type: debug
- type: log
  paths:
    - /logdir/serviceA/*.error-warn.log
  document_type: serviceA
  fields_under_root: true
  fields:
    appid: serviceA
    log_type: error-warn
- type: log
  paths:
    - /logdir/serviceB/*.debug.log
  document_type: serviceB
  fields_under_root: true
  fields:
    appid: serviceB
    log_type: debug
- type: log
  paths:
    - /logdir/serviceB/*.error-warn.log
  document_type: serviceB
  fields_under_root: true
  fields:
    appid: serviceB
    log_type: error-warn
output.logstash:
  enabled: true
  hosts: ["logstash服务器ip地址:5044"]
input {
    beats {
        port => 5044
    }
}

filter {
    json {
      source => "message"
      remove_field => ["@timestamp","log","input","agent","ecs"]
    }
}

output {
    file {
        path => "/存储目录/%{+yyyy}-%{+MM}-%{+dd}-%{appid}-%{log_type}.log"
        codec => line {
                format => "[%{[host][name]}] %{message}"
        }
    }
}

mark一下,如果大家有什么更好的方案,可以提供给我。

另外有一个没有考虑太清楚的就是如果服务器数量众多,网络IO太大的问题

 

一些设置过程中的经验(逐步追加完善):

1.filebeat我是使用rpm安装的,使用service filebeat start 启动时如果我的配置文件有错误,service filebeat status提供的错误信息根本无法准确判断问题,因此使用filebeat命令进行启动就可以在日志里看见了

 /usr/share/filebeat/bin/filebeat -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat -path.data /var/lib/filebeat -path.logs /var/log/filebeat

2.按照网上的教程,增加filebeat当前服务器的ip地址,一直没有成功,启动报错,filebeat送往logstash的信息里有主机名,因为我们公司的主机名是按照一定规则起的,和ip地址效果相同,因此放弃获取ip地址,使用的主机名,我觉得运维期间规范主机名的定义也是一项应该完成的工作

### 回答1: FilebeatLogstash都是用于处理日志数据的开源工具,它们可以协同工作来将日志从各种来源(如服务器、应用程序设备)中收集、传输处理。 Filebeat主要用于从服务器、应用程序设备等来源采集日志数据,并将其传输到Elasticsearch或Logstash等目标位置。它非常轻量级,能够高效地收集传输日志数据。 Logstash则主要用于对日志数据进行转换、过滤聚合等处理操作,以便更好地支持可视化分析需求。它具有强大的处理功能灵活的配置选项,可以将数据从各种来源汇聚到一起,并将其转换为统一的格式。 在实际使用中,Filebeat可以作为Logstash的数据源之一,将收集到的日志数据传输到Logstash进行进一步处理。同时,Logstash也可以作为Filebeat的目标位置之一,接收Filebeat传输过来的数据进行处理分析。两者可以结合使用,相互补充,以满足不同场景下的日志数据处理需求。 ### 回答2: FilebeatLogstash都是Elastic Stack中的数据收集工具,它们的作用都是将各种数据源的数据采集并传递给Elasticsearch,以实现数据可视化实时分析的目的,但两者在实现方式适用场景上有所不同。 Filebeat是一款轻量级的数据收集工具,主要用于收集传递日志数据。它通过监控指定的文件、目录或标准输入来采集数据,并将采集到的数据发送给Elasticsearch或Logstash进行处理分析。Filebeat可以压缩加密传输数据,并且对于大量数据采集传输来说,Filebeat的性能比Logstash更好。 Logstash是一款完整的数据收集、处理、转换输出工具,它除了可以收集传输日志数据之外,还可以对收集到的数据进行多种处理转换操作,如Grok、csv、json等数据格式处理、SQL数据库连接等等,最后再将数据输出到指定目的地,如Elasticsearch、Kafka、RabbitMQ、s3、HDFS、Amazon SNS等。相对于FilebeatLogstash功能更加强大灵活,但同时也更加重量级耗费资源。 综上所述,FilebeatLogstash都是Elastic Stack中非常重要的数据收集工具,而且它们经常被一起使用,但在实际应用中,需要根据不同场景需求来选择使用哪一个工具,或者同时使用两个工具来完成数据采集、处理输出的工作。 ### 回答3: FilebeatLogstash都是常用的开源日志收集工具,主要用于将分散在各个服务器上的日志数据收集起来并传输到集中式的日志存储或分析平台中进行处理。但是FilebeatLogstash的作用定位并不完全相同。 Filebeat是一款轻量级的日志收集工具,主要用于收集服务器产生的日志文件,通过配置将日志文件发送到Logstash或Elasticsearch进行处理分析。Filebeat基于go编写,运行时资源占用较小,支持多平台操作系统,具有从日志文件中持续读取数据的能力,能够保证日志数据的实时性。使用Filebeat可以将大量的日志数据错误信息发送到集中管理平台,方便日志分析人员对问题进行快速定位排查。 Logstash是一款功能比较强大的日志收集、处理转发工具,支持多种数据源、数据格式数据目的地的交互,可以对日志数据进行过滤加工,支持解析多种日志格式,能够将日志发送到各种目的地。Logstash主要包括输入、过滤器输出三个部分,每个部分都有丰富的插件支持。因此,Logstash集成度扩展性都非常高,能够满足不同的日志收集处理需求。 FilebeatLogstash可以合作使用Filebeat作为日志收集工具,将日志数据发送给中央服务器之后,Logstash负责对接收到的数据进行进一步的解析处理。Logstash支持从Filebeat接收数据,可以对日志数据进行提取、解析、转换、过滤、聚合发送等操作,然后再将处理后的数据发送给下一个目的地(例如Elasticsearch、Redis、Kafka、S3等)。通过这种方式,可以实现灵活、高效的日志收集、处理分析。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值