首页 > 其他 > 详细

Logstash相关配置与启动

时间:2020-12-23 12:54:20      阅读:253      评论:0      收藏:0      [点我收藏+]

  1. 首先进入到 Logstash/bin 文件夹下,我们的配置文件是放在Logstash/bin/mysql/jdbc-timedtask.conf 文件中。

    1. 所以我们的启动命令是 ./logstash -f ./mysql/jdbc-timedtask.conf ,
    2. 如果是linux进行后台启动则需要执行 nohup ./logstash -f ./mysql/jdbc-timedtask.conf & ;
    3. 关闭Logstash 服务,则需要先去查询 Logstash 的Pid。
      1. 命令是: ps -ef |grep logstash 获取到运行的logstash 的Pid 。例如Pid为1218。通过使用kill -9 1218 进行关闭服务。
  2. 目录结构:

    • Logstash
      • bin
        • logstash
        • logstash.bat
        • .........
        • mysql
          • jdbc.conf
          • mysql-connector-java-5.1.49.jar
          • jdbc-user.txt
          • jdbc-user.sql
          • jdbc-department.txt
          • jdbc-department.sql
  3. 配置文件信息 Logstash/bin/mysql/jdbc.conf:

    input {    
    	jdbc {
    		#索引的类型,标识符。
    		type => "user"
    		# jdbc 驱动包位置
    		jdbc_driver_library => "./mysql/mysql-connector-java-5.1.49.jar"      
    		# 要使用的驱动包类
    		jdbc_driver_class => "com.mysql.jdbc.Driver"   
    		#配置jdbc地址,serverTimezone=Asia/Shanghai 时区设置为上海。
            jdbc_connection_string => "jdbc:mysql://localhost:3306/db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"                
            # 数据库用户名
    		jdbc_user => "root"   
    		# 数据库密码
    		jdbc_password => "123456"        
    	    #定时任务 分别代表(分 时 天 月 年)。按需配置。
    	    schedule => "35 10 * * *"     
            #logstash从mysql同步数据,如果数据量太大时可以进行分页同步。
            jdbc_paging_enabled => true
            #分页大小
            jdbc_page_size => 100000
            #流式获取数据,每次取10000
            jdbc_fetch_size => 10000
            #尝试连接到数据库的最大次数
            connection_retry_attempts => 3
            #连接尝试之间休眠的秒数
            connection_retry_attempts_wait_time => 1
            #超时时间
            jdbc_pool_timeout => 5
            #是否强制字段为小写的形式
            lowercase_column_names => true
            #-------下面的配置是设置增量同步数据的-----
            #启用数据库字段记录增量
            use_column_value => true    
            #数据库同步时按照那个字段为依据进行增量同步。我用的是操作时间字段。
            tracking_column => operatetime      
            #递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
            tracking_column_type => "timestamp"  
            ##保存上次运行记录,增量提取数据时使用
            record_last_run => true  
            #记录上次的同步点,需要事先创建好,重启时会读取这个文件,这个文件可以手动修改
          	last_run_metadata_path => "./mysql/jdbc-user.txt"  
            #是否清除last_run_metadata_path的记录,如果是true,则从头开始查询所有的数据库记录
            clean_run => false   
            #按照什么语句进行增量同步数据。可以使用sql文件,也可以使用sql语句,我这里使用的是sql文件。
            statement_filepath => "./mysql/timetask-user.sql"	
            # statement => "select * from user where operate_time >=:sql_last_value and operate_time <now()"     
            #设置时区,
          	jdbc_default_timezone => "Asia/Shanghai"    
    		}
    		#多表进行增量同步数据,可以和上面的配置一致。
            jdbc {     
    		type => "department"
    		jdbc_driver_library => "./mysql/mysql-connector-java-5.1.49.jar"  
    		jdbc_driver_class => "com.mysql.jdbc.Driver"   
            jdbc_connection_string =>  "jdbc:mysql://localhost:3306/db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"  
    		jdbc_user => "root" 
    		jdbc_password => "123456"  
    	    schedule => "35 10 * * *"  
            jdbc_paging_enabled => true
            jdbc_page_size => 100000
            jdbc_fetch_size => 10000
            connection_retry_attempts => 3
            connection_retry_attempts_wait_time => 1
            jdbc_pool_timeout => 5
            lowercase_column_names => true
            #codec => plain {charset => "UTF-8"}
            use_column_value => true    
            tracking_column => id     
            #这里的是以Id作为增量字段的。类型是bigint,这里使用的是numeric。
            tracking_column_type => "numeric"  
            record_last_run => true  
             last_run_metadata_path => "./mysql/jdbc-position.txt" 
            clean_run => false   
            statement_filepath => "./mysql/timetask-department.sql"	
          	jdbc_default_timezone => "Asia/Shanghai"    
    		}
    	}
    filter { 
        json {          
            source => "message" 
        } 
         date{
         		#格式化时间类型
                match => ["operatetime","yyy-MM-dd HH:mm:ss"]
            }
        if[type]=="company"{
        	#虽然使用了上海的时区,但是logstash同步数据的时候还是会差8个小时.
            ruby {   
                code => "event.set(‘operatetime‘, event.get(‘@timestamp‘).time.localtime + 8*60*60)"   
            }  
            ruby {  
                code => "event.set(‘@timestamp‘,event.get(‘operatetime‘))"  
            }  
            mutate {  
                remove_field => ["timestamp"]  
            #  rename => { "[host][name]" => "host" }
            } 
        }   
    }
    output {    
    	if[type] == "user"{
    		elasticsearch{        
    		# es host : host,如果是集群,就用“,”分开,例如["127.0.0.1:9200", "127.0.0.2:9200"] ,我这里就一个节点。
            hosts => ["http://127.0.0.1:9200"]		
    		# 索引 ,logstash 的索引名称。
    		index => "user"        
    		# logstash 的主键。
    		document_id => "%{id}"   
            document_type => "db" 
            #elasticsearch 设置密码后,logstash需要登录时的账号密码。
            user => elastic
            password => 123456gw
    		}
    	}
    	if[type] == "department"{
    		elasticsearch{      
            hosts => ["http://127.0.0.1:9200"]		      
    		index => "department"        
    		document_id => "%{id}"    
    		document_type => "db"
    		user => elastic
            password => 123456gw
    		}
    	}
    }
    
  4. Logstash/bin/mysql/mysql-connector-java-5.1.49.jar

    1. 数据库的驱动jar ,可以在网络上搜索下载。
  5. Logstash/bin/mysql/jdbc-user.sql

    select * from user where operate_time >=:sql_last_value and operate_time <now()
    
  6. Logstash/bin/mysql/jdbc-department.sql

    select * from department where id >=:sql_last_value
    
  7. Logstash/bin/mysql/jdbc-user.txt 数据库中操作时间最小的是2019年的,所以设置为2019年。

--- !ruby/object:DateTime ‘2019-01-01 00:00:01.000000000 Z‘
  1. Logstash/bin/mysql/jdbc-department.txt 数据库中主键ID最小的是0年,所以设置为0。
--- 0

Logstash相关配置与启动

原文:https://www.cnblogs.com/Glc-Blog/p/14177222.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!