значения суммы logstash из входных данных jdbc - PullRequest
0 голосов
/ 15 марта 2019

Я новичок в logstash и пытаюсь суммировать значение из двух столбцов из моей базы данных и генерировать новый показатель.

Я исчерпал все свои альтернативы.

это мой файл conf. новая переменная, которую я создаю, это 'tod_ped' Я создал другую переменную, чтобы попытаться понять, что происходит со значением 'TOT_PROD', переменная 'valor'.

два столбца, которые я пытаюсь суммировать, это 'TOT_PROD' и 'TOT_SERV'.

input {
  jdbc {
    jdbc_driver_library => "jtds-1.3.1.jar"
    jdbc_driver_class => "Java::net.sourceforge.jtds.jdbc.Driver"
    jdbc_connection_string => "jdbc:jtds:sqlserver://xxxxxx:1433/dbPHXPSS"
    jdbc_user => "readonly"
    jdbc_password => "xxxxx"
    statement => "SELECT [NVENDA]
              ,[CPROJETO]
              ,[TECNOLOGIA]
              ,[PREVISAO]
              ,[APROVACAO]
              ,[STATUS]
              ,[CLIENTE]
              ,[TITULO]
              ,[TOT_PROD]
              ,[TOT_SERV]
              ,[QTD_H_FE]
              ,[QTD_H_SE]
              ,[QTD_H_PM]
              ,[QTD_H_DES]
              ,[TOT_DESPESA]
              ,[VENDEDOR]
        ,[TIPO_SOLICITACAO]
        ,[TECNOLOGIAPROJ]
          FROM [dbPHXPSS].[dbo].[VW_PROVISAOPROJETOS]
  where QTD_H_PM IS NOT NULL"
}
}
filter {

   ruby {
        code =>"

        hash = event.to_hash
        hash.each do |k,v|
                if v == nil
                        event.set(k,'0')
                end
                if k == 'TOT_PROD'
                        event.set(teste, v)
                end
        end
     # testing the content from de varible 'TOT_PROD'
     event.set('valor', event.get('teste'))
        "
        }

 mutate {
        convert => ["TOT_PROD","float_eu"]
  }

ruby {
        code =>"
        # adding the values to 'tot_ped'
        event.set('tot_ped', (event.get('TOT_PROD').to_f + event.get('TOT_SERV').to_f ))
        "
        }
}
output {
        elasticsearch {
                hosts => "localhost"
                index => "phoenix"
                document_type => "phxdb"
    }
        stdout {}
}

это код возврата из logstash. Я заметил, что переменная «tot_ped» не добавляет значения, а тестовая переменная возвращает значение «TOT_PROD» в виде nil.

{
            "@version" => "1",
             "cliente" => "OAB SP                        ",
            "vendedor" => "Sxxxxxxxx",
              "status" => "MEDIA",
    "tipo_solicitacao" => "0",
           "aprovacao" => "0",
            "tot_serv" => 0.0,
            "cprojeto" => "0",
            "qtd_h_se" => 132.0,
            "qtd_h_pm" => 24.0,
               "valor" => nil,
             "tot_ped" => 0.0,
           "qtd_h_des" => "0",
          "@timestamp" => 2019-03-15T13:42:15.243Z,
           "tot_prod" => 134133.7195,
         "tot_despesa" => "0",
              "titulo" => "Projeto Wifi",
            "previsao" => "0",
          "tecnologia" => "VSF",
      "tecnologiaproj" => "0",
            "qtd_h_fe" => 56.0,
              "nvenda" => 20361.0
}

Спасибо, продвинутый.

1 Ответ

0 голосов
/ 29 марта 2019

Я исправил! Проблема заключалась в том, что я использовал CAPS для имени моей переменной, я просто перешел на нижний регистр и работал!

ruby {
    code =>"
    event.set('tot_ped', ((event.get('tot_prod').to_f * 2.25) + event.get('tot_serv').to_f ))
    "
    }
...