Bagaimana cara logrotate dengan systemd?

11

Saya menjalankan aplikasi simpul menggunakan systemd dengan file unit. Log aplikasi dapat dilihat menggunakan journalctl -u example.comtetapi log akan terpotong di beberapa titik, menghapus riwayat (yang saya butuhkan untuk debugging).

Bagaimana cara mengkonfigurasi rotasi log dengan systemd sehingga log aplikasi saya disimpan example.com.log.1, example.com.log.2dll. Sehingga saya dapat menanyakan riwayat aplikasi saya?

Ini adalah file unit saya:

ExecStart=/usr/bin/node keystone.js
#Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=example.com
User=user
Group=user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
htor
sumber
1
Harap sertakan versi systemd Anda serta OS dan versi Anda.
Mark Stosberg
1
Tinjau man journald.confuntuk meninjau opsi yang mengendalikan ruang disk jurnal systemd. Jika Anda masih memiliki pertanyaan, poskan konten Anda /etc/systemd/journald.conf.
Mark Stosberg

Jawaban:

6

Meningkatkan Penyimpanan

Jika Anda menyimpan ke disk Anda dapat menambah jumlah ruang yang digunakan dengan mengubah SystemMaxUsedan / atau SystemKeepFree. Memiliki lebih banyak ruang akan memungkinkan lebih banyak entri disimpan.

Secara default batas penggunaan maksimum ( SystemMaxUse) adalah 10% dari sistem file, dan nilai ruang bebas minimum ( SystemKeepFree) adalah 15% - meskipun keduanya dibatasi pada 4G.

Rotasi Jurnal

Jurnal harus diputar secara otomatis ketika mereka mencapai SystemMaxFileSizenilai, dan jumlah jurnal dikendalikan oleh SystemMaxFiles. Jika Anda lebih suka rotasi berdasarkan waktu Anda dapat mengatur MaxFileSecuntuk mengatur entri waktu maksimum disimpan dalam satu jurnal.

Catatan tentang Lokasi / Jenis Penyimpanan

Dengan journald Anda dapat memilih untuk menyimpan entri jurnal baik di memori ( Storage=volatile) atau di disk ( Storage=persistent). Di atas mengasumsikan Anda menyimpan jurnal pada disk - jika ini bukan "Sistem" perlu diganti oleh "Runtime" dalam variabel di atas.

Rincian lebih lanjut tersedia di man journald.conf.

Alternatif - Melewati entri jurnal

Jika Anda sudah terbiasa dengan daemon SYSLOG tradisional, Anda dapat meneruskan acara jurnal dengan mengatur ForwardToSyslogopsi (yang meneruskan pesan dengan segera) atau meminta daemon syslog bahave seperti klien jurnal dan mengambil log itu sendiri.

DougC
sumber