Unix vremenski žigovi u datotekama dnevnika — kako ih čitati i otklanjati greške

Kad nešto pukne u produkciji u 2 ujutro, prva stvar koju radiš je da izvučeš dnevnike. I prvi problem je često zid Unix vremenskih žigova — 10-znamenkasti brojevi koji vam točno govore kada se dogodio svaki događaj, kada biste ih samo mogli pročitati. 1744070400 je precizan, nedvosmislen i potpuno nerazumljiv dok ga ne konvertirate.

Unix Timestamp Converter pretvara svaki raw vremenski žig u čitljiv datum u sekundi. Ovaj članak objašnjava kako se vremenski žigovi pojavljuju u dnevnicima, kako ih učinkovito konvertirati i uskladiti te gdje se greške vezane uz vremenske žigove obično kriju tijekom otklanjanja grešaka.

Zašto dnevnici koriste Unix vremenske žigove

Čitljivi datumski stringovi — "7. travnja 2026 14:32:05 UTC+2" — zgodni su za čitanje, ali loši za strojeve. Razlikuju se ovisno o jeziku, zahtijevaju raščlambu vremenske zone, ne mogu se izravno uspoređivati kao cijeli brojevi i zauzimaju više prostora od običnog broja.

Unix vremenski žigovi rješavaju svi ti problemi. Vremenski žig poput 1744070400 je:

  • Nedvosmislen — bez jezika, bez varijacija formata
  • Neovisan o vremenskoj zoni — uvijek temeljem na UTC-u
  • Sortabilan — veći broj = kasnije vrijeme, pa ORDER BY timestamp radi ispravno
  • Prikladan za aritmetiku — oduzmi dva vremenska žiga da dobiješ protekle sekunde

Većina sustava za logiranje (syslog, dnevnici aplikacija, dnevnici baza podataka, CDN dnevnici pristupa) koristi UTC Unix vremenske žigove iz tih razloga. Trošak čitljivosti se zamjenjuje za preciznost i portabilnost.

Kako konvertirati vremenski žig iz dnevnika

Najbrži pristup je da zalijepite vremenski žig u Unix Timestamp Converter. Automatski detektira sekunde vs milisekunde i odmah prikazuje UTC datum i vrijeme.

Za brze konverzije bez napuštanja terminala:

Linux/Mac (bash): `bash date -d @1744070400 # Linux date -r 1744070400 # macOS `

Python: `python import datetime datetime.datetime.fromtimestamp(1744070400, tz=datetime.timezone.utc)

datetime(2026, 4, 7, 16, 0, tzinfo=timezone.utc)


**JavaScript (konzola preglednika ili Node):**

new Date(1744070400 * 1000).toISOString() // "2026-04-07T16:00:00.000Z" `

Obratite pažnju na * 1000 u JavaScriptu — Date radi u milisekundama, pa vremenski žig temeljen na sekundama trebate pomnožiti prije nego što ga proslijedite new Date(). Zaboravljanje na to je česti izvor grešaka "vremenski žig u godini 2527".

Čitanje vremenskih žigova u milisekundama u dnevnicima

Neki sustavi bilježe podatke u milisekundama umjesto sekunda. Node.js aplikacije, Java sustavi koji koriste System.currentTimeMillis() i mnogi JavaScript-temeljeni backendsovi proizvode 13-znamenkaste vremenske žigove poput 1744070400000.

Unix Timestamp Converter automatski detektira format na temelju broja znamenki. Ali u terminalu:

# Prvo milisekunde u sekunde, zatim konvertiraj
echo $((1744070400000 / 1000)) | xargs date -d @  # Linux

Ili u Pythonu: `python datetime.datetime.fromtimestamp(1744070400000 / 1000, tz=datetime.timezone.utc) `

Brzi test razuma: ako je vremenski žig 13 znamenki, gotovo sigurno su to milisekunde. 10 znamenki znači sekunde. 16 znamenki znači mikrosekunde (često u PostgreSQL-u). 19 znamenki znači nanosekundami (neki Java i Rust sustavi).

Usklađivanje vremenskih žigova između više izvora dnevnika

Jedan od najtežih dijelova otklanjanja grešaka distribuiranih sustava je usklađivanje događaja između više službi koje logiraju neovisno. Ako vaš dnevnik web-servera prikazuje 500 grešku u vremenskome žigu 1744070412 a dnevnik baze podataka prikazuje isttek veza u 1744070410, ta dva događaja su odvojena za 2 sekunde — jasno su povezana.

Bez Unix vremenskih žigova, ova usklađivanja su bolna. Ako web-server logira u UTC+2 a baza podataka logira u UTC-5, ručno usklađivanje vremena zahtijeva poznavanje pomaka i mentalnu aritmetiku. S Unix vremenskim žigovima, oba dnevnika su na istoj ljestvici i oduzimate direktno.

Praktičan tok rada: 1. Identificirajte približno vremensko razdoblje incidenta iz izvješća korisnika ili upozorenja nadzora 2. Konvertirajte vremensko razdoblje u Unix vremenske žigove (Unix Timestamp Converter ili date -d "2026-04-07 16:00:00 UTC" +%s) 3. Filtrirajte svaku datoteku dnevnika u to vremensko razdoblje: awk '$1 >= 1744070400 && $1 <= 1744070460' access.log 4. Sortirajte kombiniranu izlaznu datoteku po vremenskome žigu da izgradite jedinstvenu vremensku liniju

Korak 4 je gdje Unix vremenski žigovi zaista opravdavaju svoje mjesto — možete sort -n na stupcu vremenskog žiga preko datoteka iz različitih sustava i dobiti kronološki točan spojeni prikaz.

Česte greške vremenskog žiga koju trebate искати tijekom otklanjanja grešaka

Neslaganje sekundi/milisekundi. Vremenski žig pohranjen kao milisekunde ali čitan kao sekunde daje datum u godini 2527 ili slično. Vremenski žig pohranjen kao sekunde ali nepotrebno pomnožen s 1000 daje datum 1970. Oboje su očigledni kada konvertirate vrijednost, što je razlog zašto je konvertiranje rano u otklanjanju grešaka vrijedno.

Lokalno vrijeme umjesto UTC-a. Ako dnevnik prikazuje 1744077600 a ste očekivali 1744070400 za isti događaj, razlika je 7200 sekundi — točno 2 sata. To je vremenski offset. Neki sustavi bilježe podatke u lokalnom vremenu umjesto UTC-a, što prekida usklađivanje između sustava. Uvijek potvrdite koju vremensku zonu koristi sustav dnevnika prije nego što uskladite stavke.

Pomak vremenske ure između servera. Distribuirani sustavi s nesinhroniziranim satovima proizvode dnevnike gdje vremenski žigovi ne reflektiraju stvarni redoslijed događaja. Ako server A prikazuje događaj u 1744070400 a server B prikazuje kauzalno kasniji događaj u 1744070398, sat servera B zaostaje za 2 sekunde. NTP sinhronizacija sprječava to, ali nije uvijek savršeno održavana. Tijekom otklanjanja grešaka race condition ili problema uzročnosti u distribuiranim sustavima, pomak vremenske ure vrijedi provjeriti.

Epoha pohranjena kao string. Neki sustavi bilježe vremenske žigove kao stringovske reprezentacije cijelog broja: "1744070400". Ovo izgleda identično cijelem broju u mnogim prikazima dnevnika, ali može uzrokovati greške sortiranja ili uspoređivanja ako se ne raščlani pravilno. JSON dnevnici posebno ponekad serijaliziraju brojeve kao stringove.

Skraćeni vremenski žigovi. Stavka dnevnika koja prikazuje 174407040 (9 znamenki) umjesto 1744070400 (10 znamenki) je skraćena — vjerojatno greška formatiranja ili overflow međuspremnika. 9-znamenkasta vrijednost se pretvara u rujan 2025. umjesto travnja 2026.

Filtriranje dnevnika po vremenskom rasponu s Unix vremenskim žigovima

Poznavanje vremenskog raspona za vremenski prozor čini filtriranje dnevnika precizno:

# Uzmite Unix vremenski žig za specifično UTC vrijeme
date -d "2026-04-07 16:00:00 UTC" +%s   # → 1744070400
date -d "2026-04-07 16:05:00 UTC" +%s   # → 1744070700

# Filtrirajte nginx dnevnik pristupa (prvo polje je vremenski žig)
awk '$1 >= 1744070400 && $1 <= 1744070700' /var/log/nginx/access.log

# Filtrirajte s grep-om ako je vremenski žig na poznatoj poziciji
grep -E "^174407(04|05|06|07)" /var/log/app.log

Za JSON dnevnike, jq je čitljiviji: `bash cat app.log | jq 'select(.timestamp >= 1744070400 and .timestamp <= 1744070700)' `

Alat Days Between Dates je koristan kada trebate znati vremenski raspon za cijeli dan ili višednevno razdoblje — konvertirajte početni i završni datume u vremenske žigove i koristite ih kao granice filtera.

Izgradnja mentalnog modela za veličine vremenskog žiga

Nakon otklanjanja nekoliko incidenata s Unix vremenskim žigovima, počinjete razvijati intuiciju za veličine. Od 2026.:

  • Trenutni vremenski žigovi su u rasponu 1,74–1,75 milijardi
  • Jedan sat = 3.600 sekundi (4 znamenke)
  • Jedan dan = 86.400 sekundi (5 znamenki)
  • Jedan tjedan = 604.800 sekundi (6 znamenki)
  • Jedna godina ≈ 31.557.600 sekundi (8 znamenki)

Dakle, ako se dvije stavke dnevnika razlikuju za 86 sekundi, odvajaju ih otprilike 1,5 minuta. Ako se razlikuju za 3.600, točno jedan sat. Ako se razlikuju za 604.800, točno jedan tjedan. Ti okrugli brojevi su vrijedni memoriranja — čine mentalnu aritmetiku na vremenskim žigovima puno bržom tijekom aktivnog incidenta.

Za svaku konverziju koja nije u vašoj glavi, Unix Timestamp Converter je najbrži put od raw cijelog broja do čitljivog datuma i natrag.

Povezani članci