2016-12-02 86 views
0

我想查看Docker Swarm服務中的日誌。不僅因爲我希望我所有的日誌都是按照常規原因收集的,而且還因爲我想弄清楚爲什麼服務崩潰的原因是"task: non-zero exit (1)"有沒有辦法在Docker Swarm中獲取日誌?

我在管道中看到there is work to implement docker logs,但是有沒有辦法訪問生產服務的日誌?或者Docker Swarm沒有準備好用於生產日誌?

+0

即將到來的搬運工1.13有你上面提到的變化。我認爲他們現在應該有測試版了。否則,一個好的做法是做@Dockstar推薦的配置日誌驅動程序。我們將logstash/kibana與gelf驅動程序一起使用,並且在docker守護進程中配置了該配置,所以我們的羣集中的任何docker主機都會登錄到kibana。另外一定要抓住系統日誌輸出,因爲這是當你的容器死亡(例如內存不足)或者碼頭本身出現問題時的情況。 –

回答

0

我們已經成功完成的是利用GrayLog。如果您查看docker run文檔,您可以指定一個日誌驅動程序和日誌選項,允許您將所有控制檯消息發送到一個graylog羣集。

docker run... --log-driver=gelf --log-opt gelf-address=udp://your.gelf.ip.address:port --log-opt tag="YourIdentifier" 

您也可以在技術上對碼頭工人守護進程全球一級配置它,但我建議不要這一點。它不會讓你添加「標籤」選項,這對篩選結果非常有用。

Docker服務定義還支持日誌驅動程序和日誌選項,因此您可以使用docker服務更新來調整您的服務而不會破壞它們。

+0

非常感謝!我會好好看看。很難挑出文檔的相關部分,非常有用的指導! – Joe

+0

對不起,您能否確認這適用於Swarm?如果可能的話,指出有關在Swarm中使用日誌驅動程序的任何文檔? – Joe

+0

嘿!我可以證實這在羣集中起作用,因爲我們正在跨羣集實例收集這些日誌。 Docker的日誌配置位於https://docs.docker.com/engine/admin/logging/overview/。 – Dockstar

4

使用Docker Swarm 17.03,您現在可以通過命令行訪問多實例服務的日誌。

docker service logs -f {NAME_OF_THE_SERVICE} 

你可以得到的服務的名稱:

docker service ls 

注意,這是一個實驗性功能(未投入生產),爲了使用它,你必須啓用實驗模式:

更新:碼頭l ogs服務現在是docker> = 17.06的標準功能。 https://docs.docker.com/engine/reference/commandline/service_logs/#parent-command

類似的問題:How to log container in docker swarm mode

相關問題