Linux - 安装 LogStash

下载

https://artifacts.elastic.co/downloads/logstash/logstash-6.7.1.tar.gz

安装

上传下载过后的压缩包到自己的服务器目录

# 进入目录
cd /opt/software

# 解压到指定目录
tar -zxvf logstash-6.7.1.tar.gz -C /usr/local

配置

新建配置文件

cp logstash-sample.conf logstash-test.conf

# 进入logstash数据目录
cd /usr/local/logstash-6.7.1/data
# 新建结果保存目录
mkdir metadata
# 新建抽取脚本目录
mkdir sql

修改配置文件

jdbc_driver_library: 数据库驱动存放位置

statement_filepath:抽取脚本存放位置

last_run_metadata_path:运行结果保存位置

部分配置文件

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
    jdbc {
    	#驱动地址
    	jdbc_driver_library => "/home/xis/ojdbc8-12.2.0.1.jar"
	    # jdbc_driver_class => "com.mysql.jdbc.Driver"
	    jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
	    jdbc_connection_string => "jdbc:oracle:thin:@192.168.40.104:1521:hczz"
	    jdbc_user => zdkz
	    jdbc_password => zdkz
	    #仅提取自上次运行以来更改的数据一般使用自增id或者使用update_time 最后更新时间
	    #sql 语句文件,也可以直接写SQL,如statement => "select * from table1"
	    #statement => "select * from tb_yw_shxx where del = '0' and modify_date > :sql_last_value"
        statement_filepath => "/usr/local/logstash-6.7.1/data/sql/shxx.sql"
        #是否使用column 作为增量字段
	    use_column_value => true
	    #增量字段的类型,目前只有数字(numeric)和时间类型(timestamp),默认是数字类型
	    tracking_column_type => "timestamp"
	    #以id做为增量值,用于增量同步,需是数据库字段
	    tracking_column => "modify_date"
	    #是否记录上次执行结果,true表示会将上次执行结果的tracking_column字段的值保存到last_run_metadata_path指定的文件中
	    record_last_run => true
	    #上面运行结果的保存位置
	    last_run_metadata_path => "/usr/local/logstash-6.7.1/data/metadata/shxx"	    
		# 是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false);
		lowercase_column_names => true       	    
	    #是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false
	  	clean_run => false
	  	#定时设置,corn表达式
      	schedule => "* * * * *"
      	#ES中type
      	type => "shxx"
	}	
    jdbc {
    	#驱动地址
    	jdbc_driver_library => "/home/xis/ojdbc8-12.2.0.1.jar"
	    # jdbc_driver_class => "com.mysql.jdbc.Driver"
	    jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
	    jdbc_connection_string => "jdbc:oracle:thin:@192.168.40.104:1521:hczz"
	    jdbc_user => zdkz
	    jdbc_password => zdkz
	    #仅提取自上次运行以来更改的数据一般使用自增id或者使用update_time 最后更新时间
	    #sql 语句文件,也可以直接写SQL,如statement => "select * from table1"
	    #statement => "select * from tb_yw_zdxx where del = '0' and modify_date > :sql_last_value order"
        statement_filepath => "/usr/local/logstash-6.7.1/data/sql/zdxx.sql"
        #是否使用column 作为增量字段
	    use_column_value => true
	    #增量字段的类型,目前只有数字(numeric)和时间类型(timestamp),默认是数字类型
	    tracking_column_type => "timestamp"
	    #以id做为增量值,用于增量同步,需是数据库字段
	    tracking_column => "modify_date"
	    #是否记录上次执行结果,true表示会将上次执行结果的tracking_column字段的值保存到last_run_metadata_path指定的文件中
	    record_last_run => true
	    #上面运行结果的保存位置
	    last_run_metadata_path => "/usr/local/logstash-6.7.1/data/metadata/zdxx"	    
		# 是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false);
		lowercase_column_names => true       	    
	    #是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false
	  	clean_run => false
	  	#定时设置,corn表达式
      	schedule => "* * * * *"
		#ES中type
      	type => "zdxx"      	
	}				    	
}

filter {
    # 解决默认时区与当前时区相差8小时问题
	ruby { 
		code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)" 
	}
	ruby {
		code => "event.set('@timestamp',event.get('timestamp'))"
	}
	mutate {
		remove_field => ["timestamp"]
	}
}

output {
	if[type] == "shxx"{
		elasticsearch {
			#ES ip:port
			hosts => ["localhost:9200"]
			#ES索引名
			index => "tb_yw_shxx"
			document_type => "doc"
			document_id => "%{id}"
		}
	}
	if[type] == "zdxx"{
		elasticsearch {
			#ES ip:port
			hosts => ["localhost:9200"]
			#ES索引名
			index => "tb_yw_zdxx"
			document_type => "doc"
			document_id => "%{id}"	
		}
	}
}

启动

# 进入logstash安装目录
cd /usr/local/logstash-6.7.1/bin

# 启动
logstash -f ../config/logstash-test.conf

后台启动

nohup logstash -f ../config/logstash-test.conf

停止

查看进程号 ps -ef|grep logstash

杀掉进程 kill -9 #logstash进程号


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!