签到成功

知道了

CNDBA社区CNDBA社区

Logstash的搭建与简单测试

2019-06-04 17:17 4422 0 原创 大数据
作者: xuyi

由于需要将Mysql的数据导入到ES中,并且考虑MySql后续数据增量的情况,查阅博客推荐使用Logstash或GO-MySQL-ElasticSearch或Py-Mysql_ElasticSearch.
有人会说为什么不用flume或者MySqlsMom,在这里说一下我的看法,Flume集成ES并不是很友好,一般的我们是利用Flume实时采集日志发布到Kafka做配套,并且我们知道ELK中的E代表的是ElasticSearch,L为Logstash,K为Kibana,所以按照配套来还是推荐Logstash.对于MySqlsMom,这是新出炉的工具,是基于Python的,所以运行mysqlsmom 的唯三要求:http://www.cndba.cn/xuyi/article/3419

  1. python2.7
  2. redis
  3. Mysql 配置 binlog-format=row

所以为了简便,还是考虑用Logstash.http://www.cndba.cn/xuyi/article/3419

参考博客地址以及GitHub地址如下:

https://blog.csdn.net/qq_16272049/article/details/80556549
https://blog.csdn.net/camelcanoe/article/details/79759376
https://cloud.tencent.com/developer/article/1190189
https://github.com/m358807551/mysqlsmom


下面介绍ELK中的L:Logstash

Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs
inputs:必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
filters:可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
outputs:必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd
  其中inputs和outputs支持codecs(coder&decoder)在1.3.0 版之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入 期处理不同类型的数据,所以完整的数据流程应该是:input | decode | filter | encode | output;codec 的引入,使得 logstash 可以更好更方便的与其他有自定义数据格式的运维产品共存,比如:graphite、fluent、netflow、collectd,以及使用 msgpack、json、edn 等通用数据格式的其他产品等  


Linux下安装Logstash
在此之前我们已经搭建完成了ES,用了3台机器,分别是192.168.20.165~192.168.20.167
由于Logstash具备相当的独立性,我把它放在192.168.20.164这台机器上

一、官网下载安装

1.官网手动下载:https://www.elastic.co/downloads/past-releases
注意版本对应ES的版本:(我全部都选择6.7.2)

注意这里需要下载的是tar.gz后缀的包.

http://www.cndba.cn/xuyi/article/3419

二、Linux目标文件夹上解压

下载完成之后需要将logstash-6.7.2.tar.gz上传到164这台机器上,可以放在/home目录下,然后解压到目标目录,这里我们就简单的将Logstash解压到/usr/local/下,说明一下,这里我之前安装MySQL时已经创建了/usr/local/这个文件夹,如果没有创建过,需要在164这台机器上手动创建一下
创建目录命令:

mkdir /usr/local/logstash

解压命令:

http://www.cndba.cn/xuyi/article/3419

tar -zxvf /home/logstash-6.7.2.tar.gz -C /usr/local/logstash

解压完成之后去 /usr/local/logstash下查看:

至此,我们已经将logstash就搭建完成了,是不是很easy呢?


测试Logstash

创建一个自定义配置文件的文件夹testconf

mkdir /usr/local/logstash/logstash-6.7.2/testconf
cd /usr/local/logstash/logstash-6.7.2/testconf
vi ./mysql2es.conf
     input {
       stdin {
    }
    jdbc {
     # 数据库
      jdbc_connection_string => "jdbc:mysql://192.168.20.**:3306/information_schema"
      # 用户名密码
      jdbc_user => "root"
      jdbc_password => "123"
      # jar包的位置
      jdbc_driver_library => "/opt/cm-5.11.2/share/cmf/common_jars/mysql-connector-java-5.1.15.jar"
      # mysql的Driver
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      statement => "select * from processlist"
      schedule => "* * * * *"
      #索引的类型,但是并没有生效
      type => "processlist"
    }
    }
    output {
    elasticsearch {
    #虽然是3个,但是写了3个会报错
        hosts => "192.168.20.165:9200"
        # index名
        index => "information"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
    }

然后到bin目录下启动Logstash

http://www.cndba.cn/xuyi/article/3419

../bin/logstash -f ./mysql2es.conf

过一会就会自动的往ES里添加数据。

http://www.cndba.cn/xuyi/article/3419
http://www.cndba.cn/xuyi/article/3419http://www.cndba.cn/xuyi/article/3419

在这里是将mysql全量导入es了,下面提供的博客中包含增量导入,地址供上:http://www.cndba.cn/xuyi/article/3419

https://blog.csdn.net/camelcanoe/article/details/79759376http://www.cndba.cn/xuyi/article/3419

版权声明:本文为博主原创文章,未经博主允许不得转载。

bigdata-Logstash

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
xuyi

xuyi

关注
  • 4
    原创
  • 0
    翻译
  • 0
    转载
  • 0
    评论
  • 访问:19363次
  • 积分:18
  • 等级:注册会员
  • 排名:第81名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ