Filebeat采集数据到Elasticsearch

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: Filebeat+Elasticsearch

一、基本介绍

Filebeat 是 beats 家族的一员,是一款用于转发和集中日志数据的轻量级工具。它可作为 Agent 安装在你的服务器上,监控指定的日志文件或位置,收集日志的时间,并转发到目标应用,如:Elasticsearch、Logstash、Kafka、Redis等。

Filebeat由两个主要组件组成:inputs 和 harvester。这些组件一起工作跟踪文件并将事件数据发送到指定的输出。


1、Harvester

每个文件都将启动一个 harvester,harvester 逐行读取每个文件,并将内容发送到指定的输出。在 harvester 运行时,文件描述符将保持打开的状态,如果文件被删除了或者被重命名,Filebeat还是会继续读取该文件,直到达到 close_inactive 的状态。这样的缺点是,在 harvester 关闭之前,磁盘的空间将不会释放。

关闭 harvester 后会产生以下后果:

  • 如果在harvester还在读取文件时文件被删除,当文件处理程序关闭时,会释放基础资源。
  • 只有在scan_frequency过后,文件的采集才会重新开始。
  • 如果在harvester关闭的情况下移动或移除文件,则不会继续收集文件。

2、Input

Input 负责管理 Harvester 并找到所有读取的资源。如果 input 类型是日志,那么 input 会查找出驱动器上所有的问天,以及匹配定义的全局路径的所有文件,并为每一个文件启动一个 harvester。每个 input 按照各自的顺序执行。

以下示例配置 Filebeat 从指定的文件中收集数据:

filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log
    - /var/path2/*.log


对于同一种的 input 也可以进行重复定义:

filebeat.inputs:
- type: log
  paths:
    - /var/log/system.log
    - /var/log/wifi.log
- type: log
  paths:
    - "/var/log/apache2/*"
  fields:
    apache: true
  fields_under_root: true


目前支持的 input 类型有:

  • AWS CloudWatch
  • AWS S3
  • Azure Event Hub
  • Cloud Foundry
  • Container
  • Docker
  • filestream
  • GCP Pub/Sub
  • HTTP Endpoint
  • HTTP JSON
  • journald
  • Kafka
  • Log
  • MQTT
  • NetFlow
  • Office 365 Management Activity API
  • Redis
  • Stdin
  • Syslog
  • TCP
  • UDP

3、Filebeat如何保持文件的状态

Filebeat 通过注册表的磁盘记录 harvester 读取的上一个偏移量,并确保发送所有日志行。如果无法将内容输出到目的地,如:Elasticsearch或Logstash,Filebeat将记住最后发送的行,并在目标可触达时,再次读取文件。当 Filebeat 运行时,每个 input 的状态被记录在内存中,当 Filebeat 重启时,根据注册表中的数据进行状态重建,以保证每个 harvester 在上次读取的位置继续收集数据。

二、安装配置

1、使用Docker安装

其中 /Users/www/filebeat 目录为我本机的目录,大家可替换为自己的目录。

镜像地址:https://hub.docker.com/r/elastic/filebeat/tags

#获取镜像docker pull elastic/filebeat:8.0.0-rc1
#启动容器docker run -d--name=filebeat elastic/filebeat:8.0.0-rc1
#拷贝数据docker cp filebeat:/usr/share/filebeat /Users/www/filebeat
chmod-R777 /Users/www/filebeat
#filebeat.yml的详情见下面chmod go-w /Users/www/filebeat/filebeat/filebeat.yml
#删除原来的容器docker rm-f filebeat
#重新创建容器docker run -d \
--name=filebeat \
--restart=always \
-v /Users/www/filebeat/filebeat:/usr/share/filebeat \
-v /Users/www/filebeat/log_messages:/var/log/messages \
  elastic/filebeat:8.0.0-rc1


filebeat.yml配置如下:

setup.kibana:
  host: "172.17.0.4:5601"#指定kibana  username: "elastic"#用户  password: "elastic"#密码filebeat.inputs:
- type: log
    enabled: true    paths:
- /var/log/messages/*.log
filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: falseprocessors:
- add_cloud_metadata: ~
- add_docker_metadata: ~
output.elasticsearch:
  hosts: '172.17.0.2:9200'#es的ip地址  username: 'elastic'#es 用户名  password: 'elastic'#es 密码  indices:
- index: "filebeat-%{+yyyy.MM.dd}"


2、配置Kibana

进入 Kibana 的 Stack Management 选择 Index Patterns ,点击 Create index pattern 创建一个索引匹配规则。

输入 filebeat 后,下面会将相关的索引展示出来,点击下一步:

创建成功后,在 Discover 页面就可以看到采集到的数据了:


至此,filebeat采集日志到ES就结束了,大家可根据实际的情况灵活调整,欢迎评论区一起交流探讨~

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
17天前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
122 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
25天前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
58 0
|
3月前
|
存储 缓存 监控
|
3月前
|
消息中间件 监控 Kafka
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
【8月更文挑战第13天】Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
149 3
|
3月前
|
数据采集 人工智能 自然语言处理
阿里云Elasticsearch AI语义搜索:解锁未来搜索新纪元,精准洞察数据背后的故事!
【8月更文挑战第2天】阿里云Elasticsearch AI场景语义搜索最佳实践
165 5
|
4月前
|
存储 安全 文件存储
【elasticsearch】es6重启服务后数据消失,es6如何配置数据持久化储存
【elasticsearch】es6重启服务后数据消失,es6如何配置数据持久化储存
45 1
|
5月前
|
索引
利用滚动索引来管理海量Elasticsearch数据
利用滚动索引来管理海量Elasticsearch数据
|
5月前
|
数据库 索引
Elasticsearch索引别名:管理与优化数据访问
Elasticsearch索引别名:管理与优化数据访问
|
4月前
|
Java
Java 实现 Elasticsearch 查询全部数据
【7月更文挑战第7天】Java 实现 Elasticsearch 查询全部数据
|
5月前
|
数据安全/隐私保护 网络架构 索引
Elasticsearch索引数据的路由规则与自定义路由分发
Elasticsearch索引数据的路由规则与自定义路由分发
107 0