2017-05-16 1 views
3

저는 Kuberenetes를 통해 배포하고 있습니다. Google Cloud에는 django 프로젝트와 uwsgi 컨테이너가 있습니다.Google StackDrive 컨테이너의 로깅 수준이 항상 uwsgi가있는 오류 수준

로깅을 보려면 stackdrive 로깅 도구를 사용하고 있습니다. 문제는 모든 항목이 심각하지 않은 것으로 간주 되어도 심각도가 ERROR 인 것으로 생각됩니다. uwsgi의 로그는 stderr 또는 그와 비슷한 것으로 기록됩니다.

그림에서 django는 INFO 레벨을 사용하고 있지만 이는 스택 드라이브에 의해 ERROR으로 수신됨을 알 수 있습니다.

enter image description here

이 내가 uwsgi을 설정하는 방법입니다. stderr에 기록

[uwsgi] master = true socket = :3031 chdir = . wsgi-file = docker.wsgi processes = 4 threads = 2 socket-timeout = 90 harakiri = 90 http = :8000 env = prometheus_multiproc_dir=multi enable-threads = yes lazy-apps = yes pidfile=/tmp/project-master.pid

답변

3

는 Kubernetes 로그는 항상 오류로 태그 -이 하드 코딩 스택 드라이버 로그 에이전트입니다. 마찬가지로 stdout에 기록 된 로그에는 항상 INFO 태그가 지정됩니다.

오류가없는 로그 메시지를 stdout에 기록하도록 응용 프로그램을 구성 할 수 있으면 그렇게하십시오. 또 다른 가능한 방법은 로그에 파일을 쓰고 해당 파일의 "tail -f"명령을 동일한 창에서 사이드카 컨테이너로 실행 한 다음 사이드카 컨테이너 아래의 Stackdriver 로그 뷰어에서 로그를 찾는 것입니다. 마지막으로 로그를 Stackdriver Logging API에 직접 기록하는 것을 고려해 볼 수 있습니다. 그러면 각 항목의 내용을 완벽하게 제어 할 수 있습니다.

+0

와우, 고마워. 나는이 모든 로그가 왜 '오류'처럼 보이는지에 관해서 머리를 긁어왔다. –

+0

내 대답에 추가하려면 로그를 stdout/stderr에 JSON 형식으로 쓸 수 있다면 로깅 에이전트가 구조화 된 페이로드로 구문 분석하고 페이로드의 "심각도"필드가 하드 코드 된 심각도를 재정의합니다. –