我可以遷移 ubuntu journald 日誌嗎?
我有一個在 Ubuntu 16.04 中註冊為服務的應用程序
如果我輸入:
journalctl -u myapp.service
我可以看到我的應用程序的日誌。
我正在將我的應用程序移動到一個新的虛擬機,在那裡將提供相同的服務。是否可以將日誌文件遷移到新的虛擬機,這樣如果我鍵入
journalctl -u myapp.service
它將無縫顯示所有舊日誌和任何新日誌?我試圖將舊 /var/log/journal 目錄的內容交換到新 VM 中,並重新啟動 systemd-journald 服務,但它似乎不起作用。
更多細節:
- 日誌儲存在 /var/log/journal/< machine-id >/
- 目錄內容如下所示:
$ ls /var/log/journal/05b6b1e76c6040cc99b4d34977a98eca/ system@0005b3c2d13e0c14-f5dafb4f81b14546.journal~ system@0005bccfbf5ba0a3-489b00efc9586207.journal~ system@0005bd32e69bb664-572fb5c4ae0871b3.journal~ system@0005c4ce02fb0068-2e040749ddd4a06f.journal~ system@9b08b416ae4c47a78c24b4ed77c39ea2-0000000000000001-0005b3c2d1380bae .journal system@9b08b416ae4c47a78c24b4ed77c39ea2-0000000000000248-0005bccbf3f7d7c1.journal system@e5c655526bb54aa886764039cd37f897-0000000000000001-0005c4ce02f66caf.journal system.journal user-1000@0005b3c2d1bad476-9ffb04f7ed320462.journal~ user-1000@0005bccdb3bf35c7-f73e5bfc47f269c9.journal~ user-1000@0005bd32e724853a-f40e7f8131217c05 .journal~ user-1000@0005c4cf22d203b5-66cc27013c97695d.journal~ user-1000@7b4df282ccfe4816a30db088f2621493-00000000000000ab-0005b3c2d1be9c3b.journal user-1000.
- /run/log/ 中沒有文件
- 舊虛擬機和新虛擬機共享相同的服務、服務執行使用者和機器 ID(這是因為最終兩個虛擬機都源自(複製自)同一虛擬機,只是在不同的時間和次要的軟體/配置設置)
- 我使用“ubuntu”訪問日誌的使用者在兩個虛擬機中具有相同的組:
$組
ubuntu adm dialout cdrom 磁片 sudo 音頻 dip 影片 plugdev netdev lxd
- 兩個 VM 上的日誌版本是:
$ journalctl –version
系統 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”只能看到一些“目前”日誌,這很令人困惑,因為它們不是複製過來的
您將找到關係的所有條目都
journalctl -u <myapp.service>
對應於systemd
給定主機的日誌內容。但是(來自man journalctl
):輸出來自所有可訪問的日誌文件,無論它們是旋轉的還是目前正在寫入的,也不管它們是屬於系統本身還是可訪問的使用者日誌。
問題可能歸結為這樣一個事實,即在“新 VM”(例如遠端 PaaS,甚至本地主機上的 VM)上,您
$USER
在該 VM 上可能無法訪問除他/她自己的私人日誌之外的任何內容. 對於任何其他日誌(如果您遷移的日誌文件位於正確的位置),您$USER
將需要成為一些特殊授權組的一部分或成為 root。這將適用於任何導入的期刊文件,因為這些文件不會被辨識為您
$USER
在新主機上的私人期刊。特殊組包括systemd-journal
、adm
和wheel
。Ubuntu 可能包括其他人。要訪問您遷移的文件,您應該開始確保:
- 您將期刊遷移到
/{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~
從 Ubuntu 手冊頁:
systemd-journald
將條目寫入以“.journal”後綴/run/log/journal/machine-id/
或/var/log/journal/machine-id/
帶有“.journal”後綴的文件。如果守護程序不干淨地停止,或者如果發現文件已損壞,則使用“.journal~”後綴將它們重命名,並systemd-journald
開始寫入新文件。$$ … $$
/run/...
在/var/log/journal
不可用或Storage=volatile
在 VM 的/etc/systemd/journald.conf
配置文件中設置時使用。
- 您的虛擬機
$USER
是該wheel
組的成員(例如)。其他建議和步驟可能適用,但我沒有足夠的資訊繼續執行。請在評論中報告,因此如果需要,我可以完成此答案。