JDB C не работает для подключения logsta sh и mongoDB - PullRequest
1 голос
/ 13 февраля 2020

This is the Logstash Configuration file

Эта конфигурация выводит как [невозможно подключиться к базе данных и не найден подходящий драйвер!], Я использую logsta sh версия 7.5.1

1 Ответ

2 голосов
/ 13 февраля 2020

Вот решение SOlved ссылка для приведенного ниже кода. Пожалуйста, ссылка ссылка для более подробной информации

input {
    jdbc {
        jdbc_driver_library => "mongojdbc1.2.jar"
        jdbc_driver_class => "com.dbschema.MongoJdbcDriver"
        jdbc_connection_string => "jdbc:mongodb://DB_ADDRESS:27017/DB_NAME"
        jdbc_validate_connection => true
        jdbc_user => ""
        clean_run => false
        record_last_run => true
        last_run_metadata_path => "/path/.logstash_jdbc_last_run"
        schedule => "*/10 * * * * *"
        jdbc_default_timezone => "YOUR_TIMEZONE"
        statement =>
        "
                    //well, actually this is JavaScript code. And was written in pure blood :(
                    var lastValue = :sql_last_value; //the last saved  date  that was scheduled to run query for
                    var HALF_HOUR_OFFSET = 1800000;

                    var extractedDate = lastValue.substring(0,10); //parsing the date of the last saved date
                    var year = Number(extractedDate.substring(0,4));
                    var month = Number(extractedDate.substring(5,7));
                    var day = Number(extractedDate.substring(8,10));

                    var extractedTime = lastValue.substring(11,23); //parsing the time of the last saved date
                    var hour = Number(extractedTime.substring(0,2));
                    var minute = Number(extractedTime.substring(3,5));
                    var seconds = Number(extractedTime.substring(6,8));
                    var miliseconds = Number(extractedTime.substring(9,12));

                    var upperEpoch = new Date(year,month-1,day,hour,minute,seconds,miliseconds).getTime(); //dates start from 0, that's why the minus 1
                    var bottomEpoch = upperEpoch - HALF_HOUR_OFFSET;

                    db.DB_COLLECTION.find({ COLLECTION_FIELD: { $gte : bottomEpoch, $lte: upperEpoch} },{'_id': false}); //we omit the 'id' since it irrelevant and also cause deserialize exception
                "
    }
}
...