使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统

这篇具有很好参考价值的文章主要介绍了使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        随着时间的积累,日志数据会越来越多,当您需要查看并分析庞杂的日志数据时,可通过Filebeat+Kafka+Logstash+Elasticsearch采集日志数据到Elasticsearch中,并通过Kibana进行可视化展示与分析。本文介绍具体的实现方法。

一、背景信息

Kafka是一种分布式、高吞吐、可扩展的消息队列服务,广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。

在实际应用场景中,为了满足大数据实时检索的需求,您可以使用Filebeat采集日志数据,并输出到Kafka中。Kafka实时接收Filebeat采集的数据,并输出到Logstash中。输出到Logstash中的数据在格式或内容上可能不能满足您的需求,此时可以通过Logstash的filter插件过滤数据。最后将满足需求的数据输出到Elasticsearch中进行分布式检索,并通过Kibana进行数据分析与展示。简单流程如下。

使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统,ElasticSearch,java,elasticsearch

二、操作流程

1、准备工作

完成环境准备,包括创建Elasticsearch、Logstash、ECS和消息队列 Kafka 版实例、创建Topic和Consumer Group等。

2、步骤一:安装并配置Filebeat

  安装并配置Filebeat,设置input为系统日志,output为Kafka,将日志数据采集到Kafka的指定Topic中。

3、步骤二:配置Logstash管道

配置Logstash管道的input为Kafka,output为阿里云Elasticsearch,使用Logstash消费Topic中的数据并传输到阿里云Elasticsearch中。

4、步骤三:查看日志消费状态

在消息队列Kafka中查看日志数据的消费的状态,验证日志数据是否采集成功。

5、步骤四:通过Kibana过滤日志数据

在Kibana控制台的Discover页面,通过Filter过滤出Kafka相关的日志。

三、步骤一:安装并配置Filebeat

  1. 连接ECS服务器。

  2. 安装Filebeat。

    ​本文以6.8.5版本为例,安装命令如下,详细信息请参见Install Filebeat。

    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.8.5-linux-x86_64.tar.gz
    tar xzvf filebeat-6.8.5-linux-x86_64.tar.gz
  3. 执行以下命令,进入Filebeat安装目录,创建并配置filebeat.kafka.yml文件。

    cd filebeat-6.8.5-linux-x86_64
    vi filebeat.kafka.yml

    filebeat.kafka.yml配置如下。

    filebeat.prospectors:
      - type: log
        enabled: true
        paths:
            - /var/log/*.log
    
    output.kafka:
        hosts: ["alikafka-post-cn-zvp2n4v7****-1-vpc.alikafka.aliyuncs.com:9092"]
        topic: estest
        version: 0.10.2

    重要

    当Filebeat为7.0及以上版本时,filebeat.prospectors需要替换为filebeat.inputs。

    参数

    说明

    type

    输入类型。设置为log,表示输入源为日志。

    enabled

    设置配置是否生效:

    • true:生效

    • false:不生效

    paths

    需要监控的日志文件的路径。多个日志可在当前路径下另起一行写入日志文件路径。

    hosts

    消息队列Kafka实例的单个接入点,可在实例详情页面获取,详情请参见查看接入点。由于本文使用的是VPC实例,因此使用默认接入点中的任意一个接入点。

    topic

    日志输出到消息队列Kafka的Topic,请指定为您已创建的Topic。

    version

    Kafka的版本,可在消息队列Kafka的实例详情页面获取。

    重要

    • 不配置此参数会报错。

    • 由于不同版本的Filebeat支持的Kafka版本不同,例如8.2及以上版本的Filebeat支持的Kafka版本为2.2.0,因此version需要设置为Filebeat支持的Kafka版本,否则会出现类似报错:Exiting: error initializing publisher: unknown/unsupported kafka vesion '2.2.0' accessing 'output.kafka.version' (source:'filebeat.kafka.yml'),详细信息请参见version。

  4. 启动Filebeat。

    ./filebeat -e -c filebeat.kafka.yml

四、步骤二:配置Logstash管道

  1. 进入阿里云Elasticsearch控制台的Logstash页面。
  2. 进入目标实例。
    1. 在顶部菜单栏处,选择地域。
    2. Logstash实例中单击目标实例ID。
  3. 在左侧导航栏,单击管道管理

  4. 单击创建管道

  5. 创建管道任务页面,输入管道ID并配置管道。

    本文使用的管道配置如下。

    input {
      kafka {
        bootstrap_servers => ["alikafka-post-cn-zvp2n4v7****-1-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-2-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-3-vpc.alikafka.aliyuncs.com:9092"]
        group_id => "es-test"
        topics => ["estest"]
        codec => json
     }
    }
    filter {
    
    }
    output {
      elasticsearch {
        hosts => "http://es-cn-n6w1o1x0w001c****.elasticsearch.aliyuncs.com:9200"
        user =>"elastic"
        password =>"<your_password>"
        index => "kafka‐%{+YYYY.MM.dd}"
     }
    }
    表 1. input参数说明

    参数

    说明

    bootstrap_servers

    消息队列Kafka实例的接入点,可在实例详情页面获取,详情请参见查看接入点。由于本文使用的是VPC实例,因此使用默认接入点。

    group_id

    指定为您已创建的Consumer Group的名称。

    topics

    指定为您已创建的Topic的名称,需要与Filebeat中配置的Topic名称保持一致。

    codec

    设置为json,表示解析JSON格式的字段,便于在Kibana中分析。

    表 2. output参数说明

    参数

    说明

    hosts

    阿里云Elasticsearch的访问地址,取值为http://<阿里云Elasticsearch实例的私网地址>:9200

    说明

    您可在阿里云Elasticsearch实例的基本信息页面获取其私网地址,详情请参见查看实例的基本信息。

    user

    访问阿里云Elasticsearch的用户名,默认为elastic。您也可以使用自建用户,详情请参见通过Elasticsearch X-Pack角色管理实现用户权限管控。

    password

    访问阿里云Elasticsearch的密码,在创建实例时设置。如果忘记密码,可进行重置,重置密码的注意事项及操作步骤请参见重置实例访问密码。

    index

    索引名称。设置为kafka‐%{+YYYY.MM.dd}表示索引名称以kafka为前缀,以日期为后缀,例如kafka-2020.05.27

    更多Config配置详情请参见Logstash配置文件说明。

    如果您有多topic的数据同步需求,需要在kafka中添加新的topic,然后在Logstash的管道配置中添加input。示例如下:

    input {
     kafka {
      bootstrap_servers => ["alikafka-post-cn-zvp2n4v7****-1-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-2-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-3-vpc.alikafka.aliyuncs.com:9092"]
      group_id => "es-test"
      topics => ["estest"]
      codec => json
    }
    
    kafka {
      bootstrap_servers => ["alikafka-post-cn-zvp2n4v7****-1-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-2-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-zvp2n4v7****-3-vpc.alikafka.aliyuncs.com:9092"]
      group_id => "es-test-2"
      topics => ["estest_2"]
      codec => json
    }
    }
  6. 单击下一步,配置管道参数。

    使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统,ElasticSearch,java,elasticsearch

    参数

    说明

    管道工作线程

    并行执行管道的Filter和Output的工作线程数量。当事件出现积压或CPU未饱和时,请考虑增大线程数,更好地使用CPU处理能力。默认值:实例的CPU核数。

    管道批大小

    单个工作线程在尝试执行Filter和Output前,可以从Input收集的最大事件数目。较大的管道批大小可能会带来较大的内存开销。您可以设置LS_HEAP_SIZE变量,来增大JVM堆大小,从而有效使用该值。默认值:125。

    管道批延迟

    创建管道事件批时,将过小的批分派给管道工作线程之前,要等候每个事件的时长,单位为毫秒。默认值:50ms。

    队列类型

    用于事件缓冲的内部排队模型。可选值:

    • MEMORY:默认值。基于内存的传统队列。

    • PERSISTED:基于磁盘的ACKed队列(持久队列)。

    队列最大字节数

    请确保该值小于您的磁盘总容量。默认值:1024 MB。

    队列检查点写入数

    启用持久性队列时,在强制执行检查点之前已写入事件的最大数目。设置为0,表示无限制。默认值:1024。

    警告

    配置完成后,需要保存并部署才能生效。保存并部署操作会触发实例重启,请在不影响业务的前提下,继续执行以下步骤。

  7. 单击保存或者保存并部署

    • 保存:将管道信息保存在Logstash里并触发实例变更,配置不会生效。保存后,系统会返回管道管理页面。可在管道列表区域,单击操作列下的立即部署,触发实例重启,使配置生效。

    • 保存并部署:保存并且部署后,会触发实例重启,使配置生效。

五、步骤三:查看日志消费状态

  1. ​进入消息队列Kafka控制台。

  2. 参见查看消费状态,查看详细消费状态。

    预期结果如下:

    使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统,ElasticSearch,java,elasticsearch

六、步骤四:通过Kibana过滤日志数据

  1. 登录目标阿里云Elasticsearch实例的Kibana控制台,根据页面提示进入Kibana主页。
  2. 创建一个索引模式。

    1. 在左侧导航栏,单击Management

    2. 在Kibana区域,单击Index Patterns

    3. 单击Create index pattern

    4. 输入Index pattern(本文使用kafka-*),单击Next step

      使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统,ElasticSearch,java,elasticsearch

    5. 选择Time Filter field name(本文选择@timestamp),单击Create index pattern

      使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统,ElasticSearch,java,elasticsearch

  3. 在左侧导航栏,单击Discover

  4. 从页面左侧的下拉列表中,选择您已创建的索引模式(kafka-*)。

  5. 在页面右上角,选择一段时间,查看对应时间段内的Filebeat采集的日志数据。

    使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统,ElasticSearch,java,elasticsearch

  6. 单击Add a filter,在Add filter页面中设置过滤条件,查看符合对应过滤条件的日志数据。

    使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统,ElasticSearch,java,elasticsearch

七、常见问题

Q:同步日志数据出现问题,管道一直在生效中,无法将数据导入Elasticsearch,如何解决?

A:查看Logstash实例的主日志是否有报错,根据报错判断原因,具体操作请参见查询日志。常见的原因及解决方法如下。

原因

解决方法

Kafka的接入点不正确。

参见查看接入点获取正确的接入点。完成后,修改管道配置替换错误接入点。

Logstash与Kafka不在同一VPC下。

重新购买同一VPC下的实例。购买后,修改现有管道配置。

说明

VPC实例只能通过专有网络VPC访问

云消息队列 Kafka 版

Kafka或Logstash集群的配置太低,例如使用了测试版集群。

升级集群规格,完成后,刷新实例,观察变更进度。升级Logstash实例规格的具体操作,请参见升配集群;升级Kafka实例规格的具体操作,请参见升级实例配置。

管道配置中包含了file_extend,但没有安裝logstash-output-file_extend插件。

选择以下任意一种方式处理:

  • 安装logstash-output-file_extend插件。具体操作,请参见 安装或卸载插件。

  • 中断变更,等到实例处于变更中断状态后,在管道配置中,去掉file_extend配置,触发重启恢复。文章来源地址https://www.toymoban.com/news/detail-759963.html

到了这里,关于使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【运维知识大神篇】超详细的ELFK日志分析教程10(kafka集群原理+基本使用+zookeeper和kafka堆内存调优+kafka监控和压力测试+filebeat和logstash对接kafka)

    本篇文章继续给大家介绍ELFK日志分析,我们先前介绍了ELFK架构,zookeeper部署使用,kafka的部署,仅差kafka使用就将整个体系融汇贯通了。我们本篇文章将以kafka为核心,详细介绍kafka使用,最终将kafka融入ELFK架构中,大致内容见下面目录。 目录 kafka集群原理 一、专业术语 二、

    2024年02月04日
    浏览(65)
  • filebeat采集日志数据到kafka(一)(filebeat->kafka->logstash->es)

    一、filebeat安装 filebeat-kafka版本适配 1、安装包下载 https://www.elastic.co/cn/downloads/past-releases#filebeat 解压 2、新建yml配置文件,如test.yml 3、Filebeat启动和停止 启动:./filebeat -c test.yml 停止:kill -9 PID

    2024年02月16日
    浏览(87)
  • 日志系统一(elasticsearch+filebeat+logstash+kibana)

    目录 一、es集群部署 安装java环境 部署es集群 安装IK分词器插件 二、filebeat安装(docker方式) 三、logstash部署 四、kibana部署 背景:因业务需求需要将nginx、java、ingress日志进行收集。 架构:filebeat+logstash+es+kibana 服务器规划: 192.168.7.250(es) 192.168.6.216(filebeat,es) 192.168.7

    2024年02月03日
    浏览(42)
  • EFLK日志平台(filebeat-->kafka-->logstash-->es-->kiabana)

    ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 1. es安装(单节点部署) 前提 安装 2.es web 查看 浏览器访问 http://esIP:9200 或者本地访问curl ‘http://localhost:9200/?pretty’ 安

    2024年02月10日
    浏览(36)
  • 利用logstash/filebeat/插件,将graylog日志传输到kafka中

    在System-outputs,选择GELF Output,填写如下内容,其它选项默认 在要输出的Stream中,选择Manage Outputs 选择GELF Output,右边选择刚才创建好的test。 下载logstash,最新版就可以。 上传到服务器,编写test.conf配置文件,内容如下 运行logstash,输入以下命令 前提:安装好kafka集群, 创建

    2024年02月13日
    浏览(41)
  • Linux搭建ELK日志收集系统构建:Filebeat+Redis+Logstash+Elasticse

    一、ELK概述: ELK是一组开源软件的简称,其包括Elasticsearch、Logstash 和 Kibana。ELK最近几年发展迅速,已经成为目前最流行的集中式日志解决方案。 Elasticsearch: 能对大容量的数据进行接近实时的存储,搜索和分析操作。 本项目中主要通过Elasticsearch存储所有获取的日志。 Logst

    2024年02月12日
    浏览(53)
  • Filebeat ➕ Logstash 将日志文件输出到 Elasticsearch 或 Amazon S3

    filebeat是什么 Filebeat 是一个开源的轻量级日志数据收集器,由 Elastic 公司开发。它主要用于实时收集、解析和传输日志数据,将日志数据从不同的源头(如文件、日志文件、系统日志等)传输到目标位置(如 Elasticsearch、Logstash 等),以便进行存储、分析和监控。 Filebeat 的主

    2024年02月11日
    浏览(44)
  • Elasticsearch:使用 Logstash 构建从 Kafka 到 Elasticsearch 的管道 - Nodejs

    在我之前的文章 “Elastic:使用 Kafka 部署 Elastic Stack”,我构建了从 Beats = Kafka = Logstash = Elasticsearch 的管道。在今天的文章中,我将描述从 Nodejs = Kafka = Logstash = Elasticsearch 这样的一个数据流。在之前的文章 “Elastic:Data pipeline:使用 Kafka => Logstash => Elasticsearch” 中,我也

    2023年04月08日
    浏览(79)
  • Filebeat+Kafka+ELK日志采集(五)——Elasticsearch

    1、下载 2、解压: 3、配置 启动Elasticsearch,进入/bin目录下 ./elasticsearch ,不出意外的外会报以下错误: 报错1:能打开的文件或进程数太低。 解决方法: 修改/etc/security/limits.conf 配置文件,添加配置如下: 报错2: 解决方法: 修改/etc/sysctl.conf 配置文件,添加配置如下: 修

    2024年02月05日
    浏览(55)
  • 使用ELK(ES+Logstash+Filebeat+Kibana)收集nginx的日志

    书接上回:《ELK中Logstash的基本配置和用法》 默认情况下,Nginx的日志记录的是下面的格式: 在 nginx.conf 中也可以看到相关配置信息: 现在为了方便收集日志,我们把这里的格式改为 json格式,在 nginx.conf 中加入下面的内容: 以上配置是手动组装了一个json格式的配置信息。

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包