簡體   English   中英

Mac OS X,Docker:將容器日志從 Docker for Mac VM 中獲取到同一 Docker for Mac 中的 ELK 堆棧中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM