Dziennik tekstowy OpenVPN umieszcza datę, godzinę i us= wartość w tym samym wierszu, a ostatnia z trzech to część, którą czytelnicy błędnie rozumieją. To składnik mikrosekundowy tego znacznika czasu, drukowany bez dopełniania zerami. To nie identyfikator sesji, nazwa użytkownika ani licznik, a traktowanie go w ten sposób zamienia ułamek sekundy w pewny błędny wniosek. Przelicz go jako ułamek wyświetlanej sekundy, a reszta wiersza pozostanie czytelna.

Co oznaczają trzy części wiersza

Data i cała sekunda przychodzą najpierw, a us= niesie resztę poniżej jednej sekundy. Wartość 12345 to dwanaście tysięcy trzysta czterdzieści pięć mikrosekund, czyli 0.012345 sekundy, więc wiersz opisuje 09:15:30.012345, gdy wydrukowany czas to 09:15:30. Licznik zaczyna się od nowa z każdą nową sekundą, więc późniejszy wiersz może wydrukować mniejszy ułamek, choć żaden zegar nie cofa się. Tylko pełny znacznik czasu porządkuje zdarzenia.

2026-11-02 08:41:07 us=4820

Jednostką jest jedna milionowa sekundy, a sześć cyfr us= obejmuje cały zakres od 0.000000 do 0.999999. Pięć cyfr opisuje dziesiątki milisekund, a sześć opisuje setki milisekund aż do prawie całej sekundy. Jeśli przeliczenie daje ułamek większy niż jeden, kropka dziesiętna się przesunęła i arytmetyka jest błędna. Zrobienie tego ręcznie oznacza podzielenie wydrukowanej liczby całkowitej przez milion i dodanie jej do całej sekundy.

Dopełnianie to pułapka. us=42 to czterdzieści dwie mikrosekundy, zapisane jako .000042, a nie .42. Przed przeliczeniem dopełnij liczbę całkowitą z lewej do sześciu miejsc, a wartość przestanie wyglądać jak ułamek dziesiętny widocznych cyfr.

Przeliczanie wiersza bez kalkulatora

Weź wydrukowaną sekundę jako podstawę i traktuj us= jako ułamek. Dla 09:15:30 i us=12345 postać dziesiętna to 09:15:30.012345; dla us=900000 to 09:15:30.900000. Cyfry po kropce dziesiętnej to dopełniona liczba całkowita, nigdy liczba całkowita podzielona przez tysiąc. Zapisanie najpierw postaci sześciocyfrowej zapobiega większości błędów.

Jeśli parsujesz dzienniki na znaczniki czasu, parsuj datę, całą sekundę i ułamek razem. Parser, który zakłada milisekundy, uporządkuje zdarzenia błędnie tysiąckrotnie, a dane wyjściowe nadal wyglądają wiarygodnie.

Gdy w dzienniku brakuje pola

Część mikrosekundowa należy do formatu dziennika tekstowego i pojawia się tylko wtedy, gdy włączone są szczegółowe znaczniki czasu. W formaterze znaczników czasu OpenVPN 2.6 jest dodawana, gdy to wyjście jest włączone, a zapisana wartość nie jest zerem. Dziennik bez us= nie mówi więc nic o zegarze ani o kompilacji; zwykle oznacza, że skonfigurowana szczegółowość jest zbyt niska. Sprawdź konfigurację, zanim obwinisz synchronizację czasu.

Ustawienie łatwo potwierdzić w konfiguracji serwera. Uruchom poniższe polecenie i odczytaj zwracaną liczbę. Szczegółowe wyjście znaczników czasu pojawia się przy szczegółowości 4, więc niższa wartość wyjaśnia brakujące pole bez innej usterki. Uruchomienie tej samej konfiguracji z --verb 4 pokazuje pole, gdy demon uruchomi się ponownie z tym poziomem.

grep -nE '^[[:space:]]*verb[[:space:]]+[0-9]' /etc/openvpn/server.conf

Zwiększenie szczegółowości dodaje szczegóły do dziennika; nie poprawia zegara. Po restarcie porównaj nowy wiersz ze starym, aby potwierdzić zmianę formatu, i ponownie obniż poziom, gdy pytanie zostanie wyjaśnione.

Czego sześć cyfr nie dowodzi

Sześć cyfr opisuje rozdzielczość, a rozdzielczość nic nie mówi o tym, czy dwa hosty zgadzają się co do czasu. Klient i serwer mogą oba drukować mikrosekundy, podczas gdy ich zegary różnią się o sekundy. Gdy korelujesz zdarzenia między maszynami, zapisz strefę czasową i każde znane przesunięcie, i preferuj pole nazywające partnera lub sesję od jakiegokolwiek znacznika czasu. Dwa wiersze dzielące ten sam ułamek nie są koniecznie tym samym połączeniem.

Kolektor może ostemplować każdy wiersz przy przybyciu, co dodaje drugi znacznik czasu należący do kolektora, a nie do OpenVPN. Ustal, który czytasz, zanim je porównasz, i zachowaj surowy wiersz, aby porównanie można było powtórzyć.

Świeża us= wartość nie dowodzi, że zalogował się nowy klient, a powtórzona nie dowodzi podwójnego zdarzenia. Pola partnera i połączenia odpowiadają na te pytania.

Powiązane artykuły