【问题标题】:How to add a ruby code inside of the logstash config file?如何在 logstash 配置文件中添加 ruby​​ 代码?
【发布时间】:2018-08-30 10:28:04
【问题描述】:

我尝试使用 logstash 将日志发送到 Windows 事件。添加一些 ruby​​ 代码后;它在错误下方创建。如何将日志发送到 windows 事件?


input {
  file {
    type => "json"
    path => ["C:/Temp/logs/*.json"]
    start_position => "beginning"
    codec => "json"
    discover_interval => 120
    stat_interval => 60
    sincedb_write_interval => 60
    close_older => 60
  }
}
filter {
mutate {
    remove_field => [ "path" ] 

}
   ruby {
      code => "
           require 'win32/eventlog'
logger = Win32::EventLog.new
logger.report_event(:event_type => Win32::EventLog::INFO, :data => "a test event log entry")
        "
        }
   }
}
output {
    stdout {
        codec => rubydebug
    }



    elasticsearch {
       hosts => ["http://loguser:xxxx@192.158.5.84:333"]
       index => "logstash-%{+YYYY.MM}"
    }
}

错误:


[2018-03-20T09:51:28,629][ERROR][logstash.agent           ] Cannot create pipeline {:reason=>"Expected one of #, {, } at line 23, column 75 (byte 464) after filter {\nmutate {\n    remove_field => [ \"path\" ] \n\n}\n   ruby {\n     init => \" require 'win32/eventlog' \n\t \"\n     code => \"\n      logger = Win32::EventLog.new\n      logger.report_event(:event_type => Win32::EventLog::INFO, :data => \""}

【问题讨论】:

    标签: ruby elasticsearch logstash elastic-stack


    【解决方案1】:

    从问题中突出显示的语法可以看出,您使用的双引号存在问题。注意代码块中的黑色字母:

    "
    require 'win32/eventlog'
    logger = Win32::EventLog.new
    logger.report_event(:event_type => Win32::EventLog::INFO, :data => "a test event log entry")
    "
    

    您将代码块用双引号括起来,但也使用它们来定义事件中的字符串:"a test event log entry"。字符串的第一个引号结束了代码块,LogStash 报告了一个语法错误,因为它希望你用 } 关闭指令。

    您还可以在错误消息中看到这一点,它将值作为 data 属性报告为单双引号::data => \"

    尝试将字符串括在单引号中:'a test event log entry' 以解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 2015-01-31
      • 2013-03-09
      • 2011-03-17
      • 1970-01-01
      相关资源
      最近更新 更多