docker安装logstash,可以用来同步MySQL和elasticsearch数据,搭配食用更香

logstash是什么?

用官方的话来说,logstash可以用来集中、转换和存储数据,这边我主要是用来同步elasticsearch和MySQL之间的数据

官网介绍:Logstash:收集、解析和转换日志 | Elastic

 拉取logstash镜像

我们还是依照国际惯例,先去docker中拉取logstash的镜像

1.官网 > 下载 > dicker

2.Running Logstash on Docker | Logstash Reference [7.17] | Elastic

如果版本不对记得在左上角点击切换 

接下来我们输入命令拉取镜像

docker pull logstash:7.17.21

进行启动前的准备

我们查看官方文档,发现有需要挂载的配置文件

Configuring Logstash for Docker | Logstash Reference [7.17] | Elastic

创建文件夹与logstash进行挂载

mkdir -p /opt/elasticsearch/logstash/config /opt/elasticsearch/logstash/data /opt/elasticsearch/logstash/pipeline

注意:这是创建了三个文件夹,文件夹名字之间是用空格进行分割的 

先新建好相应的文件夹,然后再创建相应配置文件

运行logstash拷贝文件配置

因为我怕配置文件搞混了,我们直接拷贝一份出来

先随便运行一下logstash

docker run -it --name logstash  -d logstash:7.17.21

然后我们开始拷贝他的配置文件

docker cp logstash:/usr/share/logstash/config /opt/elasticsearch/logstash/
docker cp logstash:/usr/share/logstash/data /opt/elasticsearch/logstash/
docker cp logstash:/usr/share/logstash/pipeline /opt/elasticsearch/logstash/

然后我们停止logstash删除他

docker stop logstash

docker rm logstash

接下来我们给文件夹赋权限

chmod 777 -R /opt/elasticsearch/logstash/

启动logstash

接下来我们运行脚本进行挂载以及启动

docker run -it --name logstash \
--network mu \
-v /opt/elasticsearch/logstash/config:/usr/share/logstash/config \
-v /opt/elasticsearch/logstash/data:/usr/share/logstash/data \
-v /opt/elasticsearch/logstash/pipeline:/usr/share/logstash/pipeline \
-d logstash:7.17.21

 运行成功!

logstash连接MySQL数据库

按照这个国际惯例哈,我们先打开官方文档:Jdbc input plugin | Logstash Reference [7.17] | Elastic

从官网我们知道需要在配置文件里面写这些东西

大概就是

input {
  jdbc {
    jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
    jdbc_user => "mysql"
    parameters => { "favorite_artist" => "Beethoven" }
    schedule => "* * * * *"
    statement => "SELECT * from songs where artist = :favorite_artist"
  }
}
  • jdbc_driver_library: 指定JDBC驱动的jar文件路径,这是连接到MySQL数据库所必需的。
  • jdbc_driver_class: 指定JDBC驱动的类名,对于MySQL,这个类名通常是com.mysql.jdbc.Driver
  • jdbc_connection_string: 指定连接到MySQL数据库的连接字符串,包括数据库的地址和端口以及数据库名。
  • jdbc_user: 指定连接到MySQL数据库的用户名。
  • parameters: 定义一个参数映射,可以在SQL语句中使用这些参数。在这个例子中,定义了一个参数favorite_artist,其值为Beethoven
  • schedule: 定义一个定时任务,用于定期执行SQL查询。这个例子中使用了* * * * *,表示每分钟执行一次。
  • statement: 定义要执行的SQL查询语句。在这个例子中,查询语句是SELECT * from songs where artist = :favorite_artist,其中:favorite_artist是一个参数,它会被parameters中定义的值替换。

我们打开宿主机挂载的配置文件,将logstash-sample.conf拷贝一份以防丢失,然后我们编辑logstash-sample.conf

cp /opt/elasticsearch/logstash/config/logstash-sample.conf /opt/elasticsearch/logstash/config/logstash-sample.conf.bk

我们修改logstash.yml文件

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
path.config: /usr/share/logstash/config/jdbc/*.conf
path.logs: /usr/share/logstash/logs

然后我们创建jdbc文件夹

将jar包放入jdbc中(MySQL的jar包,可以去网上搜索,也可以在maven仓库中查找)

在 jdbc 文件夹中创建 jdbc.conf 文件

编辑jdbc.conf文件为

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/config/jdbc/mysql-connector-java-8.0.29.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://192.168.101.100:3306/my_db"
    jdbc_user => "root"
    jdbc_password => "root"
    parameters => { "favorite_artist" => "Beethoven" }
    schedule => "* * * * *"
    statement => "SELECT * from post where 1 = 1"
  }
}

output{
   stdout { codec => rubydebug }
}

 删除原来的logstash 

docker rm logstash

然后创建启动

docker run -d --name logstash --network mu \
-v /opt/elasticsearch/logstash/config:/usr/share/logstash/config \
-v /opt/elasticsearch/logstash/data:/usr/share/logstash/data:rw \
-v /opt/elasticsearch/logstash/pipeline:/usr/share/logstash/pipeline \
-v /usr/share/logstash/data/queue:/usr/share/logstash/data/queue:rw -u root \ logstash:7.17.21

ok,启动成功 

  • 30
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值