开发者社区> guitar_zp> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Elastic 技术栈之 Filebeat

简介: Elastic 技术栈之 Filebeat 简介 Beats 是安装在服务器上的数据中转代理。 Beats 可以将数据直接传输到 Elasticsearch 或传输到 Logstash 。 Beats 有多种类型,可以根据实际应用需要选择合适的类型。
+关注继续查看

Elastic 技术栈之 Filebeat

简介

Beats 是安装在服务器上的数据中转代理。

Beats 可以将数据直接传输到 Elasticsearch 或传输到 Logstash 。

Beats Platform

Beats 有多种类型,可以根据实际应用需要选择合适的类型。

常用的类型有:

  • Packetbeat:网络数据包分析器,提供有关您的应用程序服务器之间交换的事务的信息。
  • Filebeat:从您的服务器发送日志文件。
  • Metricbeat:是一个服务器监视代理程序,它定期从服务器上运行的操作系统和服务收集指标。
  • Winlogbeat:提供Windows事件日志。

参考

更多 Beats 类型可以参考:community-beats

说明

由于本人工作中只应用了 FileBeat,所以后面内容仅介绍 FileBeat 。

FileBeat 的作用

相比 Logstash,FileBeat 更加轻量化。

在任何环境下,应用程序都有停机的可能性。 Filebeat 读取并转发日志行,如果中断,则会记住所有事件恢复联机状态时所在位置。

Filebeat带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。

FileBeat 不会让你的管道超负荷。FileBeat 如果是向 Logstash 传输数据,当 Logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞得到解决,FileBeat 将恢复到原来的速度并继续传播。

Beats design

安装

Unix / Linux 系统建议使用下面方式安装,因为比较通用。

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.1.1-linux-x86_64.tar.gz
tar -zxf filebeat-6.1.1-linux-x86_64.tar.gz

参考

更多内容可以参考:filebeat-installation

配置

配置文件

首先,需要知道的是:filebeat.yml 是 filebeat 的配置文件。配置文件的路径会因为你安装方式的不同而变化。

Beat 所有系列产品的配置文件都基于 YAML 格式,FileBeat 当然也不例外。

filebeat.yml 部分配置示例:

filebeat:
  prospectors:
    - type: log
      paths:
        - /var/log/*.log
      multiline:
        pattern: '^['
        match: after

参考

更多 filebeat 配置内容可以参考:配置 filebeat

更多 filebeat.yml 文件格式内容可以参考:filebeat.yml 文件格式

重要配置项

filebeat.prospectors

(文件监视器)用于指定需要关注的文件。

示例

filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

output.elasticsearch

如果你希望使用 filebeat 直接向 elasticsearch 输出数据,需要配置 output.elasticsearch 。

示例

output.elasticsearch:
  hosts: ["192.168.1.42:9200"]

output.logstash

如果你希望使用 filebeat 向 logstash输出数据,然后由 logstash 再向elasticsearch 输出数据,需要配置 output.logstash。

注意

相比于向 elasticsearch 输出数据,个人更推荐向 logstash 输出数据。

因为 logstash 和 filebeat 一起工作时,如果 logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞得到解决,FileBeat 将恢复到原来的速度并继续传播。这样,可以减少管道超负荷的情况。

示例

output.logstash:
  hosts: ["127.0.0.1:5044"]

此外,还需要在 logstash 的配置文件(如 logstash.conf)中指定 beats input 插件:

input {
  beats {
    port => 5044 # 此端口需要与 filebeat.yml 中的端口相同
  }
}

# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }

output {
  elasticsearch {
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" 
    document_type => "%{[@metadata][type]}" 
  }
}

setup.kibana

如果打算使用 Filebeat 提供的 Kibana 仪表板,需要配置 setup.kibana 。

示例

setup.kibana:
  host: "localhost:5601"

setup.template.settings

在 Elasticsearch 中,索引模板用于定义设置和映射,以确定如何分析字段。

在 Filebeat 中,setup.template.settings 用于配置索引模板。

Filebeat 推荐的索引模板文件由 Filebeat 软件包安装。如果您接受 filebeat.yml 配置文件中的默认配置,Filebeat在成功连接到 Elasticsearch 后自动加载模板。

您可以通过在 Filebeat 配置文件中配置模板加载选项来禁用自动模板加载,或加载自己的模板。您还可以设置选项来更改索引和索引模板的名称。

参考

更多内容可以参考:filebeat-template

说明

如无必要,使用 Filebeat 配置文件中的默认索引模板即可。

setup.dashboards

Filebeat 附带了示例 Kibana 仪表板。在使用仪表板之前,您需要创建索引模式 filebeat- *,并将仪表板加载到Kibana 中。为此,您可以运行 setup 命令或在 filebeat.yml 配置文件中配置仪表板加载。

为了在 Kibana 中加载 Filebeat 的仪表盘,需要在 filebeat.yml 配置中启动开关:

setup.dashboards.enabled: true

参考

更多内容可以参考:configuration-dashboards

命令

filebeat 提供了一系列命令来完成各种功能。

执行命令方式:

./filebeat COMMAND

参考

更多内容可以参考:command-line-options

说明

个人认为命令行没有必要一一掌握,因为绝大部分功能都可以通过配置来完成。且通过命令行指定功能这种方式要求每次输入同样参数,不利于固化启动方式。

最重要的当然是启动命令 run 了。

示例 指定配置文件启动

./filebeat run -e -c filebeat.yml -d "publish"
./filebeat -e -c filebeat.yml -d "publish" # run 可以省略

模块

Filebeat 提供了一套预构建的模块,让您可以快速实施和部署日志监视解决方案,并附带示例仪表板和数据可视化。这些模块支持常见的日志格式,例如Nginx,Apache2和MySQL 等。

运行模块的步骤

  • 配置 elasticsearch 和 kibana
output.elasticsearch:
  hosts: ["myEShost:9200"]
  username: "elastic"
  password: "elastic"
setup.kibana:
  host: "mykibanahost:5601"
  username: "elastic" 
  password: "elastic

username 和 password 是可选的,如果不需要认证则不填。

  • 初始化环境

执行下面命令,filebeat 会加载推荐索引模板。

./filebeat setup -e
  • 指定模块

执行下面命令,指定希望加载的模块。

./filebeat -e --modules system,nginx,mysql

参考

更多内容可以参考: 配置 filebeat 模块 | filebeat 支持模块

原理

Filebeat 有两个主要组件:

harvester:负责读取一个文件的内容。它会逐行读取文件内容,并将内容发送到输出目的地。

prospector:负责管理 harvester 并找到所有需要读取的文件源。比如类型是日志,prospector 就会遍历制定路径下的所有匹配要求的文件。

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

Filebeat保持每个文件的状态,并经常刷新注册表文件中的磁盘状态。状态用于记住 harvester 正在读取的最后偏移量,并确保发送所有日志行。

Filebeat 将每个事件的传递状态存储在注册表文件中。所以它能保证事件至少传递一次到配置的输出,没有数据丢失。

资料

Beats 官方文档

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
前端代码简洁之路,后台系统之详情页设计
前端业务开发中,为了脱离舒适区,也为了解放重复功能开发的劳动力,会将一些功能进行改造,本期改造千篇一律的详情页。
3168 0
Filebeat 采集 Docker 日志
由于容器的特性,在容器重新创建后日志会废弃掉,如何通过持久化和中心化的处理容器日志变成一个棘手的问题,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?
760 0
马云谈NASA:投资让人更有创造力的技术
本文讲的是马云谈NASA:投资让人更有创造力的技术【IT168 资讯】“我们认为未来从科技而来。”3月23日,马云在马来西亚出席活动时谈及阿里巴巴的“NASA”计划,“我们投入研发的所有技术,是希望让科技更加普惠,能让更多的人收益。”
1026 0
马云谈NASA:投资让人更有创造力的技术
本文讲的是马云谈NASA:投资让人更有创造力的技术【IT168 资讯】“我们认为未来从科技而来。”3月23日,马云在马来西亚出席活动时谈及阿里巴巴的“NASA”计划,“我们投入研发的所有技术,是希望让科技更加普惠,能让更多的人收益。”
1089 0
.Net平台技术栈?不止于此
首先援引一名工友几年前的文章:http://csharper.blog.51cto.com/3052247/1330022,结合当前微软技术领域及平台工具现状,文章有增改。   .NET是个很大、很宽、很广的概念。
1471 0
Navicat 的使用(二)
一,navicat如何写sql语句查询? 方法1:ctrl+q就会弹出一个sql输入窗口,就可以在里面写sql了。写完sql后,直接ctrl+r就执行sql了。     还有一点,写sql语句时,navicat会提示的。
863 0
NSIS安装程序制作工具判断系统是否安装.NET
前段时间忙了很久的系统总算上线了,由于是WinForm程序不能整个文件夹的发给客户使用。所以必须要打包,记得以前在VS2005中是自带部署功能的。现在换了VS2013那个部署功能完全弄不清方向。最后在网上找了NSIS这个开源的安装程序制作工具。
1087 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ELK介绍
立即下载
RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
立即下载
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
立即下载