天天看點

Logstatsh安裝使用說明

一、安裝

1)下載下傳位址:https://www.elastic.co/cn/downloads/past-releases#logstash

2)此次說明版本為:logstash-6.5.4

二、運作

1)運作一個單個腳本檔案:

cd ../deploy/logstash-6.5.4/bin/
		./logstash -f ../conf-test/tb_person.conf
           
2)運作多個腳本檔案:
           
cd ../deploy/logstash-6.5.4/bin/
		./logstash -f ../conf-test/
           
3)背景運作:
           
cd ../deploy/logstash-6.5.4/bin/
nohup ./logstash -f ../conf-test/ &
           

三、使用

1)目錄介紹

Logstatsh安裝使用說明

a. config: 存放配置檔案,暫時不用修改

b. conf-pro 和 conf-test 為自己建立目錄,分别存放正式環境腳本檔案和測試環境腳本 檔案,腳本檔案唯一不同的地方就是資料庫連接配接不同,腳本檔案詳細說明,見第四點。

c. data存放資料檔案,暫時不用修改,當提示“ Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the “path.data” setting.”,此時進入data檔案執行 rm -f .lock

d. logs檔案夾存放日志檔案

e. metadatapath和metadatpro檔案夾為自己建立檔案夾,分别存放資料庫最後記錄的字段值,如果是以時間作為條件就是最後一條的時間,如果是以id作為條件,同理存放的就是最大的id

f. mysql檔案夾為存放SQL腳本檔案,和在項目裡面寫的腳本檔案相同,唯一多的變量

“updatetime > :sql_last_value”,sql_last_value就是“metadatapath”中記錄的值。

2)conf-pro 内腳本檔案說明

input {
	stdin {}
	jdbc {
		 # 多表同步時,表類型區分,建議命名為“庫名_表名”,每個jdbc子產品需對應一個type;
		type => "tb_person"
		
		 # 資料庫連接配接位址
		jdbc_connection_string => "資料庫連接配接"
		 # 資料庫連接配接賬号密碼;
		jdbc_user => "使用者名"
		jdbc_password => "密碼"
		 # oracle依賴包路徑;
		jdbc_driver_library => "../mysql/ojdbc6-11.2.0.3.jar"

		 # the name of the driver class for oracle
		jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
		 # 資料庫重連嘗試次數
		connection_retry_attempts => "3"
		 # 判斷資料庫連接配接是否可用,預設false不開啟
		jdbc_validate_connection => "true"
		 # 資料庫連接配接可用校驗逾時時間,預設3600S
		jdbc_validation_timeout => "3600"
		 # 開啟分頁查詢(預設false不開啟);
		jdbc_paging_enabled => "true"
		 # 單次分頁查詢條數(預設100000,若字段較多且更新頻率較高,建議調低此值);
		jdbc_page_size => "1000"
		 # statement為查詢資料sql,如果sql較複雜,建議配通過statement_filepath配置sql檔案的存放路徑;
		 # sql_last_value為内置的變量,存放上次查詢結果中最後一條資料tracking_column的值,此處即為updatetime;
		statement_filepath => "../mysql/tb_person.sql"
		 # 是否将字段名轉換為小寫,預設true(如果有資料序列化、反序列化需求,建議改為false);
		lowercase_column_names => true
		 # Value can be any of: fatal,error,warn,info,debug,預設info;
		sql_log_level => warn
		 #
		 # 是否記錄上次執行結果,true表示會将上次執行結果的tracking_column字段的值儲存到last_run_metadata_path指定的檔案中;
		record_last_run => true
		 # 需要記錄查詢結果某字段的值時,此字段為true,否則預設tracking_column為timestamp的值;
		use_column_value => true
		 # 需要記錄的字段,用于增量同步,需是資料庫字段
		tracking_column => "updatetime"
		 # Value can be any of: numeric,timestamp,Default value is "numeric"
		 tracking_column_type => timestamp
		 # record_last_run上次資料存放位置;
		last_run_metadata_path => "../metadatapath-pro/tb_person.txt"
		 # 是否清除last_run_metadata_path的記錄,需要增量同步時此字段必須為false;
		clean_run => false
		 #
		 # 同步頻率(分 時 天 月 年),預設每分鐘同步一次;
		schedule => "*/10 * * * * *"
	}
}
 
output {
	if [type] == "tb_person" {
		elasticsearch {
			hosts => ["localhost:9200"]
			index => "tb_person"
			document_id => "%{id}"
		}
	}
}
           

上面标注了準确的注釋,這裡強調下注意的點,當資料庫字段裡面有“type”字段的時候,一定要注意,此時的type與腳本最上面那個type是有沖突的,此時要給資料庫腳本中的type重命名。這是我遇到的一個坑。。。需要同步多少個表,複制多少個腳本即可。

繼續閱讀