logstash 7.X分割日志ruby code语法的调整 知识 Logstash

愚人乙 4月前 518

最早使用logstash 2.X,语法格式是这么写的:

ruby {
   init => "@kname = ['server_addr','domain','remote_addr','http_x_forwarded_for','time_local','request_uri','request_length','bytes_sent','request_time','status','upstream_addr','upstream_cache_status','upstream_response_time','request_method','http_user_agent','upstream_status']"
   code => "event.append(Hash[@kname.zip(event['message'].split('`'))])"
}

迁移到logstash 7.X直接不能使用,报错:

[2019-07-04T09:51:14,389][ERROR][logstash.filters.ruby    ] Ruby exception occurred: undefined method `[]' for #<LogStash::Event:0x355eb943>
[2019-07-04T09:51:14,389][ERROR][logstash.filters.ruby    ] Ruby exception occurred: undefined method `[]' for #<LogStash::Event:0x490c994c>

查了各种资料,使用新的ruby语法格式,问题解决:

ruby {
  init => "@kname = ['server_addr','domain','remote_addr','http_x_forwarded_for','time_local','request_uri','request_length','bytes_sent','request_time','status','upstream_addr','upstream_cache_status','upstream_response_time','request_method','http_user_agent','upstream_status','key','server_protocol']"
  code => "
    new_event = LogStash::Event.new(Hash[@kname.zip(event.get('message').split('`'))])
    event.append(new_event)"
}


最后于 4月前 被愚人乙编辑 ,原因:
最新回复 (2)
  • 九五霸霸 5天前
    0 引用 2
    厉害,我今天花了一天时间没整出个屁来,我猜也是语法变了,但是官网连个屁都没有,根本没有这种案例。最后谷歌搜到这来了...
  • 愚人乙 5天前
    0 引用 3
    九五霸霸 厉害,我今天花了一天时间没整出个屁来,我猜也是语法变了,但是官网连个屁都没有,根本没有这种案例。最后谷歌搜到这来了...
    欢迎发帖分享经验,哈哈
    • 运维开源项目互助社区—致敬开源
      4
        立即登录 立即注册 
返回