Millisekundengenauigkeit in syslogd unter OS X

951
Justin Makeig

Wenn ich unter OS X (10.10.1) Meldungen an syslog protokolliere, wird der Zeitstempel auf den zweiten abgeschnitten. Wenn ich mich beispielsweise in eine Datei einlogge, kann ich Millisekunden erfassen. Millisekunden sind wichtig, wenn Protokolle schnell und wütend werden. Irgendeine Idee, ob es eine Möglichkeit gibt, Millisekunden-Präzision in der OS X-Implementierung von syslogd festzulegen?

1
Haben Sie die Manpage `syslog (1)` gelesen? Es gibt Beispiele, wie das geht. Spiff vor 9 Jahren 0
Ja und `syslogd`. Ich sehe dort nichts über die Genauigkeit von Zeitstempeln. Gibt es einen bestimmten Abschnitt, auf den Sie mich hinweisen könnten? Vielen Dank. Justin Makeig vor 9 Jahren 0
Entschuldigung, ich war letzte Nacht auf Handy und wollte Sie nur schnell auf den richtigen Weg bringen. Vollständigere Antwort unten. Spiff vor 9 Jahren 0

1 Antwort auf die Frage

0
Spiff

OS X syslogdspeichert Protokollereignisse standardmäßig in Mikrosekundengenauigkeit in der Datenbank / Store "Apple System Log" (asl), wobei die Nanosekundengenauigkeit berücksichtigt wird.

Wenn diese Daten jedoch in herkömmliche flache Protokolldateien kopiert werden /var/log/system.log, wird das herkömmliche Sekundenstempelformat verwendet, da diese flachen Protokolldateien immer verwendet wurden.

Sie können das syslogBefehlszeilentool verwenden, um die ASL-Datenbank abzufragen, und Sie können das Format der Ausgabe mit verschiedenen Befehlszeilenoptionen angeben, einschließlich -F. Wenn Sie beispielsweise alles aus der ASL-Datenbank im Standardprotokolldateiformat ausgeben möchten, jedoch mit einer Genauigkeit von Mikrosekunden:

syslog -F std.6 

Wenn Sie über einen Prozess verfügen, der so viele Meldungen in syslog protokolliert, dass die Zeitstempel in Sekundenschnelle von Bedeutung sind, sollten Sie auch die asl.conf(5)Manpage aufrufen, um sicherzustellen, dass Ihre mps_limitund die dup_delayParameter so eingestellt sind, dass alle Protokollnachrichten tatsächlich angezeigt werden in der Datenbank gespeichert werden, anstatt gedrosselt oder hinausgeworfen zu werden.

Danke für die ausführliche Antwort. Ich baue einen Syslog-Server, der auf Syslog-Nachrichten über UDP wartet. Es klingt nicht nach einer Möglichkeit, die Zeitstempelgenauigkeit der Nachrichten zu ändern, die durch syslogd auf einem OS X-Client fließen (dh Upstream-Push-Nachrichten an meinen Server). asl hat anscheinend mehr Konfigurationsoptionen, aber ich verstehe die Beziehung zwischen syslog und asl nicht wirklich und ich sehe auch nichts über die Zeitgenauigkeit in asl. Justin Makeig vor 9 Jahren 0
@JustinMakeig Das traditionelle Syslog-Netzwerkprotokoll (mit dem Hosts Syslog-Nachrichten über UDP an einen zentralen Syslog-Server senden kann), das vor Jahrzehnten in einem der ersten BSD-Unixe erstellt wurde, verfügt über ein Zeitstempelfeld, das nur eine Sekunde genau ist . Dieses Protokoll wurde schließlich in Informational RFC 3164 dokumentiert. Dies ist das Syslog-Protokoll, das von OS X unterstützt wird. In der IETF wurde 2009 der Versuch unternommen, eine modernisierte Version des Syslog-Protokolls (einschließlich mehr Zeitstempelgenauigkeit) zu erstellen und zu standardisieren (RFC 5424), aber ich glaube nicht, dass das Syslog von OS X die moderne Version unterstützt. Spiff vor 9 Jahren 0
Ja, und RFC 3164 gibt "Mmm dd hh: mm: ss" an. Sieht aus, als hätte ich kein Glück. Vielen Dank für deine Hilfe. Justin Makeig vor 9 Jahren 0