Initial commit
This commit is contained in:
		
							parent
							
								
									30a9ac2a62
								
							
						
					
					
						commit
						36d37ad579
					
				
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								README.md
									
									
									
									
									
								
							@ -1,4 +1,26 @@
 | 
				
			|||||||
logstash-jdbc
 | 
					logstash-jdbc
 | 
				
			||||||
=============
 | 
					=============
 | 
				
			||||||
 | 
					JDBC output plugin for Logstash.
 | 
				
			||||||
 | 
					This plugin is provided as an external plugin and is not part of the Logstash project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
JDBC output for Logstash
 | 
					Warning
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					This has not yet been extensively tested with all JDBC drivers and may not yet work for you.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Installation
 | 
				
			||||||
 | 
					------------
 | 
				
			||||||
 | 
					  - Copy logstash directory contents into your logstash installation.
 | 
				
			||||||
 | 
					  - Add JDBC jar files to vendor/jar/jdbc in your logstash installation
 | 
				
			||||||
 | 
					  - Configure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example configuration
 | 
				
			||||||
 | 
					---------------------
 | 
				
			||||||
 | 
					```output {
 | 
				
			||||||
 | 
						jdbc {
 | 
				
			||||||
 | 
							driver_class => 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
 | 
				
			||||||
 | 
							connection_string => "jdbc:sqlserver://server:1433;databaseName=databasename;user=username;password=password;autoReconnect=true;"
 | 
				
			||||||
 | 
							statement => [ "INSERT INTO filezilla (host, connection_id, timestamp, username, client, command) VALUES(?, ?, ?, ?, ?, ?)", "%{host}", "%{connection_id}", "%{timestamp}", "%{username}", "%{client}", "%{command}" ]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* vim: set ts=4 sw=4 tw=0 :*/
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										47
									
								
								logstash/lib/logstash/outputs/jdbc.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								logstash/lib/logstash/outputs/jdbc.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					# encoding: utf-8
 | 
				
			||||||
 | 
					require "logstash/outputs/base"
 | 
				
			||||||
 | 
					require "logstash/namespace"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LogStash::Outputs::Jdbc < LogStash::Outputs::Base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  config_name "jdbc"
 | 
				
			||||||
 | 
					  milestone 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Driver class
 | 
				
			||||||
 | 
					  config :driver_class, :validate => :string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # connection string
 | 
				
			||||||
 | 
					  config :connection_string, :validate => :string, :required => true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # [ "insert into table (message) values(?)", "%{message}" ] 
 | 
				
			||||||
 | 
					  config :statement, :validate => :array, :required => true
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  public
 | 
				
			||||||
 | 
					  def register
 | 
				
			||||||
 | 
					    @logger.info("Starting up JDBC")
 | 
				
			||||||
 | 
					    require 'java'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    jarpath = File.join(File.dirname(__FILE__), "../../../vendor/jar/jdbc/*.jar")
 | 
				
			||||||
 | 
					    @logger.info(jarpath)
 | 
				
			||||||
 | 
					    Dir[jarpath].each do |jar|
 | 
				
			||||||
 | 
					      @logger.debug("JDBC loaded jar", :jar => jar)
 | 
				
			||||||
 | 
					      require jar
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    import @driver_class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    driver = Object.const_get(@driver_class[@driver_class.rindex('.') + 1, @driver_class.length]).new
 | 
				
			||||||
 | 
					    @connection = driver.connect(@connection_string, java.util.Properties.new)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @logger.debug("JDBC", :connection => @connection)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def receive(event)
 | 
				
			||||||
 | 
					    return unless output?(event)
 | 
				
			||||||
 | 
					    statement = @connection.prepareStatement(@statement[0])
 | 
				
			||||||
 | 
					    @statement[1..-1].each_with_index { |i, idx| statement.setString(idx + 1, event.sprintf(i)) }
 | 
				
			||||||
 | 
					    @logger.debug("Sending SQL to server", :event => event, :sql => statement.toString())
 | 
				
			||||||
 | 
					    statement.executeUpdate()
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end # class LogStash::Outputs::jdbc
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user