이전 저널 로그를 어떻게 보나요 (회전 후)?


23

우분투 16.04에서 도커를 실행 중이며 로그를보고 싶습니다. 그러나 어떤 종류의 회전이거나 로그가 특정 크기로 커지는 것으로 추측 한 후에 로그를 볼 수 없습니다.

journald.conf를 변경하지 않았으므로 기본값을 사용하고 있습니다.

내가보고있는 예 :

systemctl docker status서비스가 활성화되었음을 확인합니다 since Thu 2016-10-13 18:56:28 UTC.

그러나 내가 뭔가를 실행 journalctl -u docker.service --until "2016-10-13 22:00"하면 얻을 수있는 유일한 결과는 -- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --예상대로 해당 범위의 로그를 볼 수 있다는 것입니다.

내 질문은 journalctl로 오래된 로그를 볼 수없는 이유는 무엇이며 로그를 볼 수 있도록이 문제를 어떻게 해결할 수 있습니까?

답변:


15

마지막 부팅 이후 저널을 검토하려고했기 때문일 수 있습니다.

Ubuntu 16.04에서 저널 스토리지는 기본적으로 인 메모리입니다. 당신은 열어 지속적으로 기본값을 변경할 수 있습니다 /etc/systemd/journald.conf및 변화 Storage=에서 줄 autopersistent. systemctl restart systemd-journald구성 파일 편집 후 저널링을 다시 시작해야 할 수도 있습니다 .

나는 저널이 기본적으로 영속적이어야 한다고 생각 하므로 그것에 관한 버그를 열었다.


기본적으로 영구적이어야하며 해당 설정을 변경해야한다는 점에 동의하지만이 시스템이 재부팅되지 않았으므로 단독으로 문제를 해결할 것이라고 100 % 확신하지는 않습니다. 그래도 그 문제를 제기하게되어 기쁩니다.
jdf

특정 조건에서 로그가 불완전한 메타 데이터로 저널에 도착할 수 있으므로 전체 journalctl로그를 검토 할 때 단위 로그가 아닌 로그를 찾을 수 있습니다 . 이는 장치가 종료되기 직전에 문제를 기록하는 것으로 알려져 있습니다. 로그는 저널링으로 전송 된 후 저널링되어 메타 데이터에 대한 쿼리를 발행합니다. 때때로 그 과정이 존재합니다. 그러나 그것은 귀하의 경우에 완벽하게 맞는 것처럼 들리지 않습니다.
Mark Stosberg

3

이것이 발생하는 이유는 저장된 저널 파일의 크기에 대한 기본값 때문입니다. docs 에 이것 대한 자세한 내용이 있습니다. 내가 링크 한 전체 섹션을 읽을 가치가 있지만 기본값은 다음과 같습니다.

journald will use 10% of the disk or 4G, whichever is smaller.

journald will leave free 15% of the disk or 4G, whichever is larger.

Storage=persistent다른 응답 메모와 같이 journald.conf에 있다고 가정하고 마지막 부팅에서 로그를 보려면 명령 의 --boot=-1플래그를 journalctl사용하여 이전 부팅에서 로그를 가져올 수 있습니다.

호스트가 재부팅되지 않은 것으로 확인 된 OP의 경우 로그 손실은 단순히 SystemMaxUse및 / 또는 SystemKeepFree기본값으로 인해 발생했습니다 .

참고 : 나는 OP 이며이 질문은 여전히 ​​까다로워지고 있습니다. 따라서 저널링 (및 rtfm)에 대해 더 많은 경험을 얻었으므로 다른 사람들을 돕기 위해 여기에 게시하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.