应用场景:
利用logstash-output-jdbc插件,将logstash中的数据吸入mysql数据库。

logstash版本: logstash-6.8.0

一、在线安装 logstash-output-jdbc
进入 logstash安装目录

cd /opt/logstash-6.8.0 
bin/logstash-plugin install --no-verify logstash-output-jdbc

安装报错:

[root@pc1 logstash-6.8.0]# bin/logstash-plugin install --no-verify logstash-output-jdbc
Installing logstash-output-jdbc
Error Bundler::HTTPError, retrying 1/10
Could not fetch specs from https://rubygems.org/
Error Bundler::HTTPError, retrying 2/10
Could not fetch specs from https://rubygems.org/
...

原因: https://rubygems.org/ 源被墙了

切换源: https://gems.ruby-china.com/

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

查看当前源:

gem sources -l

如切换成功,可以看到 只有 https://gems.ruby-china.com
安装命令:

bin/logstash-plugin install --no-verify logstash-output-jdbc

将mysql-connector-jar对应版本的jar包放入logstash-core/lib/jars目录下,完成。

二、离线安装: logstash-output-jdbc

下载离线安装包:https://github.com/theangryangel/logstash-output-jdbc,上传到服务器并解压

1、Gemfile文件添加 gem “logstash-jdbc-output”, :path => “你的插件zip解压后的全路径” 。

2、执行 bin/logstash-plugin install --no-verify ,如果你的源不正确仍然会报错。但不用在意,往下执行。

3、bin/logstash-plugin list查看是否安装成功

logstash解析java日志 logstash-output-jdbc_jar


4、将mysql-connector-jar对应版本的jar包放入logstash-core/lib/jars目录下,完成。

三、“移植”安装

解决生产环境部署时,无网络状态下的logstash-output-jdbc插件安装

1、找一个安装好logstash-output-jdbc的logstash环境,然后在安装好的环境上执行打包插件命令
bin/logstash-plugin prepare-offline-pack logstash-output-jdbc
2、然后将打包好的这个zip包(logstash-offline-plugins-6.8.0.zip)上传到 无网络的linux主机
3、执行bin/logstash-plugin install file:///opt/logstash/logstash-6.8.0/logstash-offline-plugins-6.8.0.zip
4、将mysql-connector-jar对应版本的jar包放入logstash-core/lib/jars目录下,完成

使用示例:
logstash.conf

stdout {codec => rubydebug}
    jdbc{
      #由于我将mysql-connector-java-8.0.15.jar放置在 logstash-core/lib/jars目录下了,所以 driver_jar_path 这个参数可以省略不写
      #driver_jar_path => "/usr/local/logstash-6.8.0/vendor/jar/jdbc/mysql-connector-java-8.0.15.jar"
      driver_class => "com.mysql.cj.jdbc.Driver"
      connection_string => "jdbc:mysql://yourMySqlIp:3306/edr_end?characterEncoding=utf8&useSSL=false&user=root&password=123456"
      #我这里用 ON DUPLICATE KEY UPDATE 做了 添加或更新 操作,需要在 mysql表中做 设置唯一主键,主键不存在 则 新增;主键存在 则 更新 
      statement =>["insert into t_host_info(host_id,date,system,cpu,host,memory,disk,display_card) values(?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE date=values(date),system=values(system),cpu=values(CPU),host=values(host),memory=values(memory),disk=values(disk),display_card=values(display_card)","[hostId]","[now()]","[system]","[CPU]","[host]","[memory]","[disk]","[displayCard]"]
    }