优秀的手机游戏下载!
首页 logstash好用不

logstash好用不

发布时间:2024-06-09 03:06:02 编辑:手游帝 浏览:511

Logstash 是 Elastic Stack 中功能最强大的 ETL 工具,相较于 beats 家族,虽然它略显臃肿,但是强在功能丰富、处理能力强大。

但是在好用的东西也得看个人掌握的技能程度,你如果都不能深入的理解,那就根本谈不上好不好用了。萝卜青菜各有所爱,最终还得看个人。

logstash 实验

配置 Logstash,你需要创建一个配置文件来指定想要使用的插件和每个插件的设置。可以引用配置中的事件字段,并在事件满足某些条件时使用条件来处理它们。运行logstash时使用-f指定配置文件。

每种类型的插件都有一个单独的部分,每个部分都包含一个或多个插件的配置选项。如果指定多个过滤器,则会按照它们在配置文件中出现的顺序进行应用。

logstash-simple.conf

Logstash中的某些配置选项需要使用事件的字段。因为输入会生成事件,所以输入块中没有要评估的字段,因为它们还不存在。

仅在过滤器和输出块内起作用。基本语法是[fieldname],引用顶级字段时可以去掉[],引用嵌套字段时,要指定完成整路径[top-level field][nested field]。

引用事件字段:increment =&gt"apache.%{[response][status]}"

引用事件日期和类型:path =&gt"/var/log/%{type}.%{+yyyy.MM.dd.HH}"

只想在特定条件下过滤或输出事件,这时可以使用条件。

还可以使用 (...) ,对表达式进行分组。

一个特殊的字段,在输出时不会成为任何事件的一部分。非常适用于做条件,扩展和构建事件字段等

包括:logstash.yaml、pipelines.yml、jvm.options、log4j2.properties、startup.options

如果需要在同一个进程中运行多个管道,通过配置pipelines.yml文件来处理,必须放在path.settings文件夹中。并遵循以下结构:

不带任何参数启动Logstash时,将读取pipelines.yml文件并实例化该文件中指定的所有管道。如果使用-e或-f时,Logstash会忽略pipelines.yml文件并记录相关警告。

使用Logstash的多管道功能时,可以在同一Logstash实例中连接多个管道。此配置对于隔离这些管道的执行以及有助于打破复杂管道的逻辑很有用。

如果没有开启自动重新加载(--config.reload.automatic),可以强制Logstash重新加载配置文件并重新启动管道。

注意Logstash不会按照glob表达式中编写的文件顺序执行,是按照字母顺序对其进行排序执行的。

命令行上设置的所有参数都会覆盖logstash.yml中的相应设置。生产环境建议使用logstash.yml控制Logstash执行。

参数:

示例:

EFLK-Logstash安装配置

[root@localhost docker]# docker logs -f logstash

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

WARNING: An illegal reflective access operation has occurred

WARNING: Illegal reflective access by com.headius.backport9.modules.Modules (file:/usr/share/logstash/logstash-core/lib/jars/jruby-complete-9.2.8.0.jar) to field java.io.FileDescriptor.fd

WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

WARNING: All illegal access operations will be denied in a future release

Thread.exclusive is deprecated, use Thread::Mutex

Sending Logstash logs to /usr/share/logstash/logs which is now configured via log4j2.properties

[2021-12-26T15:58:29,328][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=&gt"path.queue", :path=&gt"/usr/share/logstash/data/queue"}

[2021-12-26T15:58:29,336][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=&gt"path.dead_letter_queue", :path=&gt"/usr/share/logstash/data/dead_letter_queue"}

[2021-12-26T15:58:29,495][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=&gt"7.5.1"}

[2021-12-26T15:58:29,507][INFO ][logstash.agent          ] No persistent UUID file found. Generating new UUID {:uuid=&gt"250e82ed-3f29-44c2-975a-6eaa38c2ccc1", :path=&gt"/usr/share/logstash/data/uuid"}

[2021-12-26T15:58:30,113][INFO ][logstash.licensechecker.licensereader] Elasticsearch pool URLs updated {:changes=&gt{:removed=&gt[], :added=&gt[http://172.17.0.2:9200/]}}

[2021-12-26T15:58:30,222][WARN ][logstash.licensechecker.licensereader] Restored connection to ES instance {:url=&gt"http://172.17.0.2:9200/"}

[2021-12-26T15:58:30,252][INFO ][logstash.licensechecker.licensereader] ES Output version determined {:es_version=&gt7}

[2021-12-26T15:58:30,253][WARN ][logstash.licensechecker.licensereader] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=&gt7}

[2021-12-26T15:58:30,368][INFO ][logstash.monitoring.internalpipelinesource] Monitoring License OK

[2021-12-26T15:58:30,370][INFO ][logstash.monitoring.internalpipelinesource] Validated license for monitoring. Enabling monitoring pipeline.

[2021-12-26T15:58:30,979][INFO ][org.reflections.Reflections] Reflections took 17 ms to scan 1 urls, producing 20 keys and 40 values

[2021-12-26T15:58:31,171][WARN ][org.logstash.instrument.metrics.gauge.LazyDelegatingGauge] A gauge metric of an unknown type (org.jruby.RubyArray) has been create for key: cluster_uuids. This may result in invalid serialization.  It is recommended to log an issue to the responsible developer/development team.

logstash好用不

[2021-12-26T15:58:31,173][INFO ][logstash.javapipeline    ] Starting pipeline {:pipeline_id=&gt"main", "pipeline.workers"=&gt4, "pipeline.batch.size"=&gt125, "pipeline.batch.delay"=&gt50, "pipeline.max_inflight"=&gt500, "pipeline.sources"=&gt["/usr/share/logstash/pipeline/logstash.conf"], :thread=&gt"#&ltThread:0x4a84adf3 run&gt"}

[2021-12-26T15:58:31,413][INFO ][logstash.inputs.beats    ] Beats inputs: Starting input listener {:address=&gt"0.0.0.0:5044"}

[2021-12-26T15:58:31,417][INFO ][logstash.javapipeline    ] Pipeline started {"pipeline.id"=&gt"main"}

[2021-12-26T15:58:31,474][INFO ][logstash.agent          ] Pipelines running {:count=&gt1, :running_pipelines=&gt[:main], :non_running_pipelines=&gt[]}

[2021-12-26T15:58:31,511][INFO ][org.logstash.beats.Server] Starting server on port: 5044

[2021-12-26T15:58:32,096][WARN ][logstash.outputs.elasticsearch] You are using a deprecated config setting "document_type" set in elasticsearch. Deprecated settings will continue to work, but are scheduled for removal from logstash in the future. Document types are being deprecated in Elasticsearch 6.0, and removed entirely in 7.0. You should avoid this feature If you have any questions about this, please visit the #logstash channel on freenode irc. {:name=&gt"document_type", :plugin=&gt&ltLogStash::Outputs::ElasticSearch bulk_path=&gt"/_monitoring/bulk?system_id=logstash&ampsystem_api_version=7&ampinterval=1s", hosts=&gt[http://172.17.0.2:9200], sniffing=&gtfalse, manage_template=&gtfalse, id=&gt"6f7cd612fa4b5c07098d8a289188039c81ec60c0daaec2f3aa43b4924615e9c0", document_type=&gt"%{[@metadata][document_type]}", enable_metric=&gttrue, codec=&gt&ltLogStash::Codecs::Plain id=&gt"plain_bfc197e9-4be2-4013-b63f-1614eb854c0a", enable_metric=&gttrue, charset=&gt"UTF-8"&gt, workers=&gt1, template_name=&gt"logstash", template_overwrite=&gtfalse, doc_as_upsert=&gtfalse, script_type=&gt"inline", script_lang=&gt"painless", script_var_name=&gt"event", scripted_upsert=&gtfalse, retry_initial_interval=&gt2, retry_max_interval=&gt64, retry_on_conflict=&gt1, ilm_enabled=&gt"auto", ilm_rollover_alias=&gt"logstash", ilm_pattern=&gt"{now/d}-000001", ilm_policy=&gt"logstash-policy", action=&gt"index", ssl_certificate_verification=&gttrue, sniffing_delay=&gt5, timeout=&gt60, pool_max=&gt1000, pool_max_per_route=&gt100, resurrect_delay=&gt5, validate_after_inactivity=&gt10000, http_compression=&gtfalse&gt}

[2021-12-26T15:58:32,128][INFO ][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=&gt{:removed=&gt[], :added=&gt[http://172.17.0.2:9200/]}}

[2021-12-26T15:58:32,141][WARN ][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=&gt"http://172.17.0.2:9200/"}

[2021-12-26T15:58:32,145][INFO ][logstash.outputs.elasticsearch] ES Output version determined {:es_version=&gt7}

[2021-12-26T15:58:32,145][WARN ][logstash.outputs.elasticsearch] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=&gt7}

[2021-12-26T15:58:32,174][INFO ][logstash.outputs.elasticsearch] New Elasticsearch output {:class=&gt"LogStash::Outputs::ElasticSearch", :hosts=&gt["http://172.17.0.2:9200"]}

[2021-12-26T15:58:32,176][INFO ][logstash.javapipeline    ] Starting pipeline {:pipeline_id=&gt".monitoring-logstash", "pipeline.workers"=&gt1, "pipeline.batch.size"=&gt2, "pipeline.batch.delay"=&gt50, "pipeline.max_inflight"=&gt2, "pipeline.sources"=&gt["monitoring pipeline"], :thread=&gt"#&ltThread:0x565fd127 run&gt"}

[2021-12-26T15:58:32,217][INFO ][logstash.javapipeline    ] Pipeline started {"pipeline.id"=&gt".monitoring-logstash"}

[2021-12-26T15:58:32,235][INFO ][logstash.agent          ] Pipelines running {:count=&gt2, :running_pipelines=&gt[:main, :".monitoring-logstash"], :non_running_pipelines=&gt[]}

[2021-12-26T15:58:32,323][INFO ][logstash.agent          ] Successfully started Logstash API endpoint {:port=&gt9600}

不知道为什么停住了,没有刷新了。

3. Logstash8.1 工作原理

Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。

作为ELK中的L,之前采用的是EFK,其中F是Filebeat,比Logstash更加轻量,但是Logstash也有丰富的过滤功能,为此变成Filebeat-&gtLogstash-&gtElasticsearch-&gtkibana

服务器安装的版本

如果正常启动,日志不会报错,同时可以查看进程是否存活。

在logstash中,包括了三个阶段:

输入input --&gt处理filter(不是必须的) --&gt输出output

配置启动端口为9600

如下例子为过滤删除指定字段RetryJob

Grok 是 Logstash 最重要的插件。你可以在 grok 里预定义好命名正则表达式,在稍后(grok参数或者其他正则表达式里)引用它。

grok表达式的打印复制格式的完整语法是下面这样的:

grok-patterns内置的正则表达式

那问题来了,写了正则表达式,如何调试呢?

可以在kibana网页中的 dev tools 里 grok Debugger 进行调试

如下例子,在页面中需填写内容:

注意:可以这两种格式, {} 和 =&gt 搭配, [] 和 , 搭配

Logstash 事件处理管道具有三个阶段: 输入 → 过滤器 → 输出 。

输入 生成事件, 过滤器 修改它们, 输出 将它们发送到其他地方。 输入 和 输出 支持编解码器,使您能够在数据进入或退出管道时对其进行编码或解码,而无需使用单独的过滤器。

一个 Logstash Pipeline 管道 包含多个 工作线程worker , Logstash Event 事件 在 Logstash Pipeline 管道 中执行过程:

Logstash 存在大量的输入插件供开箱即用, 输入插件使 Logstash 能够读取特定的事件源。

以下是一些常用的输入插件:

过滤器是 Logstash 管道中的中间处理过程。如果事件符合特定条件,您可以将过滤器与条件结合起来对事件执行操作。一些常用的过滤器包括:

有关可用过滤器的更多信息,请参阅 过滤器插件 。

输出是 Logstash 管道的最后阶段。一个事件可以通过多个输出,但是一旦所有输出处理完成,事件就完成了它的执行。一些常用的输出包括:

有关可用输出的更多信息,请参阅 输出插件 。

编解码器是一个基本的流过滤器, 作为输入或输出的一部分进行操作。编解码器使您能够轻松地将消息的传输与序列化过程分开。流行的编解码器包括json、msgpack和plain (text)。

以上就是关于logstash好用不全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

Logstash 是 Elastic Stack 中功能最强大的 ETL 工具,相较于 beats 家族,虽然它略显臃肿,但是强在功能丰富、处理能力强大。但是在…
查看详情
Logstash 是 Elastic Stack 中功能最强大的 ETL 工具,相较于 beats 家族,虽然它略显臃肿,但是强在功能丰富、处理能力强大。但是在…
查看详情
Logstash 是 Elastic Stack 中功能最强大的 ETL 工具,相较于 beats 家族,虽然它略显臃肿,但是强在功能丰富、处理能力强大。但是在…
查看详情
相关资讯
猜你喜欢