Running Syslog Within a Docker Container-Project Atomic

Nemrég kaptam egy hibajelentést a Docker panaszkodott a rsyslogd egy konténerben.

a felhasználó futtatott egy RHEL7 tárolót, telepítette az rsyslog-ot, elindította a démont, majd küldött egy naplózó üzenetet, és semmi sem történt.

# docker run -it --rm rhel /bin/bash # yum -y install rsyslog # /usr/sbin/rsyslogd # logger "this is a test" 

egyetlen üzenet sem jelent meg /var/log/messages – ban a tárolóban vagy a gazdagépen.

ezután a felhasználó megnézte és észrevette, hogy /dev/log nem létezik, és itt írta A logger az üzenetet. A felhasználó úgy gondolta, hogy ez egy hiba.

a probléma az volt, hogy az RHEL7-ben és a Fedorában most a journald-ot használjuk, amely /dev/log – en figyeli a bejövő üzeneteket. Az RHEL7-ben és a Fedorában az rsyslog alapértelmezés szerint az API-n keresztül olvassa a napló üzeneteit.

de nem minden docker konténer fut systemd és journald. (A legtöbb nem). Annak érdekében, hogy az rsyslogd a felhasználó kívánt módon működjön, módosítania kell a konfigurációs fájlt, /etc/rsyslogd.conf:

  • ban ben /etc/rsyslog.conftávolítsa el $ModLoad imjournal.
  • állítsa a $OmitLocalLoggingértéket off értékre.
  • ellenőrizze, hogy a $ModLoad imuxsock jelen van-e.
  • megjegyzés: $IMJournalStateFile imjournal.state.

a módosítások elvégzése után az rsyslogd elkezdi hallgatni a /dev/log – et a tárolón belül, és a naplózó üzeneteket az rsyslogd elfogadja, és a tárolón belül /var/log/messages – ra írja.

ha az üzeneteket a gazdagép naplózójához szeretné naplózni, akkor a /dev/log kötetet a tárolóba csatlakoztathatja.

# docker run -v /dev/log:/dev/log -it --rm rhel /bin/bash # logger "this is a test" 

az üzenetnek meg kell jelennie a gazdagép journalct naplójában, és ha rsyslogot futtat a gazdagépen, az üzenetnek /var/log/messages – ba kell kerülnie.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.