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

2023-11-18

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} 来替代原来的密码信息。

# 创建 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
# 使用 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 的使用

☞ 日志加载路径
filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log

☞ 多个输入部分
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 多行日志

# 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 格式日志

# 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
# 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 配置文件
# 在 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
# --config 或 -f 选项的意思是指定配置文件启动
# --config.test_and_exit 选项的意思是解析配置文件并报告任何错误
# --config.reload.automatic 选项的意思是启用自动配置加载
bin/logstash -f first-pipeline.conf --config.test_and_exit

☞ 启动 Filebeat
# -e 将日志记录到标准日志并禁用系统日志/文件输出
# -c 指定你的配置文件, 默认读取 filebeat.yml 文件
# -d 参数指定了调试的选择器,不同的选择器用逗号分隔,-d "*" 表示调试所有的信息。
./filebeat -e -c filebeat.yml -d "publish"

如果一切正常,会在 Logstash 控制台看到类似下图的输出:
在这里插入图片描述


1.4.2 Elasticsearch 作为输出

☞ 配置 filebeat.yml
# 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 中。

在这里插入图片描述



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【全文检索_10】Filebeat 基本使用 的相关文章

  • 在 Eclipse 中隐藏重复的工具栏项

    我不知道如何 但我的 STS 有重复的工具栏项目 我不知道如何删除它们 这是我复制的工具栏的样子 我想摆脱这些 我试图隐藏工具栏 但这没有帮助 有人知道如何删除重复的吗 自从升级到 Oxygen 以来 我一直遇到同样的问题 我无法可靠地重现
  • Android CursorAdapter、ListView 和后台线程

    我一直在开发的这个应用程序有包含数兆字节数据的数据库可供筛选 许多活动只是列表视图 通过数据库中的各个级别的数据下降 直到到达 文档 即从数据库中提取并显示在手机上的 HTML 我遇到的问题是 其中一些活动需要能够通过捕获击键并重新运行带有
  • 如何停止使用扫描仪从标准输入读取多行?

    我正在做一个 JAVA 作业 应该处理多行输入 指令显示 输入是从标准输入读取的 给出了示例输入的示例 one 1 two 2 three 3 我不明白上面的示例输入 从标准输入读取 是什么意思 这是我编写的一个测试程序 它可以消除我的困惑
  • Ant 中回显目标描述

  • 想要从java中的char数组创建字符流

    我想从 char 数组构造一个流以使用 java 8 功能 例如过滤器和映射 char list a c e Stream
  • javax.persistence.TransactionRequiredException:没有可用于当前线程的实际事务的 EntityManager

    我使用 Hibernate 创建了我的第一个 Spring MVC 项目 我的 DAO 层使用 JPA EntityManager 与数据库交互 GenericDao java Repository public abstract clas
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 如何修复maven错误JAVA_HOME环境变量未正确定义

    当我在虚拟环境中检查maven的版本时 出现以下错误 The JAVA HOME environment variable is not defined correctly This environment variable is need
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • java中的第三个布尔状态是什么?

    虽然我知道根据定义 布尔值仅包含两种状态 真或假 我想知道布尔值在用这些状态之一初始化之前有什么值 它默认为 false http java sun com docs books tutorial java nutsandbolts dat
  • 应用程序中空指针异常[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中实施应用程序内计费 我写了这段代码 public class Settings extends PreferenceFragment ServiceConnection mService
  • 从特定 JAR 文件读取资源(文件的重复路径)

    假设您有 jar1 和artifactId 动物园 jar2 和artifactId 动物 两个 jar 都有一个具有相同路径的资源文件 例如 animals animal txt 有什么方法可以从特定的 jar 中读取该文件吗 使用 ge
  • 如何在 Java 中创建一个带有连字符的值的静态枚举?

    如何创建如下所示的静态枚举 static enum Test employee id employeeCode 截至目前 我遇到了错误 这对于 Java 来说是不可能的 因为每个项目都必须是有效的标识符 并且有效的 Java 标识符可能不包
  • Java给定长度的随机数

    我需要在 Java 中生成一个恰好 6 位数字的随机数 我知道我可以在随机发生器上循环 6 次 但是在标准 Java SE 中还有其他方法可以做到这一点吗 要生成 6 位数字 Use Random http download oracle
  • 动态创建 JSON 对象

    我正在尝试使用以下格式创建 JSON 对象 tableID 1 price 53 payment cash quantity 3 products ID 1 quantity 1 ID 3 quantity 2 我知道如何使用 JSONOb
  • 使用 Commons 或 Guava 将文本文件转换为 Java Set

    我想将文件中的每一行加载到 HashSet 集合中 有没有一种简单的方法可以做到这一点 怎么样 Sets newHashSet Files readLines file charSet 使用番石榴 参考 文件 readLines http
  • 乔达时间中两个日期之间的天数

    如何找到两次之间的天数差异乔达时间 http www joda org joda time DateTime http www joda org joda time apidocs org joda time DateTime html实例
  • 通过向上转换将 Java.sql.date 转换为 Java.util.date 安全吗?

    java sql date 扩展了 java util date 那么通过将 java sql date 转换为 java util date 是否可以在两者之间进行转换 或者有其他方法可以转换它们吗 您不一定需要强制转换 您可以将 SQL
  • AES 密钥是随机的吗?

    AES 密钥可以通过此代码生成 KeyGenerator kgen KeyGenerator getInstance AES kgen init 128 but 如果我有一个 非常可靠 的生成随机数的方法 我可以这样使用它吗 SecureR
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即

随机推荐

  • java socket 阻塞模式_关于socket的Accept阻塞模式的退出方法分析

    众所周知 socket的Accept会阻塞当前线程 如果子程序 或者类在被回收时 没有正确的中止socket 则会引发一些异常 我说下常用的一些处理方法 1 强行中断线程 这种方法我觉得是最差的 因为强行中断正在执行的线程 可能会引发一些意
  • 基于51单片机实现8位数码管显示表白数字(Proteus仿真)

    wechat 嵌入式工程师成长日记 具体功能实现 8位数码管从左往右显示 5201314 并且不闪烁 使用器件 若干电阻 4只LED红灯 8位数码管 总线 排阻 NPN三极管 AT89C51芯片 Proteus仿真原理图 WeChat 愿随
  • Unity 将图片做成预制体

    Unity 将图片做成预制体 刚导入Assets的图片是无法直接拖入场景中的 若我们想要将图片变成预制体 需要做一点转化 方法如下 选中想要转成预制体的图片 更改如下图 然后就可以将图片拖入场景中 进而拖进Assets里面制成预制体啦
  • 【如何卸载Alitum Designer10】

    我由于装了AD20 所以想要卸载掉AD10 但是无论是用电脑管家还是电脑的控制面板里面都无法卸载AD10 百度了下 亲测方法可行 故在此分享一下 找到D Program Files x86 Altium AD 10 System Insta
  • interview2-框架篇

    一 Spring篇 1 Spring 1 Bean线程安全问题 不是线程安全的 Spring框架中有一个 Scope注解 默认的值就是singleton 单例的 因为一般在spring的bean的中都是注入无状态的对象 没有线程安全问题 如
  • PCL alpha shapes平面点云边界特征提取(C++详细过程版)

    边界提取 一 概述 二 代码实现 三 结果展示 一 概述 AlphaShape边界提取算法在PCL里有现成的调用函数 具体算法原理和实现代码见 PCL alpha shapes平面点云边界特征提取 为充分了解AlphaShape算法实现的每
  • MySQL性能调优的10个方法

    1 选择合适的存储引擎 InnoDB 除非你的数据表使用来做只读或者全文检索 相信现在提到全文检索 没人会用 MYSQL 了 你应该默认选择 InnoDB 你自己在测试的时候可能会发现 MyISAM 比 InnoDB 速度快 这是因为 My
  • java 实现邮箱发送邮件功能(端口:465、587)

    使用465端口对邮件进行ssl加密传输 package com example alysslEmail import java security Security import java util Date import java util
  • 解决Eclipse里的注释中文错位问题

    2018年6月之后的eclipse版本 会出现中文注释字体不一 且缩进不一致的问题 如下 解决Eclipse里的注释中文错位问题如下 强迫症请收藏 1 Window gt Preference 2 输入formatter 选择如下 然后Ed
  • 计算机网络之物联网的特点及其主要应用领域

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 一 物联网的概念及其特点 1 1 物联网的概念 1 2 物联网的特点 二 物联网的分类及其主要应用领域 总结 前言 物联网是新一代信息技术的重要组成部分 也是信息
  • openGL之API学习(一九九)纹理单元和纹理对象的关系

    glGenTextures产生的是纹理对象 简称纹理 纹理单元数量在GPU上确定的 不需要创建 glBindTexture将纹理对象绑定到当前纹理单元的的目标类型上 一个纹理单元可以有多个类型1D 2D等 一个纹理对象能够绑定到多个目标类型
  • 不需要带手机直接选择刷脸支付

    刷脸成为了现实 各地实行刷脸的试点都取得成功 刷脸也就这样的走进我们的生活 不需要带手机 钱包 直接选择刷脸 当然 方便的还是无须等待排队 原本一个收银台需要配备一名收银员 所以考虑人力成本收银柜台数量是有限的 刷脸支付需要经历的步骤 不到
  • uniapp 调用蓝牙接收数据、发送指令后接收返回结果

    uniapp 调用蓝牙接收数据 向设备发送指令后接收返回结果 一 连接蓝牙设备 1 初始化蓝牙 2 搜索蓝牙 3 获取设备列表 4 连接设备 二 接收数据 1 获取设备服务列表 2 获取蓝牙特征 3 接收设备数据 三 向设备发送数据 并接收
  • 微服务及其框架是什么

    要理解微服务 首先要先理解不是微服务的那些 通常跟微服务相对的是单体应用 即将所有功能都打包成在一个独立单元的应用程序 从单体应用到微服务并不是一蹴而就的 这是一个逐渐演变的过程 本文将以一个网上超市应用为例来说明这一过程 目录 1 单体
  • js中的日期Date操作——获取当前日期 yyyy-mm-dd格式

    getCurrentDate const date new Date const year date getFullYear toString const month 0 date getMonth 1 slice 2 const day
  • AD操作小技巧总结

    1 群操作修改元器件属性 使用寻找相同的元器件来统一修改值 最重要一步是找到后用shift选中你需要的那几个 修改完后按enter键即可 根据下图可以知道筛选的条件有很多 也可以从不同的文件中去寻找元器件 2 将PCB中元器件旋转任意角度
  • 逐渐从土里长出来的小花

    从土里逐渐长出来的小花 这是长出来后的样子 图片压缩了出现了重影 代码在这里
  • Tornado中文教程

    Tornado 是一个Python web框架和异步网络库 起初由 FriendFeed 开发 通过使用非阻塞网络I O Tornado可以支撑上万级的连接 处理 长连接 WebSockets 和其他需要与每个用户保持长久连接的应用 相关链
  • 记录使用flask+socket+mongodb页面P标签的刷新

    1 flask的学习 随便百度个flask入门教程熟悉一下flask的启动 路由等 2 mondodb的学习 同1 3 socket的学习 同1 4 碰到的问题 4 1socket阻塞 使用 from threading import Th
  • 【全文检索_10】Filebeat 基本使用

    1 1 简介 1 1 1 概述 Filebeat 是 Beats 的一员 用于转发和集中日志数据的轻量级传送工具 当面对成百上千 甚至成千上万的服务器 虚拟机和容器生成的日志时 Filebeat 将为您提供一种轻量型方法 监视指定的日志文件