Logstash 加上「;“类型”;我的自定义输入插件
我正在尝试添加“type”字段,在过滤到输入插件时可以将其用作标记。 例如,我可以在“文件”输入插件中添加“类型”,然后过滤它。 代码: 我查看了文件输入插件的实现,没有看到任何与“type”字段相关的字段 所以我试着这样添加它:Logstash 加上「;“类型”;我的自定义输入插件,logstash,logstash-grok,logstash-configuration,Logstash,Logstash Grok,Logstash Configuration,我正在尝试添加“type”字段,在过滤到输入插件时可以将其用作标记。 例如,我可以在“文件”输入插件中添加“类型”,然后过滤它。 代码: 我查看了文件输入插件的实现,没有看到任何与“type”字段相关的字段 所以我试着这样添加它: input { myPlugin { path => "/var/log/%{type}.%{+yyyy.MM.dd.HH}" type => "myType" } } input { file {
input {
myPlugin {
path => "/var/log/%{type}.%{+yyyy.MM.dd.HH}"
type => "myType"
}
}
input {
file {
path => "/var/log/%{type}.%{+yyyy.MM.dd.HH}"
type => "myType"
}
}
filter {
if [type] == "myType"{
add_field => {
"somefield" => "this is a sample" <--- this will actually create the field
}
add_tag => "myType" <--- this would actually create a tag for your es record if it matches the filter
}
}
但是过滤根本不起作用
如何将此“标记”(或任何标记)添加到我的插件?的功能是将其用于过滤:
类型主要用于过滤器激活
因此,除非在过滤器下创建了一个新字段,否则实际上无法看到正在创建的新字段,如下所示:
input {
myPlugin {
path => "/var/log/%{type}.%{+yyyy.MM.dd.HH}"
type => "myType"
}
}
input {
file {
path => "/var/log/%{type}.%{+yyyy.MM.dd.HH}"
type => "myType"
}
}
filter {
if [type] == "myType"{
add_field => {
"somefield" => "this is a sample" <--- this will actually create the field
}
add_tag => "myType" <--- this would actually create a tag for your es record if it matches the filter
}
}
输入{
文件{
path=>“/var/log/%{type}.%{+yyyy.MM.dd.HH}”
类型=>“myType”
}
}
过滤器{
如果[type]=“myType”{
添加_字段=>{
“somefield”=>“这是一个示例”“myType”,恐怕不是:)出于某种原因,为文件(或tcp、udp等)写入type=>“something”过滤部分正在识别输入,即使文件输入插件中没有这样的字段。但是,当我添加时,按类型过滤使用情况,是不起作用的。我如何确保我的插件支持“类型”?@Itzik984你的意思是,你试图在过滤器本身中直接使用类型?我还尝试在我的插件中添加标记,但没有如果插件继承自Logstash::Inputs::Base
,那么使用变量并将其添加为已传输事件的一部分仍然不起作用。