ELK - Logstash连接MySQL
Posted Helios_Fz的学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK - Logstash连接MySQL相关的知识,希望对你有一定的参考价值。
Logstash连接mysql
下载MySQL驱动
打开驱动jar包下载地址:https://dev.mysql.com/downloads/connector/j/
选择平台无关的版本
下载zip版本,在本地打开,解压出jar文件
因为logstash在ubuntu下的默认配置文件路径是 /etc/logstash,所以我在/etc/logstash目录下新建了一个drivers文件夹,用来放置各种驱动。
# 切换目录 cd /etc/logstash # 创建文件夹 mkdir drivers
然后将解压好的驱动放到drivers文件夹中。
配置Logstash
在logstash存放配置文件的文件夹中,新建一个连接MySQL的配置文件。
# 切换目录 cd /etc/logstash/conf.d # 创建文件 touch logstash-mysql.conf
logstash-mysql.conf文件内容如下(注意,这里的jar包用的是8.0.20):
input { stdin { } jdbc { # 数据库连接 jdbc_connection_string => "jdbc:mysql://你的数据库IP:3306/你的数据库" # 用户名密码 jdbc_user => "用户名" jdbc_password => "密码" # 驱动jar包的位置 jdbc_driver_library => "/etc/logstash/drivers/mysql-connector-java-8.0.20.jar" # mysql的Driver jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true" jdbc_page_size => "50000" statement => "select * from 表名" schedule => "* * * * *" # elastic search的索引名,相当于mysql的表名 #type => "information_summary" } } filter { json { source => "message" remove_field => ["message"] } } output { elasticsearch { hosts => "localhost:9200" # index名 index => "index名" # 需要关联的数据库中有有一个id字段,对应索引的id号 document_id => "%{id}" } stdout { codec => json_lines } }
启动Logstash
切换到ubuntu下logstash执行文件目录:
cd /usr/share/logstash/bin/
运行命令,使新的配置文件生效:
./logstash -f /etc/logstash/conf.d/logstash-mysql.conf
如果你的机器上已经启动过logstash实例的话,可能会报如下错误:
Logstash could not be started because there is already another instance using the configured data directory.
If you wish to run multiple instances, you must change the "path.data" setting
这时候需要把命令改为:
./logstash -f /etc/logstash/conf.d/logstash-mysql.conf --path.data=/usr/logstash_data/你的index名
这样就会把通过这个配置拿到的数据落在新的文件夹中,也不会报错了。
以上是关于ELK - Logstash连接MySQL的主要内容,如果未能解决你的问题,请参考以下文章