【转载请注明】:

原文出处http://www.yund.tech/zdetail.html?type=1&id=f7a448de25aeeb8e03435fc0d3054b0c    作者:jstarseven    码字挺辛苦的.....  


ElasticSearch的索引可以手动添加索引的,就是类似下面这样添加的

PUT /movies/movie/1
{
"title": "The Godfather",
"director": "Francis Ford Coppola",
"year": 1972,
"genres": ["Crime", "Drama"]
}

但是如果很多的信息,这样添加显然是不可能的,尤其是一般数据都在数据库中。

于是elasticsearch提供了可以直接和数据库关联,并且自动根据数据库中的数据更新索引logstash。

安装logstash

logstash的安装和elasticsearch的安装是一样简单的,就是那种拆箱即用的。目前最新的版本是5.5.0,注意这个版本需要和elasticsearch的版本一致。

下载安装

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.zip

下载完之后

unzip logstash-5.5.0.zip

之后将文件移动到自己存放的目录即可。

启动服务测试一下是否安装成功:

cd bin
./logstash -e 'input { stdin { } } output { stdout {} }'

如果出现下面的东西就表示成功: 
 
输入随便什么内容:

HelloWorld

就会变成下面这样:

基本上这样就算是安装成功了(其实好像并没有安转,只是下载而已)

安装logstash-input-jdbc插件

在我安装完这东西之后,看到好像可以不用安装这个就可以直接和数据库同步的,但是由于重新安装太麻烦了,而且没有其他的服务器给我试,就没有去试试看行不行。

我主要参考的是http://blog.csdn.net/yeyuma/article/details/50240595这位老铁的方法。

安装logstash是一件比较蛋疼的事,因为这东西适用ruby开发的,我对ruby这东西是一点也不懂,所以比较不好弄。 
如果没有gem命令的话,需要先安装一下子(root用户才可以)

yum install gem

替换ruby镜像库为国内的库,因为国外的库,国内是访问不到的,然后国内有两个库,两个库都是可以用的: 
1、替换成ruby-china的库

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

查看是否成功

gem sources -l

2、国内还有一个库,是淘宝的:

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

可以同样用gem sources -l查看是否替换成功。

替换完之后,进入logstash-5.5.0,修改Gemfile文件里面的数据源:

vi Gemfile

修改成这个样子:

source "https://gems.ruby-china.org"

如果用的用的是淘宝的库,就修改成这样

source "https://ruby.taobao.org"

好了,这样ruby的安装环境就算是配好了。

进入到logstash的bin下

cd bin
./plugin install logstash-input-jdbc

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

如果不成功,可以尝试一下下面这个东西,如果没记错的话,我好像就是用这种方法安装的:

cd logstash-5.5.0
wget https://github.com/logstash-plugins/logstash-input-jdbc/archive/v1.0.0.zip
unzip v1.0.0.zip
cd logstash-input-jdbc-1.0.0/

修改Gemfile里面的source,和上面修改是一样的。

然后

vi logstash-input-jdbc.gemspec

s.files = `git ls-files`.split($\)
改为:
s.files = [".gitignore", "CHANGELOG.md", "Gemfile", "LICENSE", "NOTICE.TXT", "README.md", "Rakefile", "lib/logstash/inputs/jdbc.rb", "lib/logstash/plugin_mixins/jdbc.rb", "logstash-input-jdbc.gemspec", "spec/inputs/jdbc_spec.rb"]

继续

gem build logstash-input-jdbc.gemspec

得到

cd ..
cd bin
./logstash install ../logstash-input-jdbc-1.0.0/logstash-input-jdbc-1.0.0.gem

然后等着就好了。如果提示成功了,就安装成功了,如果还是失败,多尝试几下第一种方式,我在另一个服务器尝试了几次第一种方式就莫名其妙成功了。如果还失败,就在查查资料吧。

测试一下安装成功了吗:

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

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

mkdir config-mysql
cd config-mysql
vim mysql.conf

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

input {
stdin {
}
jdbc {
# 数据库
jdbc_connection_string => "jdbc:mysql://localhost:3306/test01"
# 用户名密码
jdbc_user => "root"
jdbc_password => "123456"
# jar包的位置
jdbc_driver_library => "/usr/local/logstash-5.5.0/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
}
}

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

终于把工作都做完了。

进入bin目录下:

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

等一会之后,就会看到数据库中的数据被读取出来,然后加载进索引,在sense可以查询到刚刚添加的索引的

 GET /_search  

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


-END-

logstash安装与logstash-input-jdbc插件使用的更多相关文章

  1. ElasticSearch Kibana 和Logstash 安装x-pack记录

    前言 最近用到了ELK的集群,想想还是用使用官方的x-pack的monitor功能对其进行监控,这里先上图看看: 环境如下: 操作系统: window 2012 R2 ELK : elasticsea ...

  2. ElasticSearch学习笔记(三)logstash安装和logstash-input-jdbc插件

    ElasticSearch的索引可以手动添加索引的,就是类似下面这样添加的 PUT /movies/movie/1 { "title": "The Godfather&q ...

  3. logstash 安装插件multiline

    一.安装multiline 在使用elk 传输记录 java 日志时,如下 一个java的报错 在elk中会按每一行 产生多条记录,不方便查阅 这里修改配置文件 使用  multiline   插件 ...

  4. logstash input jdbc连接数据库

    示例 以下配置能够实现从 SQL Server 数据库中查询数据,并增量式的把数据库记录导入到 ES 中. 1. 查询的 SQL 语句在 statement_filepath => " ...

  5. elasticsearch安装与使用(6)-- Logstash安装与配置

    由于elasticsearch的search guard 不支持 elasticsearch的jdbc,所以如果安装了search guard认证插件之后,基本上jdbc就废了,所以我们需要用到log ...

  6. CentOS6.5安装elasticsearch+logstash+kibana

    首先卸载低版本的java环境,然后安装 java环境和Apache服务 yum install -y java--openjdk httpd 安装ES环境 elasticsearch wget htt ...

  7. logstash安装及基础入门

    Logstash是一款开源的数据收集引擎,具备实时管道处理能力.简单来说,logstash作为数据源与数据存储分析工具之间的桥梁,结合 ElasticSearch以及Kibana,能够极大方便数据的处 ...

  8. Logstash详解之——input模块

    原文地址 Logstash由三个组件构造成,分别是input.filter以及output.我们可以吧Logstash三个组件的工作流理解为:input收集数据,filter处理数据,output输出 ...

  9. 第三篇:Logstash 安装配置

    Logstash 简介: Logstash 是一个实时数据收集引擎,可收集各类型数据并对其进行分析,过滤和归纳.按照自己条件分析过滤出符合数据导入到可视化界面.Logstash 建议使用java1.8 ...

  10. ElasticStack之Logstash安装

    服务器环境 操作系统 Host:port node 1 CentOS 7.2.1511 11.1.11.127:9200 node1 2 CentOS 7.2.1511 11.1.11.128:920 ...

随机推荐

  1. Calendar 得到前一天当前时间

    @Test public void test(){ //因为Calendar的构造方法是私有的,所以实例化一个Calendar对象用getInstance方法 Calendar calendar = ...

  2. 学以致用五----centos7+python3.6.2+django2.1.1

    目的,在python 3.6的基础上搭建 django 2.x 一.使用pip安装django ,但是使用pip命令的时候报错,解决方法,做软连接 ln -s /usr/local/python/bi ...

  3. GetWindowRect

    示例代码: CRect rect; GetDlgItem(IDC_STATIC_VIEW)->GetWindowRect(&rect); int width=rect.Width(); ...

  4. js 构建map 和list

    //构建map function Map() { this.arr = new Array(); var struct = function(key, value) { this.key = key; ...

  5. 为在python中使用dotnet程序安装clr

    直接在命令行中录入 pip install pythonnet 会有一个ssl错误提示 ...Could not fetch URL https://pypi.python.org/simple/py ...

  6. jvm的内存分配

    java内存分配 A:栈 存储局部变量 B:堆 存储所有new出来的 C:方法区(方法区的内存中) 类加载时 方法信息保存在一块称为方法区的内存中, 并不随你创建对象而随对象保存于堆中; D:本地方法 ...

  7. android Activity中设置setResult 没有触发onActivityResult

    昨天修改<manifest 文件中activity 的 模式为单例模式:android:launchMode="singleTask" ,发现我的onActivityResu ...

  8. HDU3488 Tour

    Tour Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submi ...

  9. uri.php

    <?php /** * */ class URI { function _fetch_uri_string() { if(strtoupper($uri_protocol) == 'AUTO') ...

  10. 「PKUSC2018」最大前缀和(状压dp)

    前言 考试被\(hyj\)吊着打... Solution 考虑一下如果前缀和如果在某一个位置的后面的任意一个前缀和都<=0,肯定这就是最大的. 然后这样子就考虑左右两边的状压dp,然后就好了. ...