笨鸟的平凡之路-Logstash的搭建与简单测试

由于需要将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 的唯三要求:
python2.7
redis
Mysql 配置 binlog-format=row
所以为了简便,还是考虑用Logstash.

参考博客地址以及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后缀的包.
在这里插入图片描述

二、Linux目标文件夹上解压

下载完成之后需要将logstash-6.7.2.tar.gz上传到164这台机器上,可以放在/home目录下,然后解压到目标目录,这里我们就简单的将Logstash解压到/usr/local/下,说明一下,这里我之前安装MySQL时已经创建了/usr/local/这个文件夹,如果没有创建过,需要在164这台机器上手动创建一下
创建目录命令:mkdir /usr/local/logstash
解压命令: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
…/bin/logstash -f ./mysql2es.conf
过一会就会自动的往ES里添加数据。
在这里插入图片描述

在这里是将mysql全量导入es了,下面提供的博客中包含增量导入,地址供上:
https://blog.csdn.net/camelcanoe/article/details/79759376

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值