[英]Mac OS X, Docker: Get container logs out of Docker for Mac VM into an ELK Stack in the same Docker for Mac
問題:
- ELK Stack (7.6.2) 在 Docker for Mac (2.2.0.5) 中運行
- 從Docker 在 Mac 上找不到容器日志文件得知,Mac 上的容器日志保存在 Mac VM 的 Docker 中。
問題:
我怎樣才能將(一些)容器日志 - 連續地 - 從 VM 中取出到 ELK 堆棧中,該堆棧在 Mac 的同一 Docker 上運行。
是的,我知道在 Linux 中會容易得多。 但目前我只有我的 Mac。
是的,我知道我可以將帶有一些 Mac 魔法的文件從 VM 復制到普通的 Mac FS 中,然后將其放入 ELK 堆棧中。 但如果可能的話,我想避免這個手動步驟。 是的,我知道我可以做一個 cron 工作,它會自動完成,但我也想避免這種情況。
那么知道如何實現這一目標嗎?
謝謝,亞歷克斯
好的,經過更多的研究和一些嘗試和錯誤,這是我的解決方案,它可能不是最好的,但它正在工作。
腳步:
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
docker 主機的 ip 為 1.2.3.4。
7)打開kibana:
open http://1.2.3.4:5601
8) 做我想學的 kibana 東西
好的,這就是我的解決方案...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.