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/ 目錄下的例子

相關文章
相關標籤/搜索