我想查看Docker Swarm服務中的日誌。不僅因爲我希望我所有的日誌都是按照常規原因收集的,而且還因爲我想弄清楚爲什麼服務崩潰的原因是"task: non-zero exit (1)"
。有沒有辦法在Docker Swarm中獲取日誌?
我在管道中看到there is work to implement docker logs
,但是有沒有辦法訪問生產服務的日誌?或者Docker Swarm沒有準備好用於生產日誌?
我想查看Docker Swarm服務中的日誌。不僅因爲我希望我所有的日誌都是按照常規原因收集的,而且還因爲我想弄清楚爲什麼服務崩潰的原因是"task: non-zero exit (1)"
。有沒有辦法在Docker Swarm中獲取日誌?
我在管道中看到there is work to implement docker logs
,但是有沒有辦法訪問生產服務的日誌?或者Docker Swarm沒有準備好用於生產日誌?
我們已經成功完成的是利用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服務更新來調整您的服務而不會破壞它們。
使用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
即將到來的搬運工1.13有你上面提到的變化。我認爲他們現在應該有測試版了。否則,一個好的做法是做@Dockstar推薦的配置日誌驅動程序。我們將logstash/kibana與gelf驅動程序一起使用,並且在docker守護進程中配置了該配置,所以我們的羣集中的任何docker主機都會登錄到kibana。另外一定要抓住系統日誌輸出,因爲這是當你的容器死亡(例如內存不足)或者碼頭本身出現問題時的情況。 –