2016-09-29 5 views
1

Docker 1.12가 작동하는 단일 도커 호스트가 있고 gliderlabs/logspout을 사용하여 pockault에 도커 로그를 중앙 집중화 할 수 있습니다.Docker swarm에서 글로벌 syslog 로깅을 위해 logspout을 사용할 수 있습니까?

이 구성을 Docker Swarm의 모든 노드에 배포 할 수 있습니까?

docker service create --name logspout --mode=global \ 
     gliderlabs/logspout \ 
     syslog+tls://<yourhost>.papertrailapp.com:<yourport> 

하지만 서비스는 지속적으로 죽고 respawns :

이 나는 ​​노력했다. 도커 (non-swarm 인스턴스)에서 도커 소켓 unix:///var/run/docker.sockpapertrail docs에 매핑해야합니다. 옴 서비스에서 가능합니까? 도커 소켓을 서비스에 어떻게 장착합니까?

답변

0

업데이트 : 현재 gliderlabs/logspout 컨테이너는 처음 연결 한 후 로깅을 중지 것으로 보인다. 결과를 많이 검색 한 후 (많은 시간 초과/다시 연결 문제를 지적하는 것처럼 보임). 나는 도커의 --log-driver 옵션으로 이동하기로 결정했습니다. 이것은 모든 시스템을 만지고 데몬을 재시작하는 것을 의미했지만, 우분투 인스턴스에 /etc/default/docker 파일을 편집하고 도커를 다시 시작하는 것 이외에는 서비스가 중단되지 않았습니다.

원래 대답 나는 마법의 바인드 명령을 발견 this article by Sematext 연구의 화려한 조각에

감사 :

docker service create --name logspout \ 
    --mode=global -e SYSLOG_TAG=swarm --publish <yourport>:<yourport> \ 
    --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ 
    gliderlabs/logspout syslog+tls://<yourhost>.papertrailapp.com:<yourport> 

마법이 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock 명령입니다. 또한 SYSLOG_TAG을 사용하여 syslog가 웜에서 오는 것으로 식별하는 것이 유리합니다. 기본적으로 호스트 이름은 컨테이너 ID (변경 가능하고 다소 불투명하기 때문)입니다. 로깅의 로깅 포트를 무작위로 게시/노출해야하는 것으로 보입니다.

노드를 웜에 추가하면이 서비스가 자동으로 배포되어 새 호스트에 구성됩니다! 군중 마술!

Sep 29 17:07:01 8d551da912a4 swarm: File "/opt/conda/envs/clientapi/lib/python3.5/site-packages/werkzeug/exceptions.py", line 646, in __call__ 
Sep 29 17:07:01 8d551da912a4 swarm:  raise self.mapping[code](*args, **kwargs) 
Sep 29 17:07:01 8d551da912a4 swarm: werkzeug.exceptions.InternalServerError: 500: Internal Server Error 
Sep 29 17:11:05 cd73e5278032 swarm: .................... 
Sep 29 17:11:05 cd73e5278032 swarm: complete: opportunities = added 0 updated 0 out of 2023 
당신은 쉽게에서 컨테이너 ID와 떼 식별자를 볼 수 있습니다

포맷 읽을 수