Logstash
版本:6.2.4
Logstash
经常做的事情,是将日志文件进行解析,并且导入至 ElasticSearch
中
但是目前碰到的问题是,怎么将数据导入至 DB
中,比如 MYSQL
。
这就需要下面这个神器
了!
JDBC output for Logstash
下载地址:https://github.com/theangryan...
首先,安装 Logstash 6.2.4
,并确保 JDK
的版本是 1.8
。
然后进入 Logstash
目录,安装插件 logstash-output-jdbc
,执行以下命令:
bin/logstash-plugin install logstash-output-jdbc
JDBC
插件依赖 mysql-connector-java-5.1.46
包,So,我们去官网下载吧
提供了两种格式的包文件:
1、mysql-connector-java-5.1.46.tar.gz
2、mysql-connector-java-5.1.46.zip
这里随便下一个,然后解压。
至于解压后的文件放哪儿,这里有两种方式
:
1、在 Logstash 目录下,创建目录:/vendor/jar/jdbc,将 mysql-connector-java-5.1.46-bin.jar 文件放在里面,默认就能找到 mysql-connector-java-5.1.46-bin.jar,不需要配置参数 driver_jar_path。
2、放在任意目录,但是要配置参数 driver_jar_path ,确保能找到 mysql-connector-java-5.1.46-bin.jar 文件
OK,我们来测试一下
首先,创建配置文件:Logstash.conf
input {
stdin{}
}
filter{
json{
source => "message"
}
}
output {
stdout{
codec=>rubydebug{}
}
jdbc {
driver_jar_path => "/xxxxxxx/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar"
driver_class => "com.mysql.jdbc.Driver"
connection_string => "jdbc:mysql://数据库IP:数据库端口/数据库名称?user=数据库的用户名&password=数据库的密码"
statement => [ "INSERT INTO test (name, age) VALUES(?, ?)", "test_name", "test_age" ]
}
}
注意:JDBC
模块中还可以配置一些其他参数,如:connection_timeout
,可以参考 Github
上的文档。
然后,我们来运行一下 logstash
./bin/logstash -f logstash.conf
由于 input
输入是标准输入,我这里在命令行里输入:
{"test_name":"feblilac","test_age":"18"}
Logstash
输出:
{
"@timestamp" => 2018-05-14T08:14:44.069Z,
"user_age" => "18",
"host" => "dev01v.mg.corp.qihoo.net",
"@version" => "1",
"message" => "{\"test_name\":\"feblilac\",\"test_age\":\"18\"}",
"user_name" => "feblilac"
}
让我们看看数据库吧:
瞧,数据进来了!
后记:至于其他 DB
,这里没有进行测试,大家可以参考 logstash-output-jdbc/examples/
目录下的例子
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。