Rsyslog nad Debianem 12 uvnitř Dockeru

JmJ

  • ****
  • 325
    • Zobrazit profil
Rsyslog nad Debianem 12 uvnitř Dockeru
« kdy: 12. 05. 2024, 14:16:34 »
Zdravim,

mam container postaveny na oficialnim obrazu debian:12. Chci,a by mi v nem normalne fungoval rsyslog a logy koncily ve /var/log, ktery je namapovan z uloziste mimo container.

Na debian:11 jsem do containeru doinstaloval rsyslog, logrotate a neco malo poladil a logy funguji. Mam tak rozjeto nekolik containeru.

V debian:12 se rsyslog nainstaluje, ovsem prikaz "service" sluzbu nevidi. Ani ve vypise --status-all ani pri primem povelu start.

Pokud pustim rucne /sbin/rsyslogd, pak rsyslog najede a logovani funguje.

Samozrejme jsem se snazil googlit, ale hleda se to velice spatne, protoze pri spojeni slov "docker debian image rsyslog" je vetsina vysledku o tom, jak logovat na hostovi a ne v containeru.

Hral jsem si s tim uz pred pul rokem, ted to zkousim znovu (s aktualnim obrazem pro debian:12) a je to furt stejne.

Nechce se mi na prasaka poustet rsyslogd "rucne", ale samozrejem to asi je reseni. Nemate prosim nekdo napad na cistejsi reseni?


tecka

  • ***
  • 157
    • Zobrazit profil
    • E-mail
Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #1 kdy: 13. 05. 2024, 04:48:37 »
Pokud se nepletu, tak oficiální obraz Debianu je jen filesystém a nic nespouští.

Jsi si jistý, že jsi do té jedenáctky něco nedoplňoval, nebo nepoužil jiný obraz spouštějící systemd, nebo něco podobného? Prostě služby musí něco spouštět, samy nenaběhnou.

JmJ

  • ****
  • 325
    • Zobrazit profil
Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #2 kdy: 13. 05. 2024, 08:37:41 »
Pokud se nepletu, tak oficiální obraz Debianu je jen filesystém a nic nespouští.

Jsi si jistý, že jsi do té jedenáctky něco nedoplňoval, nebo nepoužil jiný obraz spouštějící systemd, nebo něco podobného? Prostě služby musí něco spouštět, samy nenaběhnou.

Mam skript, ktery mi do containeru doinstaluje vse potrebne beznym zpusobem pres apt. Ten mi na debianu 11 vse pripravi a jede mi napr. postfix + dovecot, krasne loguji jako na plnohodnotnem systemu. Samozrejem mam skript, kterym tech par sluzeb, ktere maji bezet, nastartuju. Vim, ze to neni asi "best practice", ale jsem s tim resenim spokojen.

Pokud tento skript pouziju na debianu 12, pak logovani nejde, protoze rsyslog se sice nainstaluje, ale nefiguruje v systemu jako sluzba, kterou lze spustis pres "service rsyslogd start" a neni ani pod jinym jmenem zobrazena napr. ve vypisu "service --status-all". Proste rsyslog se nainstaluje, ale jedine jak ho umim spustit, je "primo rucne" volanim /sbin/rsyslogd.

Nemuzu se nikde dopatrat, jestli je to zamer nebo vada a jak s tim nalozit.

robac

  • ***
  • 203
    • Zobrazit profil
    • E-mail
Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #3 kdy: 13. 05. 2024, 14:07:18 »
Moc nerozumim tomu, proc bychom se meli pokouset to rozlousknout hadanim z kristalove koule, kdyz sem muzete ten skript dat...

Džan

Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #4 kdy: 13. 05. 2024, 14:21:52 »
To co předvádíš je docela prznění Dockeru, pokud tam nespouštíš systemd nebo nějaký jiný service manager, nemůže ti fungovat žádná služba, včetně té logrotate, kterou normálně spouští cron. A spouštět v dockeru service manager má spoustu úskalí, je to proti filozofii fungování toho systému a je radost po takových lidech přebírat projekty.
Docker je principem fungování jednoprocesový (ten jeden proces pak samozřejmě může pustit celý strom dalších) - tzn. když máš v entrypointu (nebo commandu) nějaký skript, běží jenom tento skript a nic dalšího, co jsi případně doinstaloval.
Na to, čeho chceš docílit se používá LXC nebo jiná technologie, která je multiprocesová.


JmJ

  • ****
  • 325
    • Zobrazit profil
Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #5 kdy: 13. 05. 2024, 15:09:05 »
Mam cisty obraz debianu 11. Udelam apt update a pak apt install rsyslog. Nasledne pri volani service --status-all vidim rsyslog jako dostupnou sluzbu. To stejne udelam na debianu 12 a rsyslog ve vypisu service --status-all nevidim. Pritom nainstalovany je (existuje /sbin/rsyslogd). Pokud nainstaluju treba postfix, pak ho na debianu 11 i 12 vidim mezi dostupnymi sluzbami.

Nic vic v tom neni.

Ptam se, jestli nevite, proc rsyslog na debianu 12 neni pri vypisu sluzeb videt.

BzF

Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #6 kdy: 13. 05. 2024, 17:24:56 »
Debian 12 používá jako výchozí systemd-journald. Zkuste zapátrat tím směrem (např. https://www.mybluelinux.com/rsyslog-on-debian-server/).

rmrf

Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #7 kdy: 14. 05. 2024, 00:01:25 »
Mam cisty obraz debianu 11. Udelam apt update a pak apt install rsyslog. Nasledne pri volani service --status-all vidim rsyslog jako dostupnou sluzbu. To stejne udelam na debianu 12 a rsyslog ve vypisu service --status-all nevidim. Pritom nainstalovany je (existuje /sbin/rsyslogd). Pokud nainstaluju treba postfix, pak ho na debianu 11 i 12 vidim mezi dostupnymi sluzbami.

Nic vic v tom neni.

Ptam se, jestli nevite, proc rsyslog na debianu 12 neni pri vypisu sluzeb videt.

No jestli to není tím, že standardní debian používá ke spouštění služeb systemd. Když dáš systemctl status rsyslog.service, tak pravděpodobně uvidíš, že rsyslog běží.

JmJ

  • ****
  • 325
    • Zobrazit profil
Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #8 kdy: 14. 05. 2024, 07:03:09 »
Mam cisty obraz debianu 11. Udelam apt update a pak apt install rsyslog. Nasledne pri volani service --status-all vidim rsyslog jako dostupnou sluzbu. To stejne udelam na debianu 12 a rsyslog ve vypisu service --status-all nevidim. Pritom nainstalovany je (existuje /sbin/rsyslogd). Pokud nainstaluju treba postfix, pak ho na debianu 11 i 12 vidim mezi dostupnymi sluzbami.

Nic vic v tom neni.

Ptam se, jestli nevite, proc rsyslog na debianu 12 neni pri vypisu sluzeb videt.

No jestli to není tím, že standardní debian používá ke spouštění služeb systemd. Když dáš systemctl status rsyslog.service, tak pravděpodobně uvidíš, že rsyslog běží.

Bohuzel neuvidim, protoze v dockerovem img debianu systemd pouzit neni a po doinstalovani systemctl vypise, ze system nebyl nabootovan se systemd a tedy systemctl nema co delat :-(.

rmrf

Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #9 kdy: 14. 05. 2024, 07:40:51 »
V takovém případě musíš zjistit, jaký je v tom tvém Debianu použit init a tomu pak musíš říct, aby rsyslogd při startu spouštěl.
Ale vypadá to, jak už jsem psal, že standardní rsyslogd v Debianu už v sobě má zakomponováno spouštění pouze pomocí systemd.

tecka

  • ***
  • 157
    • Zobrazit profil
    • E-mail
Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #10 kdy: 14. 05. 2024, 07:59:47 »
Systemd v Dockeru asi nemá smysl, pokud ho k ničemu jinému nepotřebuješ. Problém je v tom, že se na Debianu 12 pro rsyslog neinstaluje SysV init skript a nejjednodušší bude si ho tam doplnit (/etc/init.d/rsyslog) nebo to spouštět úplně "ručně".

JmJ

  • ****
  • 325
    • Zobrazit profil
Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #11 kdy: 14. 05. 2024, 09:11:38 »
Systemd v Dockeru asi nemá smysl, pokud ho k ničemu jinému nepotřebuješ. Problém je v tom, že se na Debianu 12 pro rsyslog neinstaluje SysV init skript a nejjednodušší bude si ho tam doplnit (/etc/init.d/rsyslog) nebo to spouštět úplně "ručně".
ok. mi z toho vysel stejny zaver, jen je mi proste divne, proc by tu podporu sysV najednou zrovna u rsyslog oddelali, kdyz u spousty jineho sw zustala a navic mam dojem (aktualne sem to neoveroval), ze pri plnohodnotne instalaci debianu 12 se rsyslog naistaluje i s init skriptem.

kazdopadne diky za info / nazor.

rmrf

Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #12 kdy: 14. 05. 2024, 09:44:06 »
mam dojem (aktualne sem to neoveroval), ze pri plnohodnotne instalaci debianu 12 se rsyslog naistaluje i s init skriptem.
Nenainstaluje


Re:Rsyslog nad Debianem 12 uvnitř Dockeru
« Odpověď #14 kdy: 15. 05. 2024, 21:59:58 »
Jak už to tu víc lidí psalo, je to ohybání principu Dockeru. Ten princip je, že v Dockeru není žádný(!!) init proces. Spouští se jenom aplikační proces. Ten má logovat psaním na stdout a to se následně zpracovává (klidně rsyslogem na hostu).