- 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 | beats 从 elastic beats 框架获取日志数据或事件。 |
2 | cloudwatch 从 CloudWatch 中提取事件,CloudWatch 是 Amazon Web Services 提供的 API。 |
3 | couchdb_changes 使用此插件发送 couchdb 的 _changes URI 的事件。 |
4 | drupal_dblog 提取启用了 DBLog 的 drupal 的 watchdog 日志数据。 |
5 | Elasticsearch 检索在 Elasticsearch 集群中执行的查询结果。 |
6 | eventlog 获取 Windows 事件日志中的事件。 |
7 | exec 获取 shell 命令输出作为 Logstash 的输入。 |
8 | file 从输入文件获取事件。当 Logstash 在本地安装并具有输入源的访问权限时,这很有用。 |
9 | generator 用于测试目的,它创建随机事件。 |
10 | github 捕获来自 GitHub webhook 的事件。 |
11 | graphite 从 graphite 监控工具获取指标数据。 |
12 | heartbeat 也用于测试,它生成类似心跳的事件 |
13 | http 收集两个网络协议上的日志事件,分别是 http 和 https。 |
14 | http_poller 用于将 HTTP API 输出解码为事件。 |
15 | jdbc 将 JDBC 事务转换为 Logstash 中的事件。 |
16 | jmx 使用 JMX 从远程 Java 应用程序提取指标。 |
17 | log4j 通过 TCP 套接字捕获来自 Log4j 的 socketAppender 对象的事件。 |
18 | rss 将命令行工具的输出作为 Logstash 中的输入事件。 |
19 | tcp 通过 TCP 套接字捕获事件。 |
20 | 从 Twitter 流式 API 收集事件。 |
21 | unix 通过 UNIX 套接字收集事件。 |
22 | websocket 通过 websocket 协议捕获事件。 |
23 | xmpp 读取 Jabber/xmpp 协议上的事件。 |
插件设置
所有插件都有其特定的设置,有助于指定插件中重要的字段,例如端口、路径等。我们将讨论一些输入插件的设置。
文件
此输入插件用于直接从输入源中存在的日志或文本文件中提取事件。它的工作原理类似于 UNIX 中的 tail 命令,并保存上次读取的游标,仅读取输入文件中新追加的数据,但可以通过使用 star_position 设置进行更改。以下是此输入插件的设置。
设置名称 | 默认值 | 描述 |
---|---|---|
add_field | {} | 将新字段添加到输入事件。 |
close_older | 3600 | 最后读取时间(以秒为单位)超过此插件中指定时间的文件将关闭。 |
codec | “plain” | 用于在进入 Logstash 管道之前解码数据。 |
delimiter | “\n” | 用于指定换行符。 |
discover_interval | 15 | 在指定路径中发现新文件的间隔时间(以秒为单位)。 |
enable_metric | true | 用于启用或禁用指定插件的指标报告和收集。 |
exclude | 用于指定应从输入插件中排除的文件名或模式。 | |
Id | 为该插件实例指定唯一标识。 | |
max_open_files | 指定 Logstash 随时可以打开的最大输入文件数。 | |
path | 指定文件的路径,它可以包含文件名的模式。 | |
start_position | “end” | 如果需要,可以更改为“beginning”,以便 Logstash 最初应从开头开始读取文件,而不仅仅是新的日志事件。 |
start_interval | 1 | 指定 Logstash 检查修改文件的时间间隔(以秒为单位)。 |
tags | 添加任何其他信息,例如 Logstash,当任何日志事件无法符合指定的 grok 过滤器时,它会在标签中添加“_grokparsefailure”。 | |
type | 这是一个特殊的字段,您可以将其添加到输入事件中,它在过滤器和 kibana 中很有用。 |
Elasticsearch
此特定插件用于读取 Elasticsearch 集群中的搜索查询结果。以下是此插件中使用的设置:
设置名称 | 默认值 | 描述 |
---|---|---|
add_field | {} | 与文件插件相同,用于将字段添加到输入事件中。 |
ca_file | 用于指定 SSL 证书颁发机构文件的路径。 | |
codec | “plain” | 用于在输入事件进入 Logstash 管道之前对其进行解码。 |
docinfo | “false” | 如果要提取其他信息(例如索引、类型和 ID)从 Elasticsearch 引擎,可以将其更改为 true。 |
docinfo_fields | ["_index", "_type", "_id"] | 可以消除任何不需要的 Logstash 输入字段。 |
enable_metric | true | 用于启用或禁用该插件实例的指标报告和收集。 |
hosts | 用于指定将作为该 Logstash 实例的输入源的所有 Elasticsearch 引擎的地址。语法为 host:port 或 IP:port。 | |
Id | 用于为该特定输入插件实例提供唯一标识号。 | |
index | "logstash-*" | 用于指定 Logstash 将监视的索引名称或模式,以便作为输入。 |
password | 用于身份验证。 | |
query | "{ \"sort\": [ \"_doc\" ] }" | 执行的查询。 |
ssl | false | 启用或禁用安全套接字层。 |
tags | 在输入事件中添加任何其他信息。 | |
type | 用于对输入表单进行分类,以便在后续阶段轻松搜索所有输入事件。 | |
user | 用于身份验证。 |
eventlog
此输入插件读取 Windows 服务器的 win32 API 中的数据。以下是此插件的设置:
设置名称 | 默认值 | 描述 |
---|---|---|
add_field | {} | 与文件插件相同,用于将字段添加到输入事件中 |
codec | “plain” | 用于在输入事件进入 Logstash 管道之前对其进行解码 |
logfile | ["Application", "Security", "System"] | 输入日志文件中所需的事件 |
interval | 1000 | 以毫秒为单位,定义两次连续检查新事件日志之间的间隔 |
tags | 在输入事件中添加任何其他信息 | |
type | 用于将输入表单特定插件分类为给定的类型,以便在后续阶段轻松搜索所有输入事件 |
此输入插件用于从其流式 API 收集 Twitter 的 feed。下表描述了此插件的设置。
设置名称 | 默认值 | 描述 |
---|---|---|
add_field | {} | 与文件插件相同,用于将字段添加到输入事件中 |
codec | “plain” | 用于在输入事件进入 Logstash 管道之前对其进行解码 |
consumer_key | 包含 Twitter 应用程序的消费者密钥。有关更多信息,请访问https://dev.twitter.com/apps/new | |
consumer_secret | 包含 Twitter 应用程序的消费者密钥。有关更多信息,请访问https://dev.twitter.com/apps/new | |
enable_metric | true | 用于启用或禁用该插件实例的指标报告和收集 |
follows | 指定用逗号分隔的用户 ID,LogStash 检查 Twitter 中这些用户的状态。 有关更多信息,请访问 |
|
full_tweet | false | 如果希望 Logstash 读取 Twitter API 返回的完整对象,可以将其更改为 true |
id | 用于为该特定输入插件实例提供唯一标识号 | |
ignore_retweets | False | 可以将其设置为 true 以忽略输入 Twitter feed 中的转发 |
keywords | 需要在 Twitter 输入 feed 中跟踪的关键词数组 | |
language | 定义 LogStash 从输入 Twitter feed 中所需的推文的语言。这是一个标识符数组,用于定义 Twitter 中的特定语言 | |
locations | 根据指定的地理位置过滤输入feed中的推文。这是一个数组,包含位置的经度和纬度。 | |
oauth_token | 这是必需字段,包含用户oauth令牌。更多信息请访问以下链接 https://dev.twitter.com/apps | |
oauth_token_secret | 这是必需字段,包含用户oauth密钥令牌。更多信息请访问以下链接 https://dev.twitter.com/apps | |
tags | 在输入事件中添加任何其他信息 | |
type | 用于将输入表单特定插件分类为给定的类型,以便在后续阶段轻松搜索所有输入事件 |
TCP
TCP用于通过TCP套接字获取事件;它可以读取来自用户连接或服务器的事件,这在模式设置中指定。下表描述了此插件的设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
add_field | {} | 与文件插件相同,用于将字段添加到输入事件中 |
codec | “plain” | 用于在输入事件进入 Logstash 管道之前对其进行解码 |
enable_metric | true | 用于启用或禁用该插件实例的指标报告和收集 |
host | “0.0.0.0” | 客户端所依赖的服务器操作系统地址 |
id | 它包含Twitter应用程序的消费者密钥 | |
mode | “server” | 用于指定输入源是服务器还是客户端。 |
port | 定义端口号 | |
ssl_cert | 用于指定SSL证书的路径 | |
ssl_enable | false | 启用或禁用SSL |
ssl_key | 指定SSL密钥文件的路径 | |
tags | 在输入事件中添加任何其他信息 | |
type | 用于将输入表单特定插件分类为给定的类型,以便在后续阶段轻松搜索所有输入事件 |
Logstash – 输出插件
Logstash支持各种输出源和不同的技术,如数据库、文件、电子邮件、标准输出等。
使用输出插件的语法如下所示 -
output { Plugin name { Setting 1…… Setting 2…….. } }
您可以使用以下命令下载输出插件 -
>logstash-plugin install logstash-output-<plugin name>
**Logstash-plugin实用程序**位于Logstash安装目录的bin文件夹中。下表描述了Logstash提供的输出插件。
序号 | 插件名称和描述 |
---|---|
1 | CloudWatch 此插件用于将聚合的指标数据发送到亚马逊网络服务的CloudWatch。 |
2 | csv 用于以逗号分隔的方式写入输出事件。 |
3 | Elasticsearch 用于将输出日志存储在Elasticsearch索引中。 |
4 | 用于在生成输出时发送通知电子邮件。用户可以在电子邮件中添加有关输出的信息。 |
5 | exec 用于运行与输出事件匹配的命令。 |
6 | ganglia 它将指标写入Gangila的gmond。 |
7 | gelf 用于以GELF格式生成Graylog2的输出。 |
8 | google_bigquery 将事件输出到Google BigQuery。 |
9 | google_cloud_storage 将输出事件存储到Google Cloud Storage。 |
10 | graphite 用于将输出事件存储到Graphite。 |
11 | graphtastic 用于在Windows上写入输出指标。 |
12 | hipchat 用于将输出日志事件存储到HipChat。 |
13 | http 用于将输出日志事件发送到http或https端点。 |
14 | influxdb 用于将输出事件存储在InfluxDB中。 |
15 | irc 用于将输出事件写入irc。 |
16 | mongodb 将输出数据存储在MongoDB中。 |
17 | nagios 用于使用被动检查结果通知Nagios。 |
18 | nagios_nsca 用于通过NSCA协议使用被动检查结果通知Nagios。 |
19 | opentsdb 将Logstash输出事件存储到OpenTSDB。 |
20 | pipe 将输出事件流式传输到另一个程序的标准输入。 |
21 | rackspace 用于将输出日志事件发送到Rackspace Cloud的队列服务。 |
22 | redis 使用rpush命令将输出日志数据发送到Redis队列。 |
23 | riak 用于将输出事件存储到Riak分布式键/值对中。 |
24 | s3 将输出日志数据存储到Amazon Simple Storage Service。 |
25 | sns 用于将输出事件发送到Amazon的Simple Notification Service。 |
26 | solr_http 将输出日志数据索引并存储在Solr中。 |
27 | sps 用于将事件发送到AWS的Simple Queue Service。 |
28 | statsd 用于将指标数据发送到statsd网络守护程序。 |
29 | stdout 用于在CLI的标准输出上显示输出事件,例如命令提示符。 |
30 | syslog 用于将输出事件发送到syslog服务器。 |
31 | tcp 用于将输出事件发送到TCP套接字。 |
32 | udp 用于通过UDP推送输出事件。 |
33 | websocket 用于通过WebSocket协议推送输出事件。 |
34 | xmpp 用于通过XMPP协议推送输出事件。 |
所有插件都有其特定的设置,有助于在插件中指定重要的字段,如端口、路径等。我们将讨论一些输出插件的设置。
Elasticsearch
Elasticsearch输出插件使Logstash能够将输出存储在Elasticsearch引擎的特定集群中。这是用户最受欢迎的选择之一,因为它包含在ELK Stack软件包中,因此为Devops提供端到端解决方案。下表描述了此输出插件的设置。
设置名称 | 默认值 | 描述 |
---|---|---|
action | index | 用于定义在Elasticsearch引擎中执行的操作。此设置的其他值包括delete、create、update等。 |
cacert | 包含服务器证书验证的.cer或.pem文件的路径。 | |
codec | “plain” | 用于在将输出日志数据发送到目标源之前对其进行编码。 |
doc_as_upset | false | 此设置用于更新操作。如果在输出插件中未指定文档ID,则会在Elasticsearch引擎中创建一个文档。 |
document_type | 用于将相同类型的事件存储在相同的文档类型中。如果未指定,则使用事件类型。 | |
flush_size | 500 | 用于提高Elasticsearch中批量上传的性能 |
hosts | [“127.0.0.1”] | 输出日志数据的目标地址数组 |
idle_flush_time | 1 | 定义两次刷新之间的时间限制(秒),Logstash在此设置中指定的超时后强制刷新 |
index | "logstash-%{+YYYY.MM.dd}" | 用于指定Elasticsearch引擎的索引 |
manage_temlpate | true | 用于在Elasticsearch中应用默认模板 |
parent | nil | 用于指定Elasticsearch中父文档的ID |
password | 用于对Elasticsearch中安全集群的请求进行身份验证 | |
path | 用于指定Elasticsearch的HTTP路径。 | |
pipeline | nil | 用于设置用户希望为事件执行的摄取管道 |
proxy | 用于指定HTTP代理 | |
retry_initial_interval | 2 | 用于设置批量重试之间初始时间间隔(秒)。每次重试后都会加倍,直到达到retry_max_interval |
retry_max_interval | 64 | 用于设置retry_initial_interval的最大时间间隔 |
retry_on_conflict | 1 | Elasticsearch更新文档的重试次数 |
ssl | 启用或禁用对Elasticsearch的安全SSL/TLS | |
template | 包含Elasticsearch中自定义模板的路径 | |
template_name | "logstash" | 用于在Elasticsearch中命名模板 |
timeout | 60 | 对Elasticsearch的网络请求的超时时间 |
upsert | “” | 更新文档,如果文档ID不存在,则在Elasticsearch中创建新文档 |
user | 包含用于在安全Elasticsearch集群中对Logstash请求进行身份验证的用户 |
电子邮件输出插件用于在Logstash生成输出时通知用户。下表描述了此插件的设置。
设置名称 | 默认值 | 描述 |
---|---|---|
address | “localhost” | 邮件服务器的地址 |
attachments | [] | 包含附件文件的名称和位置 |
body | “” | 包含电子邮件正文,应为纯文本 |
cc | 包含电子邮件的抄送电子邮件地址,以逗号分隔 | |
codec | “plain” | 用于在将输出日志数据发送到目标源之前对其进行编码。 |
contenttype | "text/html; charset = UTF-8" | 用于设置电子邮件的内容类型 |
debug | false | 用于在调试模式下执行邮件中继 |
domain | "localhost" | 用于设置发送电子邮件消息的域名 |
from | "[email protected]" | 用于指定发件人的电子邮件地址 |
htmlbody | “” | 用于以html格式指定电子邮件正文 |
password | 用于对邮件服务器进行身份验证 | |
port | 25 | 用于定义与邮件服务器通信的端口 |
replyto | 用于指定电子邮件回复字段的电子邮件ID | |
subject | “” | 包含电子邮件的主题行 |
use_tls | false | 启用或禁用与邮件服务器通信的TSL |
username | 包含用于对服务器进行身份验证的用户名 | |
via | “smtp” | 定义Logstash发送电子邮件的方法 |
Http
此设置用于通过http将输出事件发送到目标。此插件具有以下设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
automatic_retries | 1 | 用于设置logstash重试http请求的次数 |
cacert | 包含服务器证书验证的文件路径 | |
codec | “plain” | 用于在将输出日志数据发送到目标源之前对其进行编码。 |
content_type | 指定对目标服务器的http请求的内容类型 | |
cookies | true | 用于启用或禁用cookie |
format | "json" | 用于设置http请求正文的格式 |
headers | 包含http标头信息 | |
http_method | “” | 用于指定logstash在请求中使用的http方法,值可以是“put”、“post”、“patch”、“delete”、“get”、“head” |
request_timeout | 60 | 用于对邮件服务器进行身份验证 |
url | 这是此插件的必需设置,用于指定http或https端点 |
stdout
stdout输出插件用于将输出事件写入命令行界面的标准输出。在Windows中是命令提示符,在UNIX中是终端。此插件具有以下设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
codec | “plain” | 用于在将输出日志数据发送到目标源之前对其进行编码。 |
workers | 1 | 用于指定输出的工作程序数量 |
statsd
这是一个网络守护程序,用于通过UDP将矩阵数据发送到目标后端服务。在Windows中是命令提示符,在UNIX中是终端。此插件具有以下设置 -
设置名称 | 默认值 | 描述 |
---|---|---|
codec | “plain” | 用于在将输出日志数据发送到目标源之前对其进行编码。 |
count | {} | 用于定义在指标中使用的计数 |
decrement | [] | 用于指定递减指标名称 |
host | “localhost” | 包含statsd服务器的地址 |
increment | [] | 用于指定递增指标名称 |
port | 8125 | 包含statsd服务器的端口 |
sample_rate | 1 | 用于指定指标的采样率 |
sender | “%{host}” | 指定发送者的名称 |
set | {} | 用于指定一个集合指标 |
timing | {} | 用于指定一个计时指标 |
workers | 1 | 用于指定输出的工作程序数量 |
过滤器插件
Logstash 支持各种过滤器插件来解析和转换输入日志,使其具有更结构化且易于查询的格式。
使用过滤器插件的语法如下所示:
filter { Plugin name { Setting 1…… Setting 2…….. } }
您可以使用以下命令下载过滤器插件:
>logstash-plugin install logstash-filter-<plugin name>
Logstash-plugin 实用程序位于 Logstash 安装目录的 bin 文件夹中。下表描述了 Logstash 提供的输出插件。
序号 | 插件名称和描述 |
---|---|
1 | aggregate 此插件收集或聚合来自各种相同类型事件的数据,并在最终事件中对其进行处理。 |
2 | alter 它允许用户更改日志事件的字段,mutate 过滤器无法处理这些字段。 |
3 | anonymize 它用于用一致的哈希值替换字段的值。 |
4 | cipher 它用于在将输出事件存储到目标源之前对其进行加密。 |
5 | clone 它用于在 Logstash 中创建输出事件的副本。 |
6 | collate 它根据时间或计数合并来自不同日志的事件。 |
7 | csv 此插件根据分隔符解析输入日志中的数据。 |
8 | date 它解析事件中字段中的日期,并将其设置为事件的时间戳。 |
9 | dissect 此插件帮助用户从非结构化数据中提取字段,并使 grok 过滤器能够正确解析它们。 |
10 | drop 它用于删除所有相同类型或任何其他相似性的事件。 |
11 | elapsed 它用于计算开始事件和结束事件之间的时间。 |
12 | Elasticsearch 它用于将 Elasticsearch 中存在的先前日志事件的字段复制到 Logstash 中的当前事件。 |
13 | extractnumbers 它用于从日志事件中的字符串中提取数字。 |
14 | geoip 它在事件中添加一个字段,该字段包含日志事件中存在的 IP 所在位置的经纬度。 |
15 | grok 它是常用的过滤器插件,用于解析事件以获取字段。 |
16 | i18n 它删除日志事件中字段中的特殊字符。 |
17 | json 它用于在事件中或事件的特定字段中创建结构化的 Json 对象。 |
18 | kv 此插件在解析日志数据中的键值对时很有用。 |
19 | metrics 它用于聚合指标,例如计算每个事件中的时间持续时间。 |
20 | multiline 它也是常用的过滤器插件之一,它可以帮助用户将多行日志数据转换为单个事件。 |
21 | mutate 此插件用于重命名、删除、替换和修改事件中的字段。 |
22 | range 它用于检查事件中字段的数值是否在预期范围内,以及字符串的长度是否在范围内。 |
23 | ruby 它用于运行任意 Ruby 代码。 |
24 | sleep 这使 Logstash 休眠指定的时间。 |
25 | split 它用于拆分事件的字段,并将所有拆分值放置在该事件的克隆中。 |
26 | xml 它用于通过解析日志中存在的 XML 数据来创建事件。 |
编解码器插件
编解码器插件可以是输入或输出插件的一部分。这些插件用于更改或格式化日志数据的表示形式。Logstash 提供了多个编解码器插件,如下所示:
序号 | 插件名称和描述 |
---|---|
1 | avro 此插件将 Logstash 事件编码序列化为 avro 数据或将 avro 记录解码为 Logstash 事件。 |
2 | cloudfront 此插件读取来自 AWS cloudfront 的编码数据。 |
3 | cloudtrail 此插件用于读取来自 AWS cloudtrail 的数据。 |
4 | collectd 它读取通过 UDP 收集的称为 collectd 的二进制协议的数据。 |
5 | compress_spooler 它用于在 Logstash 中将日志事件压缩到分段批处理中。 |
6 | dots 这用于通过为每个事件设置一个点到 stdout 来进行性能跟踪。 |
7 | es_bulk 这用于将 Elasticsearch 中的大量数据转换为 Logstash 事件,包括 Elasticsearch 元数据。 |
8 | graphite 此编解码器将数据从 graphite 读取到事件中,并将事件更改为 graphite 格式的记录。 |
9 | gzip_lines 此插件用于处理 gzip 编码的数据。 |
10 | json 这用于将 Json 数组中的单个元素转换为单个 Logstash 事件。 |
11 | json_lines 它用于处理具有换行符分隔符的 Json 数据。 |
12 | line 此插件将以单行读取和写入事件,这意味着换行符分隔符之后将出现一个新事件。 |
13 | multiline 它用于将多行日志数据转换为单个事件。 |
14 | netflow 此插件用于将 nertflow v5/v9 数据转换为 logstash 事件。 |
15 | nmap 它将 nmap 结果数据解析为 XML 格式。 |
16 | plain 这读取没有分隔符的文本。 |
17 | rubydebug 此插件将使用 Ruby awesome print 库写入输出 Logstash 事件。 |
构建您自己的插件
您还可以创建自己的 Logstash 插件,以满足您的需求。Logstash-plugin 实用程序用于创建自定义插件。在这里,我们将创建一个过滤器插件,它将在事件中添加自定义消息。
生成基本结构
用户可以使用 logstash-plugin 实用程序的 generate 选项生成必要的文件,或者它也可以在 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
我们将消息更改为:default ⇒ "Hi, You are learning this on 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
input.log
以下代码块显示了输入日志数据。
INFO - 48566 - TRANSACTION_START - start
output.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。
有关发布的更多信息,请参阅以下网址:
https://elastic.ac.cn/guide/en/logstash/current/contributing-to-logstash.html