
Das Wesentliche
Woher erhält rsyslog den Wert von %HOSTNAME% und unter welchen Bedingungen wäre „unbekannt“ der erwartete Wert?
Wir verwenden rsyslog auf einer EC2-Instanz und versuchen, unsere Protokolle an loggly zu senden. Wenn ich tail -f
die Protokollnachrichten sehe, kann ich das Protokoll im Standardformat einschließlich Datum, Hostname, Tag und Nachricht sehen.
Wenn ich logger "message"
dann verwende, wird mir sowohl in der Konsole als auch in Loggly ein korrekter Protokolleintrag angezeigt. Wenn jedoch eine Java-Konsolenanwendung ein Ereignis protokolliert, ist der Hostname sowohl in der Konsole als auch in Loggly „unbekannt“.
Seltsamerweise führt dieselbe Konfiguration von rsyslog und log4j zum richtigen Protokolleintrag, wenn dieser von einer von Tomcat gehosteten Webanwendung stammt.
Ich weiß, dass einiges davon sehr Java-spezifisch ist, aber meine Frage lautet: Woher bekommt rsyslog den Wert von %HOSTNAME% und unter welchen Bedingungen wäre „unbekannt“ der erwartete Wert?
Antwort1
Ich habe das herausgefunden. Um den Hostnamen zu erhalten, musste ich den Hostnamen der IP-Adresse in der Hosts-Datei zuordnen. Eigentlich dachte ich, dass dies bereits passiert, aber als das Skript ausgeführt wird, um den richtigen Hosts-Eintrag anzuhängen, ist die IP-Adresse unbekannt und nur der Hostname wird an die Datei angehängt.
Ich habe den richtigen Eintrag hinzugefügt und der Hostname wird wie erwartet in rsyslog und loggly angezeigt.
In der Zwischenzeit hatte ich das Loggly-Format von %HOSTNAME% in %$myhostname% geändert. Das funktionierte für uns gut, da wir kein Remote-Logging durchführten, sodass $myhostname immer der richtige Hostname war.