您现在的位置是:首页» windows系统» logstash elasticsearch配置,logstash elasticsearch添加字段

logstash elasticsearch配置,logstash elasticsearch添加字段

2023-12-05 02:59:23
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家! 配置 Logstash,你需要创建一个配置文件来指定想要使用的插件和每个插件的设置。可以引用配置中的事件字段,并在事件满足某些条件时使用条件来处理它们。运行logstash时使用-f指

今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!

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

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

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

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

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

引用事件日期和类型:path=>"/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执行。

写入事件所用的索引。可以动态的使用%{foo}语法,它的默认值是:

"logstash-%{+YYYY.MM.dd}",以天为单位分割的索引,使你可以很容易的删除老的数据或者搜索指定时间范围内的数据。

索引不能包含大写字母。推荐使用以周为索引的ISO 8601格式,例如logstash-%{+xxxx.ww}

意http协议使用的是http地址,端口是9200,示例:

定义es索引的type,一般你应该让同一种类型的日志存到同一种type中,比如debug日志和error日志存到不同的type中

如果你愿意,你可以设置指向你自己模板的路径。如果没有设置,那么默认的模板会被使用

这个配置项用来定义在Elasticsearch中模板的命名

设置为true表示如果你有一个自定义的模板叫logstash,那么将会用你自定义模板覆盖默认模板logstash

设置为false将关闭logstash自动管理模板功能

比如你定义了一个自定义模板,更加字段名动态生成字段,那么应该设置为false

ELK Stack在入门学习过程中,必然会碰到自己修改定制索引映射(mapping)乃至模板(template)的问题。

这时候,不少比较认真看 Logstash文档的新用户会通过下面这段配置来制定自己的模板策略:

然而随后就发现,自己辛辛苦苦修改出来的模板,通过 curl-XGET' 127.0.0.1:9200/_template/myname'看也确实上传成功了,但实际新数据索引创建出来,就是没生效!

这个原因是:Logstash默认会上传一个名叫 logstash的模板到 ES里。如果你在使用上面这个配置之前,曾经运行过 Logstash(一般来说都会),那么 ES里就已经存在这么一个模板了。你可以curl-XGET' 127.0.0.1:9200/_template/logstash'验证。

这个时候,ES里就变成有两个模板,logstash和 myname,都匹配 logstash-*索引名,要求设置一定的映射规则了。

ES会按照一定的规则来尝试自动 merge多个都匹配上了的模板规则,最终运用到索引上

其中要点就是: template是可以设置 order参数的!而不写这个参数,默认的 order值就是 0。order值越大,在 merge规则的时候优先级越高。

所以,解决这个问题的办法很简单:在你自定义的 template里,加一行,变成这样:

当然,其实如果只从 Logstash配置角度出发,其实更简单的办法是:直接修改原来默认的 logstash模板,然后模板名称也不要改,就好了:

在使用logstash收集日志的时候,我们一般会使用logstash自带的动态索引模板,虽然无须我们做任何定制操作,就能把我们的日志数据推送到elasticsearch索引集群中

但是在我们查询的时候,就会发现,默认的索引模板常常把我们不需要分词的字段,给分词了,这样以来,我们的比较重要的聚合统计就不准确了:

所以这时候,就需要我们自定义一些索引模板了

在logstash与elasticsearch集成的时候,总共有如下几种使用模板的方式:

ElasticSearch默认自带了一个名字为”logstash”的模板,默认应用于Logstash写入数据到ElasticSearch使用

缺点:无法自定义一些配置,例如:分词方式

使用第二种,适合小规模集群的日志收集

需要在logstash的output插件中使用template指定本机器上的一个模板json路径,例如 template=>"/tmp/logstash.json"

缺点:因为分散在Logstash Indexer机器上,维护起来比较麻烦

第三种需要在elasticsearch的集群中的config/templates路径下配置模板json,在elasticsearch中索引模板可分为两种

适合索引字段数据固定的场景,一旦配置完成,不能向里面加入多余的字段,否则会报错

优点:scheam已知,业务场景明确,不容易出现因字段随便映射从而造成元数据撑爆es内存,从而导致es集群全部宕机,维护比较容易,可动态更改,全局生效。

缺点:字段数多的情况下配置稍繁琐

一个静态索引模板配置例子如下:

适合字段数不明确,大量字段的配置类型相同的场景,多加字段不会报错

优点:可动态添加任意字段,无须改动scheaml,

缺点:如果添加的字段非常多,有可能造成es集群宕机

一个动态索引模板配置例子如下:

只设置message字段分词,其他的字段默认都不分词

我们创建一个自定义Template动态模板,这个模板指定匹配所有以”go_logsindex“开始的索引,并且指定允许添加新字段,匹配所有string类型的新字段会创建一个raw的嵌套字段,这个raw嵌套字段类型也是string,但是是not_analyzed不分词的(主要用于解决一些analyzed的string字段无法做统计,但可以使用这个raw嵌套字段做统计)

第三种方式统一管理Template最好,推荐使用第三种方式,但是具体问题具体分析。例如场景是Logstash和ElasticSearch都在一台服务器,第二种就比较好

定制索引模板,是搜索业务中一项比较重要的步骤,需要注意的地方有很多,比如:

wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com