好的,经过更多研究和一些尝试和错误,这是我的解决方案,它可能不是最好的,但它正在工作。
步骤:
1)创建网络:
docker network create elastic
2) 运行es:
docker run -d --name elasticsearch --network elastic --restart unless-stopped -v /Data/elastic:/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
3) 运行 kibana:
docker run -d --name kibana --network elastic --restart unless-stopped -p 5601:5601 kibana:7.6.2
4) 创建一个logstash.conf:
input {
syslog {
port => 9500
type => "docker"
}
}
filter {
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "docker_logs"
}
}
5) 运行logstash:
docker run -d --rm -v $PWD/config/syslog.conf:/usr/share/logstash/config/logstash.conf -p 9500:9500 --name logstash --network elastic logstash:7.6.2 bin/logstash -f /usr/share/logstash/config/logstash.conf
6) 运行容器:
docker run --log-driver syslog --log-opt syslog-address=tcp://1.2.3.4:9500 alpine echo hello world
作为 1.2.3.4 的 docker 主机的 ip。
7) 打开kibana:
open http://1.2.3.4:5601
8) 做我想学的 kibana 东西
好的,这就是我的解决方案...