如题,要解决题目中的问题,之前在博客中我写了如何在windows环境下配置ELK,以及同步mysql数据库的问题,但在生产环境中一般都是linux, 所以又要折腾一番了... 步骤如下:
deviantony/docker-elk
# https://github.com/elastic/logstash-docker
FROM docker.elastic.co/logstash/logstash-oss:6.2.4
# Add your logstash plugins setup here
# Example: RUN logstash-plugin install logstash-filter-json
RUN logstash-plugin install logstash-input-jdbc
RUN logstash-plugin install logstash-output-elasticsearch
ADD mysql-connector-java-5.1.45-bin.jar /usr/share/logstash/mysql-connector-java-5.1.45-bin.jar解释一下这几个命令在干什么,首先前面是安装了两个插件,最后是将java jar包复制到了镜像文件系统
docker run :创建一个新的容器并运行一个命令
docker add : ADD指令不仅能够将构建命令所在的主机本地的文件或目录,而且能够将远程URL所对应的文件或目录,作为资源复制到镜像文件系统。
然后用docker-compose build进行下载编译,中间可能会出错,要翻墙,可能翻墙了都会出错,要多试几次,网络原因造成的,我就试了好多次,就是玄学。。。
input {
stdin {
}
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost/test"
jdbc_user => "root"
jdbc_password => "password"
jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-5.1.45-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
codec => plain {charset => "UTF-8"}
record_last_run => true
jdbc_paging_enabled => "true"
jdbc_page_size => "1000"
statement => "select * from test"
schedule => "* * * * *"
type => "jdbc"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "press"
document_id => "%{object_id}"
document_type => "document"
}
stdout {
codec => json_lines
}
} 最后docker-compose up启动,可以成功看到logstash的日志就成功了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3129845/ ,如需转载,请注明出处,否则将追究法律责任。