Logstash 将ES数据导入数据库
Logstash 7.2.0
1、logstash-output-jdbc安装
2、问题梳理
3、conf文件
1、logstash-output-jdbc安装
/opt/logstash/bin/logstash-plugin install logstash-output-jdbc
2、问题梳理
a、日期字段格式转换问题
b、es日期与我们要的日期时差问题,日期加减
这两个问题output-jdbc确实不好解决,不过把这两问题放在filter里就比较简单了
日期字段格式转换:
date {
match => [ "timestamp" , "YYYY-MM-dd'T'HH:mm:ss.SSS'Z'" ]
timezone => "Asia/Shanghai"
target => "timestamp"
}
es日期与我们要的日期时差问题,es的日期本身差了8个小时,再上一步的转换时,又差了8个小时,所以,我们要的日期是上面的日期再加上16个小时
ruby {
code => "event.set('timestamp', event.get('timestamp').time.localtime + 16*60*60)"
}
3、conf文件
以es导入MySQL为例
input {
elasticsearch {
hosts => "hostname"
index => "ping-min-2019-11-08"
size => 5000
user => "username"
password => "password"
schedule => "*/2 * * * *"
}
}
filter {
date {
match => [ "timestamp" , "YYYY-MM-dd'T'HH:mm:ss.SSS'Z'" ]
timezone => "Asia/Shanghai"
target => "timestamp"
}
ruby {
code => "event.set('timestamp', event.get('timestamp').time.localtime + 16*60*60)"
}
}
output {
jdbc{
driver_jar_path => "H:/mysql/mysql-connector-java.jar"
driver_class => "com.mysql.jdbc.Driver"
connection_string => "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"
username => "root"
password => "123456"
statement => [ "insert into PING (id,timestamp,scheme,IP,URL,upCount,downCount,type) values (?,?,?,?,?,?,?,?)","[id]","[timestamp]","[scheme]","[IP]","[URL]","[upCount]","[downCount]","[type]"]
}
}
现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这里可以跳转到教程。