logstash数据采集差8小时问题及解决(原创)

作者:star

  1. 软件版本
软件名称版本号
elasticsearch2.1.1
logstash2.3.1
  1. 问题解决办法
    解决方案1:
input {
    jdbc {
      jdbc_connection_string => "jdbc:oracle:thin:@10.35.4.97:1521:OMS1"
      jdbc_driver_library => "/home/yarn/logstash-2.3.1/lib/ojdbc14.jar"
      jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
      jdbc_user => "ypt_jk"
      jdbc_password => "ypt_jk123"
      schedule => "11 18 25 11 *"
      statement => "SELECT '省调' dkflag,id, '' as loglevel, CONTENT AS datastr,'oms' AS sources,'自动化' AS type  ,'人工录入' as generatetype,'' AS host, to_char(RECORDDATE,'YYYY-MM-DD HH24:MI:SS') AS modifydate,RECORDUSER as RECORDUSER,recordyy AS remark FROM AUTO.T_AUTORUNRECORD"
    }
}
filter {
    date {
        match => [ "modifydate", "yyyy-MM-dd HH:mm:ss'GMT+8'"]
        target => "modifydate"
    }
}

output {
    elasticsearch {
        document_id => "%{id}"
        hosts => ["10.35.8.23:9200"]
        index => "test_log"
    }
    stdout {
        codec => json_lines
    }
}

解决方案2:

input {
    jdbc {
      jdbc_connection_string => "jdbc:oracle:thin:@10.35.4.97:1521:OMS1"
      jdbc_driver_library => "/home/yarn/logstash-2.3.1/lib/ojdbc14.jar"
      jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
      jdbc_user => "ypt_jk"
      jdbc_password => "ypt_jk123"
      schedule => "54 10 25 11 *"
      statement => "SELECT '省调' dkflag,'' as loglevel,CONTENT   AS datastr,'oms' AS sources,'监控' AS type,'系统生成' as generatetype,'' AS host,to_char(OPERATETIME,'YYYY-MM-DD HH24:MI:SS') AS modifydate,RECORDPERSON as RECORDUSER,'' AS remark FROM DISPATCH.T_CONTROL_LOG_CONTENT"
    }
}
filter {
    date {
        match => [ "modifydate", "yyyy-MM-dd HH:mm:ss"]
        target => "modifydate"
        locale => "en"
        timezone => "+00:00"
        }

}

output {
    elasticsearch {
        hosts => ["10.35.8.23:9200"]
        index => "log_t_control_log_content"
        document_type => "oms_log"
    }
    stdout {
        codec => json_lines
    }
}

经测试:两种方案都可以很好的解决此问题

方案三:修改logstash源码

vi logstash-2.3.1\vendor\bundle\jruby\1.9\gems\logstash-core-event-2.3.1-java\lib\logstash\timestamp.rb

UTC = org.joda.time.DateTimeZone.forID(“UTC”)  
修改为:  
UTC = org.joda.time.DateTimeZone.getDefault()  



作者:雨中星辰0
链接:https://www.jianshu.com/p/4bb5470da4a9
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Logstash的Grok插件来解决数据真实时间的问题,你可以按照以下步骤操作: 1. 在Logstash的配置文件中,添加一个输入插件来读取你的数据源,例如文件或消息队列。 2. 使用Grok插件来解析你的数据。Grok插件使用正则表达式模式来匹配和提取数据中的特定字段。 3. 对于包含时间戳的字段,你可以使用Grok插件中的日期模式来解析和提取时间信息。日期模式使用特定的格式字符串来匹配和解析时间戳。 4. 在Grok模式中,你可以使用特殊的时间戳标记,如%{TIMESTAMP_ISO8601},来匹配ISO 8601格式的时间戳。如果你的时间戳格式与ISO 8601不同,你可以自定义日期模式来匹配你的时间戳格式。 5. 在Logstash配置中,使用date过滤器将匹配到的时间戳字段转换为Logstash事件的真实时间。你可以指定输入字段和输出字段的名称,并使用合适的格式字符串来定义输出时间的格式。 下面是一个简单的Logstash配置示例,演示了如何使用Grok插件解析时间戳字段: ``` input { file { path => "/path/to/your/logfile" start_position => "beginning" } } filter { grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:message}" } } date { match => [ "timestamp", "yyyy-MM-dd HH:mm:ss" ] target => "@timestamp" } } output { stdout { codec => rubydebug } } ``` 在这个示例中,输入插件从指定的日志文件中读取数据。Grok插件匹配时间戳字段和消息字段,并将它们提取为单独的字段。然后,date过滤器将匹配到的时间戳字段转换为Logstash事件的真实时间,并存储在@timestamp字段中。最后,输出插件将事件打印到控制台。 请注意,这只是一个简单的示例,你可能需要根据你的实际需求进行调整和扩展。你可以根据Logstash文档中提供的更多详细信息来定制你的配置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值