Logstash jdbc不往elasticsearch发送数据

环境

版本:logstash 7.1.1,elasticsearch 7.1.1

配置

logstash配置文件如下:

input {
  jdbc {
    jdbc_driver_library => "/home/inspur/elasticsearch/lib/ojdbc14-10.2.0.1.0.jar"
    jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
    jdbc_connection_string => "jdbc:oracle:thin:@10.47.0.238:1521:orcl"
    jdbc_user => "lgzr"
    jdbc_password => "lgzr"
    schedule => "* * * * *"
    statement => "select * from SR_INFOR t where SR_INFOR_ID >:sql_last_value"
    jdbc_paging_enabled => true
    jdbc_page_size => "1"
    clean_run => true
    use_column_value => true
    tracking_column => "SR_INFOR_ID"
  }
}

output {
   elasticsearch {
      hosts => ["http://10.47.0.96:9200/"]
      index => "data_archives_jdbc"
   }
}

问题

在elasticearch head插件界面查看,logstash并没有数据生成,日志文件只有启动日志。请问为何logstash不把数据库中的数据发送到elasticsearch?

阅读 416
评论 2019-06-11 提问
    1 个回答
    郑国
    • 235

    详细请查看这一篇博客吧:https://blog.csdn.net/laoyang...
    我给你一个线上的模板吧,用的是mysql,其实都差不多,注释我已经写好,你可以研究下,我这个应该是比较通用的模板了,线上可以稳定跑~~
    input:

        jdbc {
            # 数据库地址
            jdbc_connection_string => "jdbc:mysql://172.16.8.54:3306/wps_pay"
            # 用户名
            jdbc_user => "vas_data_report"
            # 密码
            jdbc_password => "e8nMX2TeXAxkOEq2pz8Q"
            # 驱动路径
            jdbc_driver_library => "/usr/local/logstash-6.4.0/mysql-connector-java-5.1.45-bin.jar"
            # 驱动类
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            # 是否验证连接
            jdbc_validate_connection => true
            # 验证超时
            jdbc_validation_timeout => 14400
            # 尝试连接次数
            connection_retry_attempts => 50
            # 等待次数
            connection_retry_attempts_wait_time => 1
            # 是否开启记录追踪
            record_last_run => "true"
            # 是否需要追踪字段,如果为true,则需要指定tracking_column,默认是timestamp
            use_column_value => "true"
            # 指定追踪的字段
            tracking_column => "utime"
            # 追踪字段的类型,目前只有数字和时间类型,默认是数字类型
            tracking_column_type => "timestamp"
            # 是否每次清除last_run_metadata_path的内容
            clean_run => "false"
            # 这里可以手动设置:sql_last_value的值,默认时间是1970-01-01,默认数字是0
            last_run_metadata_path => "/usr/local/logstash-6.4.0/logstash_jdbc_last_run"
            # 是否分页
            jdbc_paging_enabled => "true"
            # 分页大小
            jdbc_page_size => "100000"
            # sql路径
            statement_filepath => "/usr/local/logstash-6.4.0/vas_pay_order.sql"
            # 定时任务cron表达式
            schedule => "* * * * *"
            # 类型 用于区别多个输入源
            type => "vas_pay_order"
       }

    output:

        if [type] == "vas_pay_order" {
           elasticsearch {
                hosts => ["172.31.0.57:9200"]
                index => "vas_pay_order"
                document_id => "%{order_id}"
            }
        }
    
    评论 赞赏 2019-06-11
      撰写回答

      登录后参与交流、获取后续更新提醒