logstashを使用してmysqlをDockerのelasticsearchに同期

6688 ワード

dockerhubのlogstashミラーを引き抜く
docker pull logstash:   

ミラーファイルの構築
FROM logstash

#  input  
RUN logstash-plugin install logstash-input-jdbc
#  output  
RUN logstash-plugin install logstash-output-elasticsearch
#          .(CMD     docker run            )
CMD ["-f", "/some/config-dir/logstash-mysql-es.conf"]

ミラーの構築
docker build -t my-logstash

MySQLの同期にはMySQLドライバが必要です.ディレクトリをマウントする場合は、1つのディレクトリのみをマウントします.mysqlドライバとプロファイルを同じディレクトリに配置します
configディレクトリを作成し、プロファイルlogstash-mysql-es.confファイルテンプレートを作成します.
input {
 stdin { }
    jdbc {
      #  mysql        ip,    localhost 
	  # mysql jdbc connection string to our backup databse
	  jdbc_connection_string => ""
	  # the user we wish to excute our statement as
	  jdbc_user => "root"
	  jdbc_password => "root"
	  # the path to our downloaded jdbc driver  
	  jdbc_driver_library => ""
	  # the name of the driver class for mysql
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
	  jdbc_paging_enabled => "true"
	  jdbc_page_size => "50"
	  #         sql     。
	  #statement_filepath => ""
	  statement => ""
	  #          (    ) 、 、 、 、 ,   *           (    ,         )
      schedule => "* * * * *"
  }
}
	  #        
      codec => plain { charset => "UTF-8"}
	  #           
      record_last_run => true
      #             
      last_run_metadata_path => ""
      #            ,
      use_column_value => true
      tracking_column => "createtime"
      #numeric  timestamp
      tracking_column_type => timestamp
       
      #   true     last_run_metadata_path    ,         
      #clean_run => false
 
    }
 }
 
 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
      #  mysql        ip,    localhost 
      #ESIP     
	  hosts => "localhost:9200" 
	  #ES    (     )
	  index => ""
	  #  ID  
	  document_id => "%{id}"
	  document_type => ""
    }

スターティングコンテナ
docker run -d --name logstash_mysql -v /root/logstash/config:/some/config-dir/ bc8551a7b495