Running Syslog Within a Docker Container-Project Atomic

Recently I received a bug report on Docker reporting about using rsyslogd within a container.

käyttäjä ajoi RHEL7-säiliön, asensi rsyslogin, käynnisti taustaprosessin ja lähetti sitten metsuriviestin, eikä mitään tapahtunut.

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

/var/log/messages konttiin tai muuten isäntäkoneeseen ei tullut viestiä.

käyttäjä katsoi sitten ja huomasi, että /dev/log ei ollut olemassa ja tässä metsuri oli kirjoittamassa viestiä. Käyttäjä luuli tätä bugiksi.

ongelmana oli, että RHEL7: ssä ja Fedorassa käytetään nyt journaldia, joka kuuntelee /dev/log saapuvia viestejä. Rhel7: ssä ja Fedorassa rsyslog itse asiassa lukee viestejä lehdestä oletuksena API: NSA kautta.

, mutta kaikki docker-kontit eivät kulje systemd: llä ja journaldilla. (Useimmat eivät). Jotta rsyslogd toimisi käyttäjän toivomalla tavalla, hänen täytyisi muokata asetustiedostoa, /etc/rsyslogd.conf:

  • /etc/rsyslog.conf poista $ModLoad imjournal.
  • Aseta $OmitLocalLoggingoff.
  • varmista, että $ModLoad imuxsock on läsnä.
  • kommentoi myös: $IMJournalStateFile imjournal.state.

näiden muutosten jälkeen rsyslogd alkaa kuunnella /dev/log kontin sisällä ja rsyslogd hyväksyy metsuriviestit ja kirjoittaa /var/log/messages kontin sisällä.

jos halusi kirjata viestejä siirtyäkseen isäntävetäjälle, saattoi volume mount /dev/log konttiin.

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

viestin pitäisi näkyä isännän journalct-lokissa, ja jos olet suorittamassa rsyslogia isännällä, viestin pitäisi päätyä /var/log/messages.

Vastaa

Sähköpostiosoitettasi ei julkaista.