Logstash将数据导入至MYSQL

Logstash 版本:6.2.4html

Logstash 常常作的事情,是将日志文件进行解析,而且导入至 ElasticSearchjava

可是目前碰到的问题是,怎么将数据导入至 DB 中,好比 MYSQLmysql

这就须要下面这个神器了!git

JDBC output for Logstashgithub

下载地址:https://github.com/theangryan...sql

首先,安装 Logstash 6.2.4,并确保 JDK 的版本是 1.8数据库

而后进入 Logstash 目录,安装插件 logstash-output-jdbc,执行如下命令:json

bin/logstash-plugin install logstash-output-jdbc

JDBC 插件依赖 mysql-connector-java-5.1.46 包,So,咱们去官网下载吧ruby

提供了两种格式的包文件测试

一、mysql-connector-java-5.1.46.tar.gz
二、mysql-connector-java-5.1.46.zip

这里随便下一个,而后解压。

至于解压后的文件放哪儿,这里有两种方式

一、在 Logstash 目录下,建立目录:/vendor/jar/jdbc,将 mysql-connector-java-5.1.46-bin.jar 文件放在里面,默认就能找到 mysql-connector-java-5.1.46-bin.jar,不须要配置参数 driver_jar_path。

二、放在任意目录,可是要配置参数 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"
}

让咱们看看数据库吧

clipboard.png

瞧,数据进来了!

后记:至于其余 DB,这里没有进行测试,你们能够参考 logstash-output-jdbc/examples/ 目录下的例子

相关文章
相关标签/搜索