Доступ к подстановочному значению поля JSON в выражении Logstash JDBC - PullRequest
0 голосов
/ 24 мая 2018

Мне интересно, есть ли способ получить и получить имя подполя поля в json, не зная его ключа.

Пример:

{
    "fields": {
        "Percent_Processor_Time": 1
    },
    "name": "win_cpu",
        "tags": {
        "host": "Test",
        "instance": "_Total",
        "objectname": "Processor"
    },
    "timestamp": 1526593441
}

В этом выводе jdbc:

jdbc {
      driver_jar_path => '${LOGSTASH_HOME}/vendor/jar/jdbc/mssql-jdbc-6.2.2.jre8.jar'
      connection_string => "jdbc:sqlserver://database;database    Name=test;user=test;password=test"
      statement => [ "exec stream_mss.ins_system_metrics ?, ?, ?, '', ?, ?", "[tags][host]", "@timestamp", "name", "processor.time.percent","[tags][instance]", "[fields][Percent_Processor_Time]" ]
   }

Я хочу получить доступ к полю json в поле «fields» json без необходимости знатьключ к этому.Я хочу этого, потому что вход, который я получаю, имеет нестатический ключ для этого поля, поэтому я должен написать отдельные выходные данные jdbc для каждого отдельного ключа поля.Также я хотел бы взять ключ для этого поля и использовать его.

Итак, как будет выглядеть мой идеальный вывод jdbc.

   json {
        @field_name = get_field_name in "fields"
   }
   jdbc {
              driver_jar_path => '${LOGSTASH_HOME}/vendor/jar/jdbc/mssql-jdbc-6.2.2.jre8.jar'
              connection_string => "jdbc:sqlserver://database;database    Name=test;user=test;password=test"
              statement => [ "exec stream_mss.ins_system_metrics ?, ?, ?, '', ?, ?", "[tags][host]", "@timestamp", "name", "@field_name","[tags][instance]", "[fields][(wildcard access)]" ]
    }

Или что-то в этой сфере идей.

Я открыт для использования любых плагинов, которые Logstash предлагает для решения этой проблемы.

Не обращайте внимания на то, что моя строка connection_string не является реальной.Я опустил вещи.

1 Ответ

0 голосов
/ 25 июня 2018

Я не нашел хорошего способа сделать это.Мне просто нужно было жестко закодировать каждый возможный запрос.

...