Jak skonfigurować zasady przechowywania dzienników dla poszczególnych jednostek za pomocą dziennika?


14

Mam jedną konkretną usługę, która rejestruje rzadkie, ale ważne informacje. Założyłem go kilka miesięcy temu, a dziś biegnę journalctl -n 50 --unit=my-servicetylko po to, aby znaleźć wpisy.

Jestem bardzo zadowolony z tego zachowania w przypadku większości jednostek - albo potrzebuję czegoś, co wydarzyło się od razu (lub najwyżej kilka dni temu), i nie dbam o miesięczne rekordy.

Czy istnieje jednak sposób, aby powiedzieć, journaldże ma niezależne zasady przechowywania i przechowywania danych dla pojedynczej konkretnej jednostki? Chcę zachować te konkretne dzienniki przez, powiedzmy, 5 lat - bez względu na rozmiar. Nie powinno to mieć wpływu na dzienniki innych jednostek i powinny zachować swoje dotychczasowe zachowanie.

Tracę trochę zrozumienia journald.conf(5)i nie mogę zrozumieć, kiedy w ogóle możliwa jest konfiguracja na jednostkę. Jeśli tak - doceniłbym krótki konkretny przykład - który plik powinienem edytować / utworzyć i co napisać. Lub, jeśli wiesz na pewno, że na pewno nie jest to wykonalne - to też byłaby dobra odpowiedź.

UWAGA: Mój szczególny przypadek dotyczy hosta Arch Linux, ale myślę, że nie powinno to mieć większego znaczenia.


Nie mogę skomentować powyższej odpowiedzi, aby dodać ten link do problemu dotyczącego dodawania tej funkcji do dziennika, więc oto inna odpowiedź: github.com/systemd/systemd/issues/4751
swoop81

Odpowiedzi:


7

Wygląda na to, że najprawdopodobniej nie mam szczęścia z dziennikiem. Chyba że wymyślę sposób na założenie niezależnego dziennika „przechowywania długoterminowego” (jak obecnie istnieją różne dzienniki dla poszczególnych użytkowników), ale nie jestem pewien, czy jest to rozsądne i rozsądne podejście. Myślę, że skonfigurowanie syslogd (i logrotate) byłoby łatwiejsze.

Ta funkcja nie była obecna pod koniec 2014 roku , co potwierdził sam Lennart.

I wygląda na to, że jeszcze go tu nie ma. Przynajmniej wiersz „dziennik: dopuszczaj czasy przechowywania według priorytetu i dla usługi podczas obracania / odkurzania” jest nadal w pliku TODO (link do wersji z 07.07.2016).


3
Wydaje się, że jest to bardzo duża wada konstrukcyjna, prawie okaleczająca. Zwłaszcza, jeśli ktoś chce zmniejszyć retencję lub przynajmniej poziom logu bardzo gadatliwych jednostek, które zapychają logi.
orion

1
Dla każdego, kto natknie się na to pytanie, odnośnik w TODO jest nadal obecny od tego komentarza (26.03.18): github.com/systemd/systemd/blob/…
timss

1
Próbując uzyskać trochę przyczepności, podniosłem go jako problem z projektem - github.com/systemd/systemd/issues/9519 .
slm

1

Generowanie pliku dziennika jest niezwykle proste. Domyślnie całe logowanie do dziennika jest również przenoszone do syslog i to ustawienie domyślne musi być na miejscu. Plik rsyslog.conf kontroluje sposób obsługi wpisów przekazywanych do syslog. Ponadto SyslogFacilitydomyślnie daemontak, aby wpisy dziennika dla dowolnej usługi zwykle kończyły się w daemon.logpliku w /var/log.

W pliku usługi dodaj do sekcji [usługa]

SyslogFacility=local2

(liczba może wynosić od 0 do 7) https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Zmodyfikuj plik /etc/rsyslog.conf (znajdź istniejące linie do modyfikacji), aby local2 był zalogowany do określonego pliku (pierwszy wiersz) i idealnie nie był zalogowany do syslog, dodając local2.nonejak pokazano (jest już w dzienniku).

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[edytuj] musisz również poprawić catch all

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

Oczywiście faktyczne zatrzymanie musi zostać wykonane przez logrotate.

HTH

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.