- Logstash 输入阶段
- Logstash - 收集日志
- Logstash - 支持的输入
- Logstash 解析和转换
- Logstash - 解析日志
- Logstash - 过滤器
- Logstash - 转换日志
- Logstash 输出级
- Logstash - 输出级
- Logstash - 支持的输出
- Logstash 高级主题
- Logstash - 插件
- Logstash - 监控 API
- Logstash - 安全和监控
- Logstash 有用资源
- Logstash - 快速指南
- Logstash - 有用的资源
- Logstash - 讨论
Logstash - 插件
Logstash 为其管道的所有三个阶段(输入、过滤器和输出)提供各种插件。这些插件帮助用户从各种来源捕获日志,例如 Web 服务器、数据库、网络协议等。
捕获后,Logstash可以根据用户的需要解析数据并将其转换为有意义的信息。最后,Logstash 可以将有意义的信息发送或存储到各种目标源,例如 Elasticsearch、AWS Cloudwatch 等。
输入插件
Logstash 中的输入插件可帮助用户从各种来源提取和接收日志。使用输入插件的语法如下 -
Input { Plugin name { Setting 1…… Setting 2…….. } }
您可以使用以下命令下载输入插件 -
>Logstash-plugin install Logstash-input-<plugin name>
Logstash-plugin 实用程序位于Logstash 安装目录的bin 文件夹中。下表列出了 Logstash 提供的输入插件。
先生。 | 插件名称和说明 |
---|---|
1 | 节拍 从Elastic Beats框架获取日志数据或事件。 |
2 | 云观察 从 CloudWatch(Amazon Web Services 提供的 API)中提取事件。 |
3 | couchdb_changes 来自 couchdb 的 _chages URI 的事件使用此插件发送。 |
4 | drupal_dblog 使用启用的 DBLog 提取 drupal 的看门狗日志记录数据。 |
5 | 弹性搜索 检索在 Elasticsearch 集群中执行的查询的结果。 |
6 | 事件日志 从 Windows 事件日志中获取事件。 |
7 | 执行 获取 shell 命令输出作为 Logstash 中的输入。 |
8 | 文件 从输入文件获取事件。当 Logstash 与输入源一起本地安装并且可以访问输入源日志时,这非常有用。 |
9 | 发电机 它用于测试目的,这会创建随机事件。 |
10 | github 从 GitHub Webhook 捕获事件。 |
11 | 石墨 从石墨监控工具获取指标数据。 |
12 | 心跳 它还用于测试并产生类似心跳的事件 |
13 | http 通过 http 和 https 两种网络协议收集日志事件。 |
14 | http_poller 它用于将 HTTP API 输出解码为事件。 |
15 | 数据库连接 它将 JDBC 事务转换为 Logstash 中的事件。 |
16 | 杰米克斯 使用 JMX 从远程 Java 应用程序中提取指标。 |
17 号 | 日志4j 通过 TCP 套接字从 Log4j 的 socketAppender 对象捕获事件。 |
18 | RSS 将命令行工具的输出作为 Logstash 中的输入事件。 |
19 | TCP协议 通过 TCP 套接字捕获事件。 |
20 | 推特 从 Twitter Streaming API 收集事件。 |
21 | UNIX 通过 UNIX 套接字收集事件。 |
22 | 网络套接字 通过 websocket 协议捕获事件。 |
23 | xmpp 通过 Jabber/xmpp 协议读取事件。 |
插件设置
所有插件都有其特定的设置,这有助于指定插件中的重要字段,如端口、路径等。我们将讨论一些输入插件的设置。
文件
该输入插件用于直接从输入源中存在的日志或文本文件中提取事件。它的工作方式类似于 UNIX 中的 tail 命令,保存最后读取的光标并仅从输入文件中读取新附加的数据,但可以通过使用 star_position 设置来更改。以下是该输入插件的设置。
设置名称 | 默认值 | 描述 |
---|---|---|
添加字段 | {} | 将新字段附加到输入事件。 |
较旧的 | 3600 | 上次读取时间(以秒为单位)超过此插件中指定的文件将被关闭。 |
编解码器 | “清楚的” | 它用于在进入 Logstash 管道之前对数据进行解码。 |
分隔符 | “\n” | 它用于指定新的行分隔符。 |
发现间隔 | 15 | 它是在指定路径中发现新文件之间的时间间隔(以秒为单位)。 |
启用度量 | 真的 | 它用于启用或禁用指定插件的报告和指标收集。 |
排除 | 它用于指定文件名或模式,应从输入插件中排除。 | |
ID | 为该插件实例指定唯一标识。 | |
最大打开文件数 | 它指定Logstash在任何时候输入文件的最大数量。 | |
小路 | 指定文件的路径,它可以包含文件名的模式。 | |
起始位置 | “结尾” | 如果您愿意,可以更改为“开始”;最初,Logstash 应该从头开始读取文件,而不仅仅是新的日志事件。 |
开始间隔 | 1 | 它指定时间间隔(以秒为单位),之后 Logstash 检查修改的文件。 |
标签 | 要添加任何附加信息,如 Logstash,当任何日志事件未能符合指定的 grok 过滤器时,它会在标签中添加“_grokparsefailure”。 | |
类型 | 这是一个特殊字段,您可以将其添加到输入事件中,并且在过滤器和 kibana 中很有用。 |
弹性搜索
这个特定的插件用于读取 Elasticsearch 集群中的搜索查询结果。以下是该插件中使用的设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
添加字段 | {} | 与文件插件相同,它用于在输入事件中附加一个字段。 |
ca_文件 | 用于指定SSL证书颁发机构文件的路径。 | |
编解码器 | “清楚的” | 它用于在输入 Logstash 管道之前对来自 Elasticsearch 的输入事件进行解码。 |
文档信息 | “错误的” | 如果您想从 Elasticsearch 引擎中提取索引、类型和 id 等附加信息,您可以将其更改为 true。 |
文档信息字段 | [“_index”,“_type”,“_id”] | 您可以删除 Logstash 输入中不需要的任何字段。 |
启用度量 | 真的 | 它用于启用或禁用该插件实例的报告和指标收集。 |
主机 | 它用于指定所有elasticsearch引擎的地址,这将是该Logstash实例的输入源。语法为主机:端口或IP:端口。 | |
ID | 它用于为特定输入插件实例提供唯一的标识号。 | |
指数 | “logstash-*” | 它用于指定索引名称或模式,Logstash 将监视该索引名称或模式以进行输入。 |
密码 | 用于身份验证目的。 | |
询问 | "{ \"sort\": [ \"_doc\" ] }" | 查询执行情况。 |
安全套接字层 | 错误的 | 启用或禁用安全套接字层。 |
标签 | 在输入事件中添加任何附加信息。 | |
类型 | 用于对输入表单进行分类,方便后期查找所有输入事件。 | |
用户 | 为了真实的目的。 |
事件日志
该输入插件从 Windows 服务器的 win32 API 读取数据。以下是该插件的设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
添加字段 | {} | 与文件插件相同,用于在输入事件中附加一个字段 |
编解码器 | “清楚的” | 用于解码来自windows的输入事件;在进入 Logstash 管道之前 |
日志档案 | [“应用程序”、“安全”、“系统”] | 输入日志文件中所需的事件 |
间隔 | 1000 | 它以毫秒为单位,定义两次连续检查新事件日志之间的时间间隔 |
标签 | 在输入事件中添加任何附加信息 | |
类型 | 用于将特定插件的输入分类为给定类型,以便后期轻松搜索所有输入事件 |
推特
该输入插件用于从 Streaming API 收集 Twitter 的提要。下表描述了该插件的设置。
设置名称 | 默认值 | 描述 |
---|---|---|
添加字段 | {} | 与文件插件相同,用于在输入事件中附加一个字段 |
编解码器 | “清楚的” | 用于解码来自windows的输入事件;在进入 Logstash 管道之前 |
消费者密钥 | 它包含 Twitter 应用程序的消费者密钥。欲了解更多信息,请访问https://dev.twitter.com/apps/new | |
消费者秘密 | 它包含 Twitter 应用程序的消费者密钥。欲了解更多信息,请访问https://dev.twitter.com/apps/new | |
启用度量 | 真的 | 它用于启用或禁用该插件实例的报告和指标收集 |
如下 | 它指定以逗号分隔的用户 ID,LogStash 检查这些用户在 Twitter 中的状态。 欲了解更多信息,请访问 |
|
完整推文 | 错误的 | 如果您希望 Logstash 读取从 twitter API 返回的完整对象,您可以将其更改为 true |
ID | 它用于为特定输入插件实例提供唯一的标识号 | |
忽略转发 | 错误的 | 您可以将其设置为 true 以忽略输入 twitter feed 中的转发 |
关键词 | 它是一组关键字,需要在 Twitter 输入源中进行跟踪 | |
语言 | 它定义了 LogStash 从输入 twitter feed 所需的推文的语言。这是一个标识符数组,定义了twitter中的特定语言 | |
地点 | 根据指定的位置从输入源中过滤掉推文。这是一个数组,其中包含位置的经度和纬度 | |
oauth_token | 这是必填字段,其中包含用户 oauth 令牌。欲了解更多信息,请访问以下链接https://dev.twitter.com/apps | |
oauth_token_secret | 这是必填字段,其中包含用户 oauth 秘密令牌。欲了解更多信息,请访问以下链接https://dev.twitter.com/apps | |
标签 | 在输入事件中添加任何附加信息 | |
类型 | 用于将特定插件的输入分类为给定类型,以便后期轻松搜索所有输入事件 |
传输控制协议
TCP 用于通过 TCP 套接字获取事件;它可以从模式设置中指定的用户连接或服务器读取。下表描述了该插件的设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
添加字段 | {} | 与文件插件相同,用于在输入事件中附加一个字段 |
编解码器 | “清楚的” | 用于解码来自windows的输入事件;在进入 Logstash 管道之前 |
启用度量 | 真的 | 它用于启用或禁用该插件实例的报告和指标收集 |
主持人 | “0.0.0.0” | 客户端所依赖的服务器操作系统的地址 |
ID | 它包含 Twitter 应用程序的消费者密钥 | |
模式 | “服务器” | 用于指定输入源是服务器还是客户端。 |
港口 | 它定义了端口号 | |
ssl_证书 | 用于指定SSL证书的路径 | |
ssl_启用 | 错误的 | 启用或禁用 SSL |
ssl_key | 指定 SSL 密钥文件的路径 | |
标签 | 在输入事件中添加任何附加信息 | |
类型 | 用于将特定插件的输入分类为给定类型,以便后期轻松搜索所有输入事件 |
Logstash – 输出插件
Logstash 支持各种输出源和不同的技术,如数据库、文件、电子邮件、标准输出等。
使用输出插件的语法如下 -
output { Plugin name { Setting 1…… Setting 2…….. } }
您可以使用以下命令下载输出插件 -
>logstash-plugin install logstash-output-<plugin name>
Logstash -plugin 实用程序位于 Logstash 安装目录的 bin 文件夹中。下表描述了 Logstash 提供的输出插件。
先生。 | 插件名称和描述 |
---|---|
1 | 云观察 该插件用于将聚合的指标数据发送到亚马逊网络服务的CloudWatch。 |
2 | 数据集 它用于以逗号分隔的方式写入输出事件。 |
3 | 弹性搜索 它用于将输出日志存储在Elasticsearch索引中。 |
4 | 电子邮件 它用于在生成输出时发送通知电子邮件。用户可以在电子邮件中添加有关输出的信息。 |
5 | 执行 它用于运行与输出事件匹配的命令。 |
6 | 神经节 它将指标扭曲到 Gangila 的 gmond 上。 |
7 | 格尔夫 它用于生成 GELF 格式的 Graylog2 输出。 |
8 | google_bigquery 它将事件输出到 Google BigQuery。 |
9 | 谷歌云存储 它将输出事件存储到 Google Cloud Storage。 |
10 | 石墨 它用于将输出事件存储到 Graphite。 |
11 | 图形化的 它用于在 Windows 上写入输出指标。 |
12 | 嘻哈聊天 它用于将输出日志事件存储到 HipChat。 |
13 | http 它用于将输出日志事件发送到 http 或 https 端点。 |
14 | 流入数据库 它用于将输出事件存储在InfluxDB中。 |
15 | 互联网资源中心 它用于将输出事件写入 irc。 |
16 | 蒙古数据库 它将输出数据存储在 MongoDB 中。 |
17 号 | 纳吉奥斯 用于通知Nagios被动检查结果。 |
18 | nagios_nsca 用于通过 NSCA 协议向 Nagios 通知被动检查结果。 |
19 | 开放式数据库 它将 Logstash 输出事件存储到 OpenTSDB。 |
20 | 管道 它将输出事件流式传输到另一个程序的标准输入。 |
21 | 机架空间 它用于将输出日志事件发送到 Rackspace Cloud 的队列服务。 |
22 | 雷迪斯 它使用 rpush 命令将输出日志记录数据发送到 Redis 队列。 |
23 | 里亚克 它用于将输出事件存储到 Riak 分布式键/值对。 |
24 | s3 它将输出日志记录数据存储到 Amazon Simple Storage Service。 |
25 | 社交网络 它用于将输出事件发送到 Amazon 的简单通知服务。 |
26 | solr_http 它将输出日志数据索引并存储在 Solr 中。 |
27 | 斯普斯 它用于将事件发送到AWS的简单队列服务。 |
28 | 统计数据 它用于将指标数据发送到 statsd 网络守护进程。 |
29 | 标准输出 它用于在 CLI 标准输出(如命令提示符)上显示输出事件。 |
30 | 系统日志 它用于将输出事件发送到系统日志服务器。 |
31 | TCP协议 它用于将输出事件发送到 TCP 套接字。 |
32 | UDP协议 它用于通过 UDP 推送输出事件。 |
33 | 网络套接字 它用于通过 WebSocket 协议推送输出事件。 |
34 | xmpp 它用于通过 XMPP 协议推送输出事件。 |
所有插件都有其特定的设置,这有助于指定插件中的重要字段,如端口、路径等。我们将讨论一些输出插件的设置。
弹性搜索
Elasticsearch 输出插件使 Logstash 能够将输出存储在 Elasticsearch 引擎的特定集群中。这是用户著名的选择之一,因为它包含在 ELK Stack 中,因此为 DevOps 提供了端到端的解决方案。下表描述了此输出插件的设置。
设置名称 | 默认值 | 描述 |
---|---|---|
行动 | 指数 | 它用于定义在 Elasticsearch 引擎中执行的操作。此设置的其他值包括删除、创建、更新等。 |
证书 | 它包含用于服务器证书验证的 .cer 或 .pem 文件的路径。 | |
编解码器 | “清楚的” | 它用于在将输出日志记录数据发送到目标源之前对其进行编码。 |
文档作为扰乱 | 错误的 | 此设置用于更新操作的情况。如果输出插件中未指定文档 ID,它将在 Elasticsearch 引擎中创建一个文档。 |
文档类型 | 它用于将相同类型的事件存储在相同的文档类型中。如果未指定,则使用事件类型。 | |
齐平大小 | 500 | 这用于提高 Elasticsearch 中批量上传的性能 |
主机 | [“127.0.0.1”] | 它是输出日志数据的目标地址数组 |
空闲刷新时间 | 1 | 它定义了两次刷新之间的时间限制(秒),Logstash 在该设置中指定的时间限制后强制刷新 |
指数 | “logstash-%{+YYYY.MM.dd}” | 用于指定Elasticsearch引擎的索引 |
管理模板 | 真的 | 用于应用Elasticsearch中的默认模板 |
家长 | 零 | 用于指定Elasticsearch中父文档的id |
密码 | 它用于验证对 Elasticsearch 中安全集群的请求 | |
小路 | 用于指定Elasticsearch的HTTP路径。 | |
管道 | 零 | 它用于设置摄取管道,用户希望执行事件 |
代理人 | 用于指定HTTP代理 | |
重试初始间隔 | 2 | 它用于设置批量重试之间的初始时间间隔(秒)。每次重试后都会加倍,直到达到 retry_max_interval |
重试最大间隔 | 64 | 用于设置retry_initial_interval的最大时间间隔 |
冲突重试 | 1 | Elasticsearch 更新文档的重试次数 |
安全套接字层 | 启用或禁用受 Elasticsearch 保护的 SSL/TLS | |
模板 | 包含自定义模板在Elasticsearch中的路径 | |
模板名称 | “日志存储” | 这用于在 Elasticsearch 中命名模板 |
暂停 | 60 | 是网络请求Elasticsearch的超时时间 |
更新插入 | “” | 它更新文档,或者如果 document_id 不存在,它会在 Elasticsearch 中创建一个新文档 |
用户 | 它包含在安全 Elasticsearch 集群中验证 Logstash 请求的用户 |
电子邮件
电子邮件输出插件用于在 Logstash 生成输出时通知用户。下表描述了该插件的设置。
设置名称 | 默认值 | 描述 |
---|---|---|
地址 | “本地主机” | 这是邮件服务器的地址 |
附件 | [] | 它包含附加文件的名称和位置 |
身体 | “” | 它包含电子邮件正文并且应该是纯文本 |
抄送 | 它包含以逗号分隔的电子邮件地址,用于电子邮件抄送 | |
编解码器 | “清楚的” | 它用于在将输出日志记录数据发送到目标源之前对其进行编码。 |
内容类型 | “文本/html;字符集= UTF-8” | 它用于电子邮件的内容类型 |
调试 | 错误的 | 用于在调试模式下执行邮件中继 |
领域 | “本地主机” | 用于设置发送电子邮件的域 |
从 | “logstash.alert@nowhere.com” | 用于指定发件人的电子邮件地址 |
html正文 | “” | 用于指定html格式的电子邮件正文 |
密码 | 它用于与邮件服务器进行身份验证 | |
港口 | 25 | 用于定义与邮件服务器通信的端口 |
回复 | 用于指定电子邮件回复字段的电子邮件ID | |
主题 | “” | 它包含电子邮件的主题行 |
使用_tls | 错误的 | 启用或禁用 TSL 以与邮件服务器通信 |
用户名 | 包含用于与服务器进行身份验证的用户名 | |
通过 | “smtp” | 它定义了Logstash发送电子邮件的方法 |
HTTP
此设置用于通过 http 将输出事件发送到目标。该插件有以下设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
自动重试 | 1 | 用于设置logstash的http请求重试次数 |
证书 | 它包含服务器证书验证的文件路径 | |
编解码器 | “清楚的” | 它用于在将输出日志记录数据发送到目标源之前对其进行编码。 |
内容类型 | I 指定向目标服务器发送http请求的内容类型 | |
cookie | 真的 | 它用于启用或禁用cookie |
格式 | “json” | 用于设置http请求体的格式 |
标头 | 包含http header信息 | |
http_方法 | “” | 用于指定logstash请求中使用的http方法,值可以是“put”,“post”,“patch”,“delete”,“get”,“head” |
请求超时 | 60 | 它用于与邮件服务器进行身份验证 |
网址 | 此插件需要设置来指定 http 或 https 端点 |
标准输出
stdout 输出插件用于将输出事件写入命令行界面的标准输出。Windows 中是命令提示符,UNIX 中是终端。该插件具有以下设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
编解码器 | “清楚的” | 它用于在将输出日志记录数据发送到目标源之前对其进行编码。 |
工人 | 1 | 它用于指定输出的工人数量 |
统计数据
它是一个网络守护程序,用于通过 UDP 将矩阵数据发送到目标后端服务。Windows 中是命令提示符,UNIX 中是终端。该插件有以下设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
编解码器 | “清楚的” | 它用于在将输出日志记录数据发送到目标源之前对其进行编码。 |
数数 | {} | 它用于定义要在指标中使用的计数 |
递减 | [] | 用于指定减量指标名称 |
主持人 | “本地主机” | 它包含 statsd 服务器的地址 |
增量 | [] | 用于指定增量指标名称 |
港口 | 8125 | 它包含 statsd 服务器的端口 |
采样率 | 1 | 它用于指定指标的采样率 |
发件人 | “%{主持人}” | 它指定发件人的姓名 |
放 | {} | 它用于指定一组指标 |
定时 | {} | 它用于指定计时指标 |
工人 | 1 | 它用于指定输出的工人数量 |
过滤器插件
Logstash 支持各种过滤器插件来解析输入日志并将其转换为更结构化且易于查询的格式。
使用过滤器插件的语法如下 -
filter { Plugin name { Setting 1…… Setting 2…….. } }
您可以使用以下命令下载过滤器插件 -
>logstash-plugin install logstash-filter-<plugin name>
Logstash-plugin 实用程序位于 Logstash 安装目录的 bin 文件夹中。下表描述了 Logstash 提供的输出插件。
先生。 | 插件名称和描述 |
---|---|
1 | 总计的 该插件收集或聚合来自相同类型的各种事件的数据,并在最终事件中处理它们 |
2 | 改变 它允许用户更改日志事件的字段,而变异过滤器无法处理 |
3 | 匿名化 它用于用一致的哈希值替换字段的值 |
4 | 密码 它用于在将输出事件存储到目标源之前对其进行加密 |
5 | 克隆 它用于在 Logstash 中创建输出事件的副本 |
6 | 整理 它按时间或计数合并来自不同日志的事件 |
7 | 数据集 该插件根据分隔符解析输入日志中的数据 |
8 | 日期 它解析事件中字段的日期并将其设置为事件的时间戳 |
9 | 解剖 该插件帮助用户从非结构化数据中提取字段,并使 grok 过滤器可以轻松正确地解析它们 |
10 | 降低 它用于删除所有相同类型或任何其他相似性的事件 |
11 | 过去 它用于计算开始事件和结束事件之间的时间 |
12 | 弹性搜索 它用于将 Elasticsearch 中存在的先前日志事件的字段复制到 Logstash 中的当前日志事件字段 |
13 | 提取数字 它用于从日志事件中的字符串中提取数字 |
14 | 地理信息 它在事件中添加一个字段,其中包含日志事件中存在的 IP 位置的纬度和经度 |
15 | 格罗克 是常用的过滤器插件,用于解析事件获取字段 |
16 | 国际化 它从日志事件中的字段中删除特殊字符 |
17 号 | json 用于在事件中或者事件的特定字段中创建结构化Json对象 |
18 | 千伏 该插件对于解析日志数据中的键值对很有用 |
19 | 指标 它用于聚合指标,例如计算每个事件的持续时间 |
20 | 多行 它也是常用的过滤器插件之一,可帮助用户将多行日志记录数据转换为单个事件。 |
21 | 变异 该插件用于重命名、删除、替换和修改事件中的字段 |
22 | 范围 它用于根据预期范围检查事件中字段的数值以及范围内的字符串长度。 |
23 | Ruby 它用于运行任意 Ruby 代码 |
24 | 睡觉 这使得 Logstash Hibernate指定的时间 |
25 | 分裂 它用于分割事件的字段并将所有分割值放置在该事件的克隆中 |
26 | XML 它用于通过解析日志中存在的 XML 数据来创建事件 |
编解码器插件
编解码器插件可以是输入或输出插件的一部分。这些插件用于更改或格式化日志记录数据的表示形式。Logstash 提供了多个编解码器插件,如下所示 -
先生。 | 插件名称和描述 |
---|---|
1 | 阿夫罗 该插件将 Logstash 事件序列化为 avro 数据或将 avro 记录解码为 Logstash 事件 |
2 | 云前 该插件从AWS cloudfront读取编码数据 |
3 | 云迹 该插件用于从AWS cloudtrail读取数据 |
4 | 收集的 这将从称为通过 UDP 收集的二进制协议读取数据 |
5 | 压缩假脱机程序 它用于将 Logstash 中的日志事件压缩为假脱机批次 |
6 | 点 通过为每个事件设置一个点到标准输出来使用性能跟踪 |
7 | es_bulk 这用于将 Elasticsearch 中的批量数据转换为包括 Elasticsearch 元数据的 Logstash 事件 |
8 | 石墨 该编解码器将石墨中的数据读取到事件中,并将事件更改为石墨格式的记录 |
9 | gzip_lines 该插件用于处理gzip编码的数据 |
10 | json 这用于将 Json 数组中的单个元素转换为单个 Logstash 事件 |
11 | json_lines 用于处理带有换行符分隔符的Json数据 |
12 | 线 它插件将在单个实时中读取和写入事件,这意味着在换行符分隔符之后将有一个新事件 |
13 | 多行 它用于将多行日志记录数据转换为单个事件 |
14 | 网络流量 该插件用于将nertflow v5/v9数据转换为logstash事件 |
15 | 地图 它将nmap结果数据解析为XML格式 |
16 | 清楚的 这将读取没有分隔符的文本 |
17 号 | Ruby调试 该插件将使用 Ruby 很棒的打印库编写输出 Logstash 事件 |
构建您自己的插件
您还可以在 Logstash 中创建自己的插件,以满足您的要求。Logstash-plugin 实用程序用于创建自定义插件。在这里,我们将创建一个过滤器插件,它将在事件中添加自定义消息。
生成基础结构
用户可以使用logstash-plugin实用程序的生成选项生成必要的文件,也可以在GitHub上获取它。
>logstash-plugin generate --type filter --name myfilter --path c:/tpwork/logstash/lib
这里,type选项用于指定插件是输入、输出还是过滤器。在此示例中,我们将创建一个名为myfilter的过滤器插件。path 选项用于指定要在其中创建插件目录的路径。执行上述命令后,您将看到创建了一个目录结构。
开发插件
您可以在插件目录的\lib\logstash\filters文件夹中找到插件的代码文件。文件扩展名为.rb。
在我们的例子中,代码文件位于以下路径内 -
C:\tpwork\logstash\lib\logstash-filter-myfilter\lib\logstash\filters\myfilter.rb
我们将消息更改为 - 默认⇒“嗨,您正在tutorialspoint.com 上学习此内容”并保存文件。
安装插件
要安装此插件,需要修改Logstash的Gemfile。您可以在Logstash的安装目录中找到该文件。在我们的例子中,它将位于C:\tpwork\logstash中。使用任何文本编辑器编辑此文件并在其中添加以下文本。
gem "logstash-filter-myfilter",:path => "C:/tpwork/logstash/lib/logstash-filter-myfilter"
在上面的命令中,我们指定插件的名称以及可以找到它进行安装的位置。然后,运行 Logstash-plugin 实用程序来安装此插件。
>logstash-plugin install --no-verify
测试
在这里,我们在前面的示例之一中添加myfilter -
Logstash.conf
此 Logstash 配置文件在 grok 过滤器插件后面的过滤器部分包含 myfilter。
input { file { path => "C:/tpwork/logstash/bin/log/input1.log" } } filter { grok { match => [ "message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} - %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?" ] } myfilter{} } output { file { path => "C:/tpwork/logstash/bin/log/output1.log" codec => rubydebug } }
运行logstash
我们可以使用以下命令来运行 Logstash。
>logstash –f logsatsh.conf
输入日志
以下代码块显示输入日志数据。
INFO - 48566 - TRANSACTION_START - start
输出.log
以下代码块显示了输出日志数据。
{ "path" => "C:/tpwork/logstash/bin/log/input.log", "@timestamp" => 2017-01-07T06:25:25.484Z, "loglevel" => "INFO", "logger" => "TRANSACTION_END", "@version" => "1", "host" => "Dell-PC", "label" => "end", "message" => "Hi, You are learning this on tutorialspoint.com", "taskid" => "48566", "tags" => [] }
将其发布到 Logstash 上
开发人员还可以将他/她的自定义插件上传到 github 并遵循 Elasticsearch 公司定义的标准化步骤,将其发布到 Logstash。
有关发布的更多信息,请参阅以下 URL -
https://www.elastic.co/guide/en/logstash/current/contributing-to-logstash.html