Gdzie pakiet / opt powinien zapisywać dzienniki?

13

Instaluję niestandardowy pakiet /opt/package_name, przechowuję pliki konfiguracyjne /etc/opt/package_namei pliki statyczne w /var/opt/package_name/static/- wszystko zgodnie z konwencjami sugerowanymi przez FHS. [ 1 ] [ 2 ] [ 3 ]

Potrzebuję również przechowywać niektóre pliki dziennika. Chcę, aby były one wykrywalne za pomocą narzędzi analitycznych, więc powinny również znajdować się w konwencjonalnej lokalizacji. Powinny one wejść:

  • /var/log/package_name (jak pakiet systemowy, nawet jeśli jest to pakiet niestandardowy)
  • /var/opt/package_name/log(zgodnie z /var/optkonwencją - ale czy można to odkryć?)
  • coś innego?
david.libremone
źródło
Czy masz na myśli przykład narzędzia analitycznego, które skanowanie / var / log?
sourcejedi
5
Dlaczego syslog odpowiedzi?
Joshua

Odpowiedzi:

19

Umieściłbym je w /var/log/package_name; lepiej spełnia zasadę najmniejszego zaskoczenia niż /var/opt/package_name/log. Nie przytaczam tego; po prostu pasuje tam, gdzie szukałem dzienników.

Mogę również zrezygnować z pisania własnych plików dziennika i zamiast tego zalogować się syslogprzy użyciu odpowiedniego znacznika i funkcji; jeśli szukam czystej integracji z uznanymi narzędziami analitycznymi, nie sądzę, żebym mógł zrobić lepiej dla kanału komunikacji:

  • Każde ogólne narzędzie z „analizą dziennika” jako funkcją wymienioną na liście już ogląda syslog.
  • Obsługiwana jest dla mnie semantyka wydania i rotacji plików dziennika; Nie muszę konfigurować mechanizmu, logrotateaby kazał mi puścić plik i otworzyć nowy. Nie muszę nawet mówić logrotateo nowych plikach do rotacji!
  • Przesyłanie dzienników do centralnych serwerów rejestrujących jest obsługiwane dla mnie, jeśli witryna tego wymaga; Istniejące narzędzia, takie jak, rsyslogbędą w razie potrzeby używane, więc nie muszę sam rozważać wdrożenia tej funkcji.
  • Kontrole dostępu (POSIX i np. SELinux) wokół plików dziennika są już obsługiwane, więc nie muszę zwracać tak dużej uwagi na semantykę zabezpieczeń specyficzną dla dystrybucji.

O ile nie robię niestandardowego formatu binarnego dla mojego dziennika, a nawet wtedy wolę przyjazne dla syslog formaty tekstowe, które można analizować na maszynie, takie jak JSON. Trudno mi uzasadnić własne oddzielne pliki dziennika; narzędzia analityczne już oglądają syslogjak jastrząb.

Michael Mol
źródło
8

Postępując zgodnie z konwencjami FHS dotyczącymi plików konfiguracji pakietu, należy zachować spójność i przechowywać pliki dziennika /var/opt/package_name/log.

FHS stwierdza:

Zmienne dane pakietów w / opt muszą być zainstalowane w / var / opt /

a także stwierdza

Żadne inne pliki pakietów nie mogą istnieć poza hierarchiami / opt, / var / opt i / etc / opt, z wyjątkiem plików pakietów, które muszą znajdować się w określonych lokalizacjach w drzewie systemu plików, aby działać poprawnie. Na przykład pliki blokady urządzenia muszą być umieszczone w / var / lock, a urządzenia muszą znajdować się w / dev.

Posiadanie poniżej plików dziennika /var/optnie przeszkadza w prawidłowym funkcjonowaniu pakietu, dlatego użycie go /var/logwyraźnie narusza standard.

Nie jest jasne, co rozumiesz przez „czy można to odkryć?” ponieważ i tak niestandardowe dzienniki prawdopodobnie będą obsługiwane przez niestandardowe narzędzia, ale zakładając, że ogólne narzędzie jest zaprojektowane do ich przetwarzania, powinno ono zbadać standardową lokalizację dla uwolnionych pakietów, takich jak Twoja.

Należy pamiętać, że syslogjest to przydatne narzędzie do scentralizowania i dostrojenia konfiguracji rejestrowania, ale nie rozwiązuje w pełni problemu, gdzie przechowywać dzienniki, gdy trzeba to zrobić w zwykłych plikach ze znaną ścieżką. Niektóre pliki przechowywane czasami w katalogu dziennika aplikacji są zaprojektowane tak, aby były dostępne przy użyciu oczekiwanej ścieżki przez samą aplikację lub powiązane programy, na przykład plik przechowujący identyfikator procesu, więc syslognie będzie dla nich działać.

jlliagre
źródło