Мне интересно, есть ли способ получить и получить имя подполя поля в 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 не является реальной.Я опустил вещи.