Ubuntu 16.04에 서비스로 등록된 애플리케이션이 있습니다.
다음을 입력하면:
journalctl -u myapp.service
내 애플리케이션의 로그를 볼 수 있습니다.
동일한 서비스가 제공되는 새로운 가상 머신으로 애플리케이션을 이동하려고 합니다.journalctl -u myapp.service
입력할 때 이전 로그와 새 로그가 모두 원활하게 표시되도록 로그 파일을 새 가상 머신으로 마이그레이션할 수 있습니까 ?
이전 /var/log/journal 디렉터리의 내용을 새 가상 머신으로 바꾸고 systemd-journald 서비스를 다시 시작해 보았지만 작동하지 않는 것 같습니다.
자세한 내용은:
- 로그는 /var/log/journal/<machine-id>/에 저장됩니다.
- 디렉토리 내용은 다음과 같습니다.
$ ls /var/log/journal/05b6b1e76c6040cc99b4d34977a98eca/ [이메일 보호됨]~ [이메일 보호됨]~ [이메일 보호됨]~ [이메일 보호됨]~ system@9b08b416ae4c47a78c24b4ed77c39ea2-0000000000000001-0005b3c2d1380bae.journal system@9b08b416ae4c47a78c24b4ed77c39ea2-0000000000000248-000 5 b ccbf3f7d7c1.journal system@e5c655526bb54aa886764039cd37f897-0000000000000001-0005c4ce02f66caf.journal system.journal[이메일 보호됨]~ [이메일 보호됨]~ [이메일 보호됨]~ [이메일 보호됨]~ user-1000@7b4df282ccfe4816a30db088f2621493-00000000000000ab-0005b3c2d1be9c3b.journal user-1000.journal
- /run/log/에 파일이 없습니다.
- 이전 VM과 새 VM은 동일한 서비스, 서비스 실행 사용자 및 컴퓨터 ID를 공유합니다(이는 궁극적으로 두 VM이 서로 다른 시간에 사소한 소프트웨어/구성 설정을 사용하여 동일한 VM에서 시작(복사)되었기 때문입니다)
- 로그에 액세스하기 위해 "ubuntu"를 사용하는 사용자는 두 가상 머신 모두에서 동일한 그룹을 가지고 있습니다.
$ 그룹
우분투 adm 다이얼아웃 cdrom 플로피 sudo 오디오 딥 비디오 플러그데브 netdev lxd
- 두 가상 머신의 로그 버전은 다음과 같습니다.
$journalctl --버전
시스템 229
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN
- 로그 설정에 구성된 것보다 더 오랫동안 로그를 보관하고 싶지 않습니다.
무슨 일이야?
- 로그 폴더의 내용을 완전히 교체합니다.
- 이전과 같이 파일 소유권을 root:systemd-journal로 조정합니다.
- 이제 "root"가 전체 로그를 볼 수 있습니다.
- "ubuntu"는 일부 "현재" 로그만 볼 수 있는데, 이는 복사되지 않기 때문에 혼란스럽습니다.
답변1
관계를 찾을 수 있는 모든 항목은 해당 호스트의 로그 내용에 해당합니다 journalctl -u <myapp.service>
. systemd
그러나 (에서 man journalctl
):
액세스 가능한 모든 로그 파일의 출력은 회전되었거나 현재 작성 중인지 여부, 시스템 자체에 속하는지 또는 액세스 가능한 사용자 로그에 속하는지 여부에 관계없이 인터리브됩니다.
$USER
문제는 아마도 "새 VM"(예: 원격 PaaS 또는 로컬 호스트의 VM)에서 자신의 개인 저널 콘텐츠를 제외하고 해당 VM의 어떤 것에도 액세스할 수 없다는 사실로 귀결될 수 있습니다. 다른 저널의 경우(마이그레이션된 로그 파일이 올바른 위치에 있다고 가정) $USER
특수 권한 부여 그룹의 일부이거나 루트가 되어야 합니다.
$USER
이는 새 호스트에서 개인 저널로 인식되지 않으므로 가져온 모든 저널 파일에 적용됩니다. 특수 그룹에는 systemd-journal
, adm
및 이 포함됩니다 wheel
. 우분투에는 다른 것들이 포함될 수 있습니다.
마이그레이션된 파일에 액세스하려면 다음을 수행해야 합니다.확인 시작저것:
에서는 저널을 단일 중앙 저널로 마이그레이션합니다
/{run,var}/log/journal/
. Ubuntu VM에서 어떤 경로/run
가/var
시작되는지 잘 모르겠습니다. 어쨌든$ man 5 journald.conf
터미널에서 명령을 실행하여 Journald.conf(5)를 살펴보세요. 파일은 다음 위치에 있을 수 있습니다./run/log/journal/machine-id/*.journal, /run/log/journal/machine-id/*.journal~, /var/log/journal/machine-id/*.journal, /var/log/journal/machine-id/*.journal~
우분투 매뉴얼 페이지에서:
systemd-journald
/run/log/journal/machine-id/
/var/log/journal/machine-id/
".journal" 또는 ".journal" 접미사가 붙은 파일 에 항목을 씁니다 . 데몬이 비정상적으로 중지되거나 파일이 손상된 것으로 발견되면 ".journal~" 접미사로 이름이 바뀌고systemd-journald
새 파일에 쓰기가 시작됩니다.
[...] 사용할 수 없거나 VM의 구성 파일에 설정된 경우에 사용됩니다
/run/...
./var/log/journal
Storage=volatile
/etc/systemd/journald.conf
- 귀하의 가상 머신은
$USER
이 그룹의 구성원입니다wheel
(예:).
다른 제안 및 단계가 적용될 수 있지만 계속 진행하기에는 정보가 충분하지 않습니다. 필요한 경우 답변을 완료할 수 있도록 댓글로 신고해 주세요.