Logstash【从无到有从有到无】【L16】使用插件

2023-10-28

目录

1.使用插件

1.1.代理配置(Proxy configuration)

1.2.列出插件(Listing plugins)

1.3.将插件添加到您的部署中

1.4.高级:添加本地构建的插件

1.5.高级:Using --path.plugins

1.6.更新插件

1.7.删除插件

1.8.代理支持

1.9.生成插件(Generating Pluginsedit)

1.10.离线插件管理(Offline Plugin Management)

1.10.1.构建离线插件包(Building Offline Plugin Packs)

1.10.2.安装脱机插件包

1.10.3.更新离线插件

1.11.Private Gem Repositories

1.11.1.编辑Gemfile

1.12.Event API

1.12.1.Event Object

1.12.2.Event API

1.12.3.Ruby Filter


1.使用插件

Logstash具有丰富的输入,过滤器,编解码器和输出插件集合。 插件以称为gems的自包含软件包形式提供,并托管在RubyGems.org上。 通过bin / logstash-plugin脚本访问的插件管理器用于管理Logstash部署中插件的生命周期。 您可以使用下面描述的命令行界面(CLI)调用来安装,删除和升级插件。

1.1.代理配置(Proxy configuration)

大部分插件管理器命令都需要访问Internet才能访问RubyGems.org。 如果您的组织位于防火墙后面,则可以设置这些环境变量以将Logstash配置为使用代理。

export http_proxy=http://localhost:3128
export https_proxy=http://localhost:3128

1.2.列出插件(Listing plugins)

Logstash发行包捆绑了常见插件,因此您可以立即使用它们。 列出部署中当前可用的插件:

bin/logstash-plugin list 
bin/logstash-plugin list --verbose 
bin/logstash-plugin list '*namefragment*' 
bin/logstash-plugin list --group output 
  • 将列出所有已安装的插件
  • 将列出已安装的插件以及版本信息
  • 将列出所有安装的包含名称片段的插件
  • 将列出特定组的所有已安装插件(输入,过滤器,编解码器,输出)

1.3.将插件添加到您的部署中

处理插件安装时最常见的情况是可以访问Internet。 使用此方法,您将能够检索公共资源库(RubyGems.org)上托管的插件,并在Logstash安装的顶部进行安装。

bin/logstash-plugin install logstash-output-kafka

成功安装插件后,您可以在配置文件中开始使用它。

1.4.高级:添加本地构建的插件

在某些情况下,您想安装尚未发布且未托管在RubyGems.org上的插件。 Logstash为您提供了安装本地构建的插件的选项,该插件打包为ruby gem。 使用文件位置:

bin/logstash-plugin install /path/to/logstash-output-kafka-1.0.0.gem

1.5.高级:Using --path.plugins

使用Logstash --path.plugins标志,可以加载位于文件系统上的插件源代码。 通常,开发人员在定制插件上进行迭代并想要在创建ruby gem之前对其进行测试,以供使用。

该路径必须位于特定的目录层次结构中:PATH / logstash / TYPE / NAME.rb,其中TYPE是输入过滤器,输出或编解码器,而NAME是插件的名称。

# supposing the code is in /opt/shared/lib/logstash/inputs/my-custom-plugin-code.rb
bin/logstash --path.plugins /opt/shared/lib

1.6.更新插件

插件具有自己的发布周期,并且通常独立于Logstash的核心发布周期进行发布。 使用update子命令,您可以获得插件的最新版本。

bin/logstash-plugin update 
bin/logstash-plugin update logstash-output-kafka 
  • 将更新所有已安装的插件
  • 将仅更新此插件

1.7.删除插件

如果您需要从Logstash安装中删除插件,请执行以下操作:

bin/logstash-plugin remove logstash-output-kafka

1.8.代理支持

前面的部分依靠Logstash能够与RubyGems.org进行通信。 在某些环境中,转发代理用于处理HTTP请求。 可以通过设置HTTP_PROXY环境变量来通过代理安装和更新Logstash插件:

export HTTP_PROXY=http://127.0.0.1:3128
bin/logstash-plugin install logstash-output-kafka

设置后,将安装插件命令,并可以通过此代理使用更新。

1.9.生成插件(Generating Pluginsedit)

您现在可以在几秒钟内创建自己的Logstash插件! bin/logstash-plugin 的generate子命令为带有模板文件的新Logstash插件创建基础。 它会创建正确的目录结构,gemspec文件和相关性,因此您可以开始添加自定义代码来使用Logstash处理数据。

用法示例

bin/logstash-plugin generate --type input --name xkcd --path ~/ws/elastic/plugins
  • --type: 插件类型 - input, filter, output, or codec
  • --name: 新插件的名称
  • --path: 将在其中创建新插件结构的目录路径。 如果未指定,它将在当前目录中创建。

1.10.离线插件管理(Offline Plugin Management)

Logstash插件管理器提供了对准备脱机插件包的支持,您可以使用它们来在无法访问Internet的系统上安装Logstash插件。

此过程需要运行Logstash的登台计算机,该登台计算机有权访问公共或私有Rubygems服务器。 登台计算机下载并打包脱机安装所需的所有文件和依赖项。

1.10.1.构建离线插件包(Building Offline Plugin Packs)

离线插件包是一个压缩文件,其中包含您的离线Logstash安装所需的所有插件,以及这些插件的依赖性。

要构建离线插件包:

1.确保要打包的所有插件都已安装在登台服务器上,并且该登台服务器可以访问Internet。

2.运行bin/logstash-plugin prepare-offline-pack子命令来打包插件和依赖项:

bin/logstash-plugin prepare-offline-pack --output OUTPUT [PLUGINS] --overwrite

where:

OUTPUT      指定将压缩的插件包写入的zip文件。 默认文件是 /LOGSTASH_HOME/logstash-offline-plugins-7.4.1.zip。 如果您使用的是5.2.x和5.3.0,则此位置应该是一个zip文件,其内容将被覆盖。
[PLUGINS]  指定要包含在包中的一个或多个插件。
--overwrite  指定是否要覆盖该位置的现有文件

例子:

bin/logstash-plugin prepare-offline-pack logstash-input-beats 
bin/logstash-plugin prepare-offline-pack logstash-filter-* 
bin/logstash-plugin prepare-offline-pack logstash-filter-* logstash-input-beats 
  • 打包Beats输入插件和所有依赖项。
  • 使用通配符打包所有过滤器插件和所有依赖项。
  • 打包所有过滤器插件,Beats输入插件以及所有依赖项。

下载指定插件的所有依赖项可能需要一些时间,具体取决于列出的插件。

1.10.2.安装脱机插件包

要安装脱机插件包:

1.将压缩包移动到要安装插件的机器上。

2.运行bin/logstash-plugin install子命令,并传递脱机插件包的文件URI。

Windows example: 

bin/logstash-plugin install file:///c:/path/to/logstash-offline-plugins-7.4.1.zip

Linux example: 

bin/logstash-plugin install file:///path/to/logstash-offline-plugins-7.4.1.zip

此命令需要文件URI,因此请确保使用正斜杠并指定包的完整路径。

1.10.3.更新离线插件

要更新脱机插件,请在登台服务器上更新插件,然后使用与生成和安装插件包相同的过程:

  1. 在登台服务器上,运行bin/logstash-plugin update子命令来更新插件。 请参阅Updating plugins
  2. 创建新版本的插件包。 请参阅Building Offline Plugin Packs
  3. 安装新版本的插件包。 请参阅 Installing Offline Plugin Packs

1.11.Private Gem Repositories

Logstash插件管理器连接到Ruby gems存储库以安装和更新Logstash插件。 默认情况下,此存储库为http://rubygems.org。

某些使用案例无法使用默认存储库,如以下示例所示:

  • 防火墙阻止访问默认存储库。
  • 您正在本地开发自己的插件。
  • 本地系统上的气隙要求。

使用自定义gem储存库时,请确保使插件依赖项可用。

几个开源项目使您可以运行自己的插件服务器,其中包括:

1.11.1.编辑Gemfile

gemfile是一个配置文件,用于指定插件管理所需的信息。 每个gem文件都有一个源代码行,用于指定插件内容的位置。

默认情况下,gemfile的源代码行显示为:

# This is a Logstash generated Gemfile.
# If you modify this file manually all comments and formatting will be lost.

source "https://rubygems.org"

要更改源,请编辑源行以包含您的首选源,如以下示例所示:

# This is a Logstash generated Gemfile.
# If you modify this file manually all comments and formatting will be lost.

source "https://my.private.repository"

保存新版本的gemfile后,请正常使用插件管理命令

以下链接包含有关设置一些常用存储库的更多材料:

1.12.Event API

本部分面向插件开发人员和Logstash的Ruby过滤器用户。 下面,我们记录了用户自定义插件和Ruby过滤器中访问Logstash基于事件的数据的方式(从5.0版开始)的最新更改。 请注意,访问Logstash的配置文件中的配置数据流中的事件数据和字段-“使用字段引用”-不受此更改的影响,并将继续使用现有语法。

1.12.1.Event Object

事件是将数据流内部封装在Logstash中的主要对象,并为插件开发人员提供了与事件内容进行交互的API。通常,此API用于插件和Ruby过滤器中,以检索数据并将其用于转换。事件对象包含发送给Logstash的原始数据以及在Logstash过滤阶段创建的任何其他字段。

在5.0中,我们已经在纯Java中重新实现了Event类及其支持类。由于事件是数据处理中的关键组件,因此Java重写可以提高性能,并在磁盘上存储数据时提供有效的序列化。在大多数情况下,此更改旨在保持向后兼容性,并且对用户透明。在此程度上,我们已经更新并发布了Logstash生态系统中的大多数插件,以适应新的API更改。但是,如果您要维护自定义插件或使用Ruby过滤器,则此更改将影响您。本指南的目的是描述新的API,并提供示例以移植到新的更改。

1.12.2.Event API

在5.0版之前,开发人员可以直接使用Ruby哈希语法访问和操作事件数据。 例如,event [field] = foo。 尽管功能强大,但我们的目标是抽象内部实现细节并提供定义良好的getter和setter API。

Get API

getter是对Event中基于字段的数据的只读访问。

Syntax: event.get(field)

Returns:此字段的值;如果该字段不存在,则为nil。 返回的值可以是字符串,数字或时间戳标量值。

field是发送到Logstash或在转换过程之后创建的结构化字段。 field也可以是嵌套的字段引用,例如[field] [bar]。

例子:

event.get("foo" ) # => "baz"
event.get("[foo]") # => "zab"
event.get("[foo][bar]") # => 1
event.get("[foo][bar]") # => 1.0
event.get("[foo][bar]") # =>  [1, 2, 3]
event.get("[foo][bar]") # => {"a" => 1, "b" => 2}
event.get("[foo][bar]") # =>  {"a" => 1, "b" => 2, "c" => [1, 2]}

Accessing @metadata

event.get("[@metadata][foo]") # => "baz"

Set API

此API可用于更改事件中的数据。

Syntax: event.set(field, value)

Returns: 突变后的当前事件,可用于可链接调用。

例子:

event.set("foo", "baz")
event.set("[foo]", "zab")
event.set("[foo][bar]", 1)
event.set("[foo][bar]", 1.0)
event.set("[foo][bar]", [1, 2, 3])
event.set("[foo][bar]", {"a" => 1, "b" => 2})
event.set("[foo][bar]", {"a" => 1, "b" => 2, "c" => [1, 2]})
event.set("[@metadata][foo]", "baz")

在事件中设置集合后对其进行突变会导致未定义的行为,因此是不允许的。

h = {"a" => 1, "b" => 2, "c" => [1, 2]}
event.set("[foo][bar]", h)

h["c"] = [3, 4]
event.get("[foo][bar][c]") # => undefined

Suggested way of mutating collections:

h = {"a" => 1, "b" => 2, "c" => [1, 2]}
event.set("[foo][bar]", h)

h["c"] = [3, 4]
event.set("[foo][bar]", h)

# Alternatively,
event.set("[foo][bar][c]", [3, 4])

1.12.3.Ruby Filter

Ruby Filter可用于使用上述API执行任何红宝石代码并处理事件数据。 例如,使用新的API:

filter {
  ruby {
    code => 'event.set("lowercase_field", event.get("message").downcase)'
  }
}

此过滤器将小写消息字段,并将其设置为名为lowercase_field的新字段

 

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

Logstash【从无到有从有到无】【L16】使用插件 的相关文章

  • Logstash 文件输入:sincedb_path

    重新启动 Logstash 后 有时会观察到 Logstash 会重复日志事件 想知道什么是正确的申请方式start position sincedb path sincedb write interval配置选项 当同一位置有多个文件时会
  • Logstash:跨事件保持值

    我有一个日期在每个日志文件中只出现一次 并且我尝试在匹配一次后将该日期添加到所有后续事件中 使其在某些方面充当全局变量 日期位于文档顶部 我无法使用multiline或更改文件名或内容 为此 我的方法是使用grep过滤器drop gt fa
  • 使用 Logstash 将数据从 Elasticsearch 导出到 CSV

    如何使用 Logstash 将数据从 Elasticsearch 导出到 CSV 我只需要包含特定的列 安装2plugins 弹性搜索输入插件 and csv输出插件 然后创建一个配置文件 这是这个特殊案例的一个很好的例子 现在你已经准备好
  • 如何在 Logstash 中漂亮地打印电子邮件正文的 JSON?

    我有一个 Logstash 配置 一直用来转发电子邮件中的日志消息 它用json and json encode解析和重新编码 JSON 日志消息 json encode用于漂亮地打印 JSON 这使得电子邮件看起来非常漂亮 不幸的是 随着
  • Logstash 不读取文件输入

    我在使用 Logstash 时遇到了一个奇怪的问题 我提供一个日志文件作为logstash 的输入 配置如下 input file type gt apache access path gt C Users spanguluri Downl
  • 这些日志的 grok 模式应该是什么? (摄取 filebeat 的管道)

    我是 elasticsearch 社区的新人 我希望您能帮助我解决一些我遇到的困难 我的目标是使用 Filebeat 将大量日志文件发送到 Elasticsearch 为了做到这一点 我需要使用带有 Grok 模式处理器的摄取节点来解析数据
  • 如何在 Logstash 中获取部分 Filebeat 源文件名

    我有一个 Filebeat 实例 版本 7 5 0 在 Windows Server 上运行 监视本地文件夹中的日志文件 并将这些数据向前发送到 Logstash 版本 7 5 0 在 Docker 容器中运行 在 Logstash 中 我
  • Logstash 配置错误 - amazon_es

    我正在尝试第一次配置我的logstash conf 文件并输出到amazon es 我的整个Logstash conf文件在这里 input jdbc jdbc connection string gt jdbc mysql localho
  • Logstash Web UI 无法启动

    当我尝试使用 Web 前端启动 Logstash 时 我遇到了异常 尽管我遵循了以下位置的所有步骤官方教程 http logstash net docs 1 1 10 tutorials getting started centralize
  • Logstash 配置,“如果字符串包含...”

    因此 我们假设我有一部分日志行 如下所示 GET restAPI callMethod1 8675309 GET 匹配一个 http 方法 并且 get 被提取 其余部分匹配一个 URI 并且也被提取 现在在logstash配置中 假设我想
  • 运行多个实例时无法启动logstash - path.data 设置

    你好 我是 ELK 堆栈内部的新手 在后台运行一个logstash进程 当它找到匹配的文件模式时 它如下所示 我想了解这里的重要性是什么path data选项 请帮帮我 FATAL logstash runner Logstash coul
  • 如何使用 Kibana 3 创建价值随时间变化的图表?

    我使用 Logstash 来存储包含车辆随时间变化的速度的日志文件 在 Kibana 3 中 如何生成一个显示随时间变化的值的面板 即 x 轴显示时间 y 轴显示相关值 例如车辆速度 我发现的大多数面板都会计算给定时间范围内事件的发生次数并
  • 如何向 Elasticsearch 客户端通知新的索引文档?

    我正在使用 Elasticsearch 并且正在构建一个客户端 使用 Java 客户端 API 来导出通过 Logstash 索引的日志 我希望能够在新文档被索引 已添加新日志行 时收到通知 通过在某处添加侦听器 而不是查询最后 X 个文档
  • Logstash 的流行为不一致 - ELK

    我有一个包含几个平面字段和几个嵌套字段的索引 我正在尝试通过 Logstash 将 SQL Server 中的信息通过特定 ID 流式传输到嵌套字段中 当我流式传输数据时only one然后它就完全成功地通过了 没有任何问题 另一方面 当我
  • Logstash - 如何在没有目标的情况下使用分割过滤器分割数组?

    我正在尝试将 JSON 数组拆分为多个事件 这是一个示例输入 results id a1 name hello id a2 name logstash 这是我的过滤器和输出配置 filter split field gt results s
  • 错误:index_not_found_Exception

    我使用 ELK 堆栈来分析我的日志文件 我上周测试过 一切正常 今天 我进行了测试 但当我输入 http localhost 9200 iot log count http localhost 9200 iot log count iot
  • 将数据从 Dynamodb 发送到 Amazon Elasticsearch 的最佳方式

    我想知道将数据从 dynamoDB 发送到 elasticsearch 的最佳方式是什么 AWS SDK js https github com Stockflare lambda dynamo to elasticsearch blob
  • 将 CloudTrail 日志导入 Logstash

    我正在尝试将日志从 CloudTrail 获取到 ElasticSearch 中 以便我们可以更好地了解 AWS 账户中发生的情况 我已经在我的机器 Ubuntu 14 04 上设置了 Logstash 和 ElasticSearch 并且
  • 适用于 MYSQL 的 Logstash Jdbc 输入插件

    我在 Windows 中使用 Logstash 我无法安装输入 jdbc 插件 因此我手动下载了 zip 文件 并将插件中的logstash 文件夹放入我的logstash 1 5 2 文件夹中 文件夹结构 D elastic search
  • 按字段关联 ELK 中的消息

    相关 在ELK中合并日志和查询 https stackoverflow com questions 28429607 combine logs and query in elk 我们正在设置 ELK 并希望在 Kibana 4 中创建可视化

随机推荐

  • MySQL必知必会 学习笔记 第二十六章 管理事务处理

    并非所有引擎都支持事务处理 MyISAM不支持 InnoDB支持 事务处理可用来维护数据库的完整性 它保证成批的MySQL操作要么完全执行 要么完全不执行 如果没有错误发生 整组语句写到数据库表 如果发生错误 将已经执行的部分语句进行回退
  • Linux下快速比较两个目录的不同

    每次更新版本就想要在Linux下比较目录a和目录b中文件列表的差别 然后对目录a比目录b中多出的文件 少掉的文件分别做处理 但是 在网上搜索了多次也都没找到能直接处理好的工具 所以想了很多不少方法 自我感觉都不错 而且网上似乎没有这方面的文
  • IFNULL、ISNULL、NULLIF(SYBASE)

    IFNULL expr1 expr2 如果expr1为NULL 返回值为expr2 假如expr1不为NULL 则IFNULL 的返回值为expr1 ISNULL expr1 expr2 如果expr1值为NULL 则返回值为expr2 如
  • ubuntu不能输入美元符号_听说 90% 的人都在 win10 下使用 ubuntu 子系统了!

    win10下安装 配置与使用ubuntu子系统完全指南 最近 遇到很多Python第三方库不支持Windows系统或则安装很繁琐要不就是要安装vc 环境 都比较麻烦 对于开发者而言 Mac真的是个不错的选择 Linux就更不用说了 一直听过
  • java爬取当当网所有分类的图书信息(ISBN,作者,出版社,价格,所属分类等)

    java爬取当当网所有分类的图书信息 ISBN 作者 出版社 价格 所属分类等 顺手写的 没有建立新项目 放我自己的项目的一个文件夹里了 有兴趣的朋友可以拉下来试试 https gitee com panlufei demo blob ma
  • RN获取屏幕高宽、自适应(rem)设置

    RN获取屏幕高宽 自适应 rem 设置 1 引入Dimensions 2 通过Dimensions get window width height 获取屏幕高宽 pxToDp自适应js文件 import Dimensions from re
  • AD17无法导出外形层gerber文件

    近日在工作的时候发现Keep OUT层导出的gerber文件 后缀为 GKO 中无内容 导致板厂加工时发现无外形层 发现原因 板子外框线我是在Keep OUT层画的 双击线条发现Keepout选项被勾选 当我把其中一条线条的Keepout选
  • Jquery JqGrid常用方法

    记录平时开发中所用到的JqGrid方法 先附上一个jqgrid 详细介绍的链接 http blog mn886 net jqGrid 1 删除多行数据 var selectedId one grid jqGrid getGridParam
  • 怎么检测硬盘是否有坏道

    硬盘是电脑上非常重要的一个部分 硬盘的好坏也决定了电脑运行的稳定 硬盘最常见的就是出现坏道 一旦有了坏道 将会表现出一些异常的状况 如发出怪音 无法完成分区和格式化的操作 读取文件或运行程序时出错 磁盘占用100 甚至蓝屏等 那怎么检测硬盘
  • Windows下快速启动Kafka以及三种发送消息的方式

    目录 一 下载Kafka 二 启动kafka 2 1 启动kafka前得先启动zk 2 2 启动kafka 三 操作Kafka 3 1 创建 Kafka 主题 Topic 3 2 将信息写入主题 Topic 3 3 读取信息 四 Java实
  • linux下 在终端查看并设置串口

    1 查看串口设备 一般为ttyUSB0 ls dev 2 查看串口的波特率等信息 stty F dev ttyUSB0 a 3 设置串口波特率 数据模式 该命令将串口1 dev ttyUSB0 设置成115200波特率 8位数据模式 stt
  • linux设备驱动的实现与理解

    linux设备驱动的实现与理解 在linux中对字符设备的驱动编写 驱动插入以及使用驱动文件进行逻辑控制 其中这份代码写在嵌入式板中 通过控制io来实现灯的亮灭 但是设备驱动的实现流程与灯无关 大致的流程都体现在代码中 我感觉这份博客我自己
  • 重新出发,找回那个丢失的自己

    时隔一年多了 当初不顾一切的过来 就不要再因为眼前的困难而选择逃避 正视自己的不足 解决它 不忘初心 坚定 believe yourself
  • FreeRTOS入门(05):事件组

    文章目录 目的 基础说明 相关函数 使用演示 总结 目的 事件组是RTOS中相对常用的用于任务间交互的功能 这篇文章将对相关内容做个介绍 本文代码测试环境见前面的文章 FreeRTOS入门 01 基础说明与使用演示 基础说明 事件组 Eve
  • kgdb调试aarch64内核模块

    kgdb调试aarch64内核模块 0 开发环境 1 完善被调试终端的KGDB 2 配置内核 2 1 构建开发环境 2 2设置内核选项 2 3 修改对应模块的优化等级 2 4 内核编译 3 代码修改记录总计 4 文件共享 5 串口复用 6
  • Hibernate Interceptor(拦截器)

    需求 对所有操作数据库的事件 添加audit log 此log持久化到一张单独的audit log表 以供操作人员可以查阅跟踪 方案 Hibernate Interceptor 提供了一个拦截器 使用切面的方法 拦截所有对DB的操作 lik
  • 矩阵违逆的求法_akala啦_新浪博客

    直接求解 求导 令导数为0 结果如下 InvA ATA 1AT 直接求伪逆 InvA inv A A A SVD求解 SVD分解求伪逆 原理和公式 1 SVD分解得到的矩阵 U和V是正交阵 S是对角阵 2 正交阵的逆 转置 3 对角阵的逆
  • 基于javaweb+springboot的宿舍寝室维修上报管理系统(java+SpringBoot+FreeMarker+Mysql)

    管理员 校园管理 楼栋管理 宿舍管理 师生管理 学生管理 辅导员管理 维修管理 维修工管理 维修进度管理 阅览室管理 座位生成等 学生信用积分管理 座位预约统计管理等 学生 登录 修改个人信息 上报宿舍维修信息 查看维修进度 完成维修进度等
  • flutter 常见错误 flutter no devices,No connected devices found;

    原文出处 解决方案 1 使用管理员模式启动AS 部分人试了可以 2 启动Flutter目录下的flutter console bat 执行下面的命令 flutter config android sdk sdk根目录 flutter con
  • Logstash【从无到有从有到无】【L16】使用插件

    目录 1 使用插件 1 1 代理配置 Proxy configuration 1 2 列出插件 Listing plugins 1 3 将插件添加到您的部署中 1 4 高级 添加本地构建的插件 1 5 高级 Using path plugi