Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logstash 加上「;“类型”;我的自定义输入插件_Logstash_Logstash Grok_Logstash Configuration - Fatal编程技术网

Logstash 加上「;“类型”;我的自定义输入插件

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 {

我正在尝试添加“type”字段,在过滤到输入插件时可以将其用作标记。 例如,我可以在“文件”输入插件中添加“类型”,然后过滤它。 代码:

我查看了文件输入插件的实现,没有看到任何与“type”字段相关的字段

所以我试着这样添加它:

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
,那么使用变量并将其添加为已传输事件的一部分仍然不起作用。