【问题标题】:Logstash ruby filter to parse json and get key field as a valueLogstash ruby​​ 过滤器解析 json 并获取关键字段作为值
【发布时间】:2018-03-28 02:09:08
【问题描述】:

您好,我的 logstash ruby​​ 过滤器代码如下。

ruby {
    code => "jsondata = event.get('[json]')
           puts jsondata
           jsondata.to_hash
           jsondata.each { |key, value|
               puts key
               puts value
               event.set(['json']['#{key}']['command_ip'], key)
           }
        "
}

我的 json 字符串是

{
"182.1xx.xx.xx": {
    "status": "Failed",
    "result": "Error String"
},
"192.1xx.xx.xx": {
    "status": "Success"
}
}

我需要的最终结果应该是这样的。如何将键值插入到 json 块中。

{
"182.1xx.xx.xx": {
    "host"   : "182.1xx.xx.xx"
    "status": "Failed",
    "result": "Error String"
},
"192.1xx.xx.xx": {
    "host"   : "192.1xx.xx.xx"
    "status": "Success"
}
}

但是当我尝试插入可以从 json 键中提取的主机值时,它会抛出异常,因为“发生 Ruby 异常:没有将字符串隐式转换为整数”。

请帮我解决这个问题。

【问题讨论】:

    标签: ruby logstash


    【解决方案1】:

    通常,当您收到不存在您尝试取消引用的字段的事件时,会导致此类错误。如果您在您的 ruby​​ 过滤器周围加上:

    if [json] {
    // ruby filter here
    }
    

    错误可能会消失。即使您的源数据始终填充了值,我也遇到过您在过滤器中获得的事件可能没有预料到的情况。

    【讨论】:

      猜你喜欢
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多