前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【全文检索_10】Filebeat 基本使用

【全文检索_10】Filebeat 基本使用

作者头像
Demo_Null
发布2021-03-02 15:32:54
1.5K0
发布2021-03-02 15:32:54
举报
文章被收录于专栏:Java 学习

1.1 简介

1.1.1 概述

  Filebeat 是 Beats 的一员,用于转发和集中日志数据的轻量级传送工具。当面对成百上千、甚至成千上万的服务器、虚拟机和容器生成的日志时,Filebeat 将为您提供一种轻量型方法,监视指定的日志文件或位置,收集日志事件,并将它们转发到 Elasticsearch、 Logstash 等。

1.1.2 工作流程

  Filebeat 涉及两个组件:查找器 prospector 和采集器 harvester,读取文件并将事件数据发送到指定的输出。启动 Filebeat 时,它会启动一个或多个查找器,查看你为日志文件指定的本地路径。Prospector 负责管理 harvester 并找到所有要读取的文件来源。如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为 Filebeat 监视的每个文件启动一个 harvester。当 harvester 读取到一个日志的新内容就发送到 libbeat,聚合起来然后把聚合的数据发送到设置输出的地方。

1.2 Filebeat 命令

1.2.1 基本命令

命令

说明

export

导出配置,索引模板、或者 dashboard 到 output 中

help

显示所有命令的帮助

keystore

管理私有的存储

modules

管理配置的模块

run

运行 Filebeat。如果我们不使用其他的 command 的话,默认执行的就是这个

setup

设置一些初始化的环境,包括索引,kibana的dashboards,机器学习的一些任务

test

测试配置文件是否正确

version

显示当前版本的信息

1.2.2 keystore 的使用

  当我们配置 Filebeat 的时候,我们可能需要设置一些敏感的配置项,如密码。相比依赖于文件系统权限来保护我们这些数据,更适合在配置的时候用 Filebeat 的 keystore 来安全存储这些数据。当我们加入了一个 key 和对应的密码信息到 keystore 后,在设置敏感配置项的时候可以使用 ${KEY} 来替代原来的密码信息。

代码语言:javascript
复制
# 创建 keystore
filebeat keystore create

# 添加 key,执行后会让你输入 key 对应的信息
# add KEY 将指定的密钥添加到密钥库
filebeat keystore add ES_PWD
# 使用 --force 标志覆盖现有密钥
filebeat keystore add ES_PWD --force

# 列举所有 key
filebeat keystore list

# 删除 key
filebeat keystore remove ES_PWD
代码语言:javascript
复制
# 使用 keystore
output.elasticsearch:
      password: "${ES_PWD}"

1.3 输入

1.3.1 配置

配置

说明

paths

日志加载的路径示例:- /var/log/*/*.log 抓取 /var/log 子目录目录下所有 *.log 文件

encoding

根据输入的文本设置编码示例:utf-8

exclude_lines

不显示符合所配置的规则的行, 空行被忽略。示例:['^DBG'] 过滤 DBG 开头

include_lines

显示符合所配置的规则的行, 空行被忽略 示例:['^ERR', '^WARN'] 导出 ERR 或 WARN 开头

exclude_files

排除的文件示例:['.gz$'] 排除以 gz 结尾的文件

harvester_buffer_size

每个harvester的缓存大小,默认是16384

max_bytes

单个日志消息可以发送的最大字节,默认是10MB

json

json 配置示例:  json.keys_under_root: false key 是否输出到顶级目录   json.add_error_key: false 如果启用此设置, 则当出现 json 解编错误或在配置中定义了文本键但无法使用时, Filebeat 将添加 “error.message” 和 “error.key:json” 键 json.message_key: log 用于应用行筛选和多行设置的JSON键。此键必须是顶级的,其值必须是字符串,否则将忽略它。如果未定义文本键,则不能使用行筛选和多行功能。 json.overwrite_keys: false 若启用此设置,则解码的 JSON 对象中的值将覆盖 Filebeat 通常添加的字段(类型,源,偏移等)以防发生冲突。

multiline

将多行日志合并成一行示例:  multiline.negate: false 包含(true)或排除(false)匹配上的行   multiline.pattern: ^\[ 匹配正则  multiline.match: after 合并匹配之后(after)的行

tags

在 Filebeat 输出的每个事件中加入这个 tags 字段使用标签,这样能够被 Kibana 或 Logstash 轻松过滤示例:["json"]

fields

可以向输出添加附加字段,例如可以加入一些字段过滤 log 数据示例:level: debug

1.3.2 paths 的使用

☞ 日志加载路径
代码语言:javascript
复制
filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log
☞ 多个输入部分
代码语言:javascript
复制
filebeat.inputs:
- type: log  # 从 system.log、wifi.log 两个文件收集
  paths:
    - /var/log/system.log
    - /var/log/wifi.log
- type: log  # 从 apache2 下所有文件收集
  paths:
    - "/var/log/apache2/*"
- type: log  # 抓取 /var/log 子目录目录下所有 *.log 文件,不会从 /var/log 本身目录下的 *.log 文件
  paths:
    - /var/log/*/*.log

1.3.3 收集 Java 多行日志

代码语言:javascript
复制
# https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html
# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
  # 更改为 true 以启用此输入配置
  enabled: true
  # 应该爬行和获取的路径,基于全局的路径。
  paths:
    - /home/logs/*
  # 合并以 "[" 开头的第一行之后的行
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after
  tags: ["java"]

1.3.4 收集 JSON 格式日志

代码语言:javascript
复制
# https://www.elastic.co/guide/en/beats/filebeat/current/configuration-filebeat-options.html
# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
  # 更改为 true 以启用此输入配置
  enabled: true
  # 应该爬行和获取的路径,基于全局的路径。
  paths:
    - /home/logs/*
  # 解码 JSON,如果日志是 JSON 格式, 启用此功能
  json.keys_under_root: true
  json.overwrite_keys: true
  tags: ["json"]

1.4 输出

1.4.1 Logstash 作为输出

☞ 配置 filebeat.yml
代码语言:javascript
复制
# https://www.elastic.co/guide/en/beats/filebeat/current/logstash-output.html
# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
  # 更改为 true 以启用此输入配置
  enabled: true
  # 应该爬行和获取的路径,基于全局的路径。
  paths:
    - /home/filebeat-7.10.2-linux-x86_64/logs/*

# ------------------------------ Logstash Output -------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]
☞ Logstash 配置文件
代码语言:javascript
复制
# 在 Logstash 安装目录下新建 first-pipeline.conf
# https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html
input {
  # 使用 beats 输入插件
  beats {
    port => 5044
  }
}

# https://www.elastic.co/guide/en/logstash/current/plugins-outputs-stdout.html
output {
  # 输出到控制台
  stdout { 
    codec => rubydebug 
  }
}
☞ 启动 Logstash
代码语言:javascript
复制
# --config 或 -f 选项的意思是指定配置文件启动
# --config.test_and_exit 选项的意思是解析配置文件并报告任何错误
# --config.reload.automatic 选项的意思是启用自动配置加载
bin/logstash -f first-pipeline.conf --config.test_and_exit
☞ 启动 Filebeat
代码语言:javascript
复制
# -e 将日志记录到标准日志并禁用系统日志/文件输出
# -c 指定你的配置文件, 默认读取 filebeat.yml 文件
# -d 参数指定了调试的选择器,不同的选择器用逗号分隔,-d "*" 表示调试所有的信息。
./filebeat -e -c filebeat.yml -d "publish"

如果一切正常,会在 Logstash 控制台看到类似下图的输出:

1.4.2 Elasticsearch 作为输出

☞ 配置 filebeat.yml
代码语言:javascript
复制
# https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  hosts: ["localhost:9200"]
  # 无密码可不配
  username: "USERNAME"
  password: "PASSWORD"
  # 配置索引库名称,默认 filebeat-%{[agent.version]}-%{+yyyy.MM.dd}-%{index_num}
  # 要想使用必须设置 setup.template.name 和 setup.template.pattern
  index: "filebeat-es-%{+yyyy.MM.dd}"

# ================================== Template ==================================
# 模板名称和模式必须设置,以防 Elasticsearch 索引模式被修改。
setup.template.name: "filebeat"
setup.template.pattern: "filebeat-*"
# 自定义 ES 的索引需要把索引生命周期管理 ilm 设置为 false
setup.ilm.enabled: false
☞ 启动

  启动 Filebeat 后就可以发现,Elasticsearch 中多了一个名为 filebeat-es-2021.02.09 的索引,里面放了一堆看不懂的东西,就是我们刚刚通过 Filebeat 采集的日志。这个时候收集到的数据没有太大的意义,我们需要通过 Logstash 解析之后再存入 Elasticsearch 中。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 简介
    • 1.1.1 概述
      • 1.1.2 工作流程
      • 1.2 Filebeat 命令
        • 1.2.1 基本命令
          • 1.2.2 keystore 的使用
          • 1.3 输入
            • 1.3.1 配置
              • 1.3.2 paths 的使用
                • ☞ 日志加载路径
                • ☞ 多个输入部分
              • 1.3.3 收集 Java 多行日志
                • 1.3.4 收集 JSON 格式日志
                • 1.4 输出
                  • 1.4.1 Logstash 作为输出
                    • ☞ 配置 filebeat.yml
                    • ☞ Logstash 配置文件
                    • ☞ 启动 Logstash
                    • ☞ 启动 Filebeat
                  • 1.4.2 Elasticsearch 作为输出
                    • ☞ 配置 filebeat.yml
                    • ☞ 启动
                相关产品与服务
                Elasticsearch Service
                腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档