logstash介绍


logstash安装

  • 前提条件: 服务器需要安装jdk1.8+
  • 官网下载 此处下载的是 Logstash 6.5.0版本,另外服务器是centos
  • 下载后上传到服务器 /home/program/logstash/ 文件夹下
  • 解压 tar -zxvf ./logstash-6.5.0.tar.gz
  • cd ./logstash-6.5.0/conf ,并新建配置文件my-logstash.conf
  • 配置my-logstash.conf:
  • input:
input{
     beats {
          port => 12044
             }
        }  #配置日志来源于网络,传输端口12044
  • filter:
  • output:
file{
                path=>"/home/logstash-logs/%{[fields][ip]}/%{+yyyy-MM-dd_HH}/log.log"
# %{},获取参数的表达式,对于日期需要使用%{+ } 。 fiels:ip 为filebeat自定义的KV,参见filebeat的配置
        }
        stdout{
            codec=>json   #将日志直接在控制台打印出来
        }
  • 启动: 进入bin目录, 执行 ./logstash -f ../config/my-logstash.conf 等待片刻,会有启动成功的提示

logstash输出到DB

上面的配置,已经可以将filebeat发送过来的日志进行保存到文件了,现在我们需要将日志同时保存到数据库,测试使用的是mysql数据库

logstash-output-jdbc

  • 以下内容参考资料Logstash将数据导入至MYSQL, 并在linux发行版本Red Hat 4.8.5-11的基础上操作
  1. 在Red Hat 4.8.5-11上正确安装lostash 6.5 (参考上面)。
  2. 在Red Hat 4.8.5-11上安装mysql(以8.0版本为例)
  • oracle官网下载对应的版本,此处下载red heat 8.0 为例,操作系统选择linux-generic
  • 下载后,上传至服务器/home/program下
  • 安装(由于我下载的是tar.xz格式的,所以下面的命令或许会有所差异,具体的根据下载的后缀进行更改命令来安装)
  • 执行 xz -d mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
  • 执行 tar -xvf ./mysql-8.0.13-linux-glibc2.12-x86_64.tar -C /usr/local
  • 进入解压目录, 并重命名 cd /usr/local/ mv mysql-8.0.13-linux-glibc2.12-x86_64/ mysql
  • 添加配置文件: vim /etc/my.cnf
[client]
port=3306
socket=/tmp/mysql/mysql.sock

[mysqld]
port=3306
user=mysql
socket=/tmp/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=error.log
  • 初始化mysql: mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data


  1. 配置logstash
  • 安装logstash-output-jdbc插件
  • 下载 压缩包
  • 解压, 并放在服务器任意文件夹 比如:/home/program/logstash/logstash-6.5.0/bin/logstash-output-jdbc-master
  • 进入logstash安装目录 : /home/program/logstash/logstash-6.5.0
  • 修改logstash下的Gemfile文件 vim ./Gemfile, 在最后,添加一行 gem "logstash-output-jdbc", :path => "/home/program/logstash/logstash-6.5.0/bin/logstash-output-jdbc-master"
  • 安装output-jdbc插件 bin/logstash-plugin install --no-verify
  • 查看是否安装成功: bin/logstash-plugin list
  • 下载connect的jar包 地址
  • 在logstash的bin/logstash-output-jdbc-master目录下 , 新建/vendor/jar-dependencies/runtime-jars` , 并将刚才下载的jar包上传到此目录下
  • 配置logstash
  • 打开logstash配置文件 vim ./config/my-logstash.conf,并添加如下内容:
filter{
    grok{ 
     match=>{
       "message"=>"(?<JSON>{.*?})"
            }
        }
    json{
       source=>"JSON"
       }
   }
output{
   jdbc {
    driver_jar_path => "/home/program/logstash/logstash-6.5.0/bin/logstash-output-jdbc-master/vendor/jar-dependencies/runtime-jars/mysql-connector-java-8.0.12.jar"
   driver_class => "com.mysql.jdbc.Driver"
   connection_string => "jdbc:mysql://数据库IP:数据库端口/数据库名称?user=数据库的用户名&password=数据库的密码"
   statement => [ "INSERT INTO test (name, age) VALUES(111, ?)",  "age" ]
    } 
   }
  • 启动logstash , 此时应该会报错:missing class: com.xx.HikariCP
  • 由于output-jdbc-master中,有一个 logstash-output-jdbc.gemspec 文件, 打开后,可以发现器配置了com.xx.HikariCP , 并指定了具体的版本号2.7.2 ,需要去私服上下载该版本的jar, 然后放在logstash-core/lib/jars下即可