Linux下logstash安装(6.2.3版本)

流程简介

使用logstash从MySQL增量或全量提取数据,传入elasticsearch中,同步到数据存储。

logstash

logstash安装

#下载,logstash5及以上版本需要jdk8
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.zip
#解压
unzip logstash-6.2.3.zip
#测试logstash环境,运行如下demo(input {stdin{}}:接收终端输入;output {stdout{}}:输出到终端),出现Pipeline main started为正常
cd logstash-6.2.3/bin/
sh logstash -e  'input { stdin {} } output { stdout {} }'
#-----------------------------------start-----------------------------------
Pipeline main started
#------------------------------------end------------------------------------
#测试,输入hello world,然后回车
#出现如下信息即为安装成功
#-----------------------------------start-----------------------------------
2018-05-08T01:55:36.697Z VM_0_11_centos hello world
#------------------------------------end------------------------------------

我的操作如下图

Linux下logstash安装(6.2.3版本)_第1张图片

安装logstash-input-jdbc,logstash-input-jdbc插件使用ruby语音开发的,所以需要安装ruby环境,将镜ruby仓库镜像替换淘宝的。 
判断是否安装gem

gem –v
  • 1

提示非法命令则未安装 
安装gem

sudo yum install gem 
  • 1

(使用root用户不需要加sudo)建议切换到root账户安装 
出现提示输入y即可

Total download size: 3.8 M
Installed size: 13 M
Is this ok [y/d/N]: y
  • 1
  • 2
  • 3

安装成功后查看gem版本号 
gem -v 
这里安装的是2.0.14.1 
ruby仓库镜像替换淘宝

gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
  • 1

查看当前镜像源

gem sources -l

显示ruby.taobao.org则正常 

请确保只有 ruby.taobao.org 

到logstash的bin目录下运行下面的命令,查看可用的插件

./logstash-plugin list --verbose

Linux下logstash安装(6.2.3版本)_第2张图片

这里可以看到可以使用的logstash-input-jdbc版本是4.3.5 
elk对版本要求很严格,必须使用正确的版本。 

logstash-input-jdbc可用版本为4.3.5 

https://github.com/logstash-plugins/logstash-input-jdbc/archive/v4.3.5.zip

进入到logstash的bin下

cd bin
./plugin install logstash-input-jdbc
  • 1
  • 2

等待一整子,挺久的,如果成功那就安装成功了。

测试一下安装成功了吗:

在此之前,需要一个mysql数据库连接包,mysql-connector-java-6.0.6.jar,随便什么版本应该都是可以的,可以使用wget下下来,也可以从本地下下来之后rz上传到服务器,这里就省略了。

在bin下新建一个目录config-mysql创建mysql.conf文件:

mkdir config-mysql
cd config-mysql
vim mysql.conf 
  • 1
  • 2
  • 3

在文件中输入下面的内容:

input {
    stdin {
    }
    jdbc {
      # 数据库
      jdbc_connection_string => "jdbc:mysql://localhost:3306/test01"
      # 用户名密码
      jdbc_user => "root"
      jdbc_password => "123456"
      # jar包的位置
      jdbc_driver_library => "/usr/local/logstash-6.2.3/mysql-connector-java-6.0.6.jar"
      # mysql的Driver
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      #statement_filepath => "config-mysql/test02.sql"
      statement => "select * from test02"
      schedule => "* * * * *"
      #索引的类型
      type => "test02"
    }
}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
    elasticsearch {
        hosts => "127.0.0.1:9200"
        # index名
        index => "test01"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

注意关联的数据库表中需要有id字段用来映射形成的索引的id号。

终于把工作都做完了。

进入bin目录下:

./logstash -f config-mysql/mysql.conf
  • 1

等一会之后,就会看到数据库中的数据被读取出来,然后加载进索引

然后往数据库中添加一些新的数据之后等待大概30S之后重新索引,就会看到索引被更新了。回到linux下,会看到,每过一段时间,logstash就会重新扫描一下数据库,通过这样的方式,实现和mysql数据库的同步。


你可能感兴趣的:(elasticSearch,DEMO,linux)