一、Logstash 安装
查找镜像
docker search logstash
下载镜像
docker pull logstash:6.5.0
6.5.0
: 因为我的elasticsearch版本是6.5.0,故选此版本。
运行
docker run --name logstash logstash:6.5.0
查看是否启动
docker ps -a
进入容器修改配置
winpty docker exec -it logstash bash (docker exec -it logstash /bin/bash)
cd config
vi logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.url: http://172.17.0.2:9200
172.17.0.2
elasticsearch 的 ip
获取容器IP
docker inspect --format ‘{{ .NetworkSettings.IPAddress }}’
退出重新启动
dcoker restart logstash
二、Logstash 导入数据
下载数据源(movies.cvs文件,很经典的测试数据,自行搜索下载)
将数据文件拷贝至容器
docker cp G:/usr/local/logstash/movies.csv logstash:/usr/share/logstash/config/
将配置文件拷贝至容器
docker cp G:/usr/local/logstash/logstash.conf logstash:/usr/share/logstash/config/
1 从容器拷贝文件到宿主机
拷贝方式为:
docker cp 容器名:容器中要拷贝的文件名及其路径 要拷贝到宿主机里面对应的路径
2 从宿主机拷贝文件到容器
拷贝方式为:
docker cp 宿主机中要拷贝的文件名及其路径 容器名:要拷贝到容器里面对应的路径
配置文件内容
input {
file {
path => "/usr/share/logstash/config/movies.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
columns => ["id","content","genre"]
}
mutate {
split => { "genre" => "|" }
remove_field => ["path", "host","@timestamp","message"]
}
mutate {
split => ["content", "("]
add_field => { "title" => "%{[content][0]}"}
add_field => { "year" => "%{[content][1]}"}
}
# mutate {
# gsub => [
#
# "year", "\\)", ""
# ]
# }
mutate {
convert => {
"year" => "integer"
}
strip => ["title"]
remove_field => ["path", "host","@timestamp","message","content"]
}
}
output {
elasticsearch {
hosts => "http://172.17.0.2:9200"
index => "movies"
document_type => "movies"
document_id => "%{id}"
}
stdout {}
}
path => "/usr/share/logstash/config/movies.csv"
这里一定是cvs的绝对路径
document_type => "movies"
elasticsearch 版本 6.X 及之前需要 type字段。
执行导数
进入容器
winpty docker exec -it logstash bash (docker exec -it logstash /bin/bash)
导数
bin/logstash -f ./config/logstash.conf