Как перенести данные Mysql вasticsearch с помощью logstash - PullRequest
0 голосов
/ 26 апреля 2019

Мне нужно краткое объяснение того, как я могу преобразовать данные MySQL в Elastic Search, используя logstash.может кто-нибудь объяснить пошаговый процесс по этому поводу

Ответы [ 3 ]

1 голос
/ 26 апреля 2019

Вы можете сделать это, используя входной плагин jdbc для logstash.

Здесь - пример конфигурации.

0 голосов
/ 09 мая 2019

Позвольте мне предоставить вам набор инструкций высокого уровня.

  • Установите Logstash и Elasticsearch.
  • В папке binstash bin скопируйте jar ojdbc7.jar.
  • Для logstash создайте файл конфигурации, например: config.yml
# 
input {
    # Get the data from database, configure fields to get data incrementally
    jdbc {
        jdbc_driver_library => "./ojdbc7.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
        jdbc_connection_string => "jdbc:oracle:thin:@db:1521:instance"
        jdbc_user => "user"
        jdbc_password => "pwd"

        id => "some_id"

        jdbc_validate_connection => true
        jdbc_validation_timeout => 1800
        connection_retry_attempts => 10
        connection_retry_attempts_wait_time => 10

        #fetch the db logs using logid
        statement => "select * from customer.table where logid > :sql_last_value order by logid asc"

        #limit how many results are pre-fetched at a time from the cursor into the client’s cache before retrieving more results from the result-set
        jdbc_fetch_size => 500
        jdbc_default_timezone => "America/New_York"

        use_column_value => true
        tracking_column => "logid"
        tracking_column_type => "numeric"
        record_last_run => true

        schedule => "*/2 * * * *"

        type => "log.customer.table"
        add_field => {"source" => "customer.table"}
        add_field => {"tags" => "customer.table" } 
        add_field => {"logLevel" => "ERROR" }

        last_run_metadata_path => "last_run_metadata_path_table.txt"
    }

}

# Massage the data to store in index
filter {
    if [type] == 'log.customer.table' {
        #assign values from db column to custom fields of index
        ruby{
            code => "event.set( 'errorid', event.get('ssoerrorid') );
                    event.set( 'msg', event.get('errormessage') );
                    event.set( 'logTimeStamp', event.get('date_created'));
                    event.set( '@timestamp', event.get('date_created'));
                    "
        }
        #remove the db columns that were mapped to custom fields of index
        mutate {
            remove_field => ["ssoerrorid","errormessage","date_created" ]
        }
    }#end of [type] == 'log.customer.table' 
} #end of filter

# Insert into index
output {
    if [type] == 'log.customer.table' {
        amazon_es {
            hosts => ["vpc-xxx-es-yyyyyyyyyyyy.us-east-1.es.amazonaws.com"]
            region => "us-east-1"
            aws_access_key_id => '<access key>'
            aws_secret_access_key => '<secret password>'
            index => "production-logs-table-%{+YYYY.MM.dd}"
        }
    }
}
  • Перейти в bin, Запуск от имени logstash -f config.yml
0 голосов
/ 26 апреля 2019

Это широкий вопрос, я не знаю, насколько вы знакомы с MySQL и ES.Допустим, у вас есть стол user.Вы можете просто сбросить его как csv и загрузить его на ES.но если у вас есть динамические данные, такие как MySQL, как конвейер, вам нужно написать Script, чтобы выполнить эти вещи.в любом случае вы можете проверить приведенную ниже ссылку, чтобы получить базовые знания, прежде чем спросить, как.

Как вывести дамп mysql?

Как загрузить данные в ES

Кроме того, поскольку вы, вероятно, хотите знать, какконвертировать CSV в файл json, который является лучшим набором для понимания ES.

Как конвертировать CSV в JSON

...