Řešení časových pásem pomocí falešného NTP

Řešení časových pásem pomocí falešného NTP
« kdy: 27. 11. 2017, 19:50:37 »
Starám se o nemalý počet různých krabiček, které sice umí ntp, ale už nemají podporu pro automatickou změnu času kvůli DST. Tyhle krabičky o své činnosti posílají logy (syslog), trapy a statistiky do proprietárních systémů.
Potřeboval bych ty logy a statistiky mít se správným časem, ale z pochopitelných důvodů nechci každý rok strávit dva dny nastavováním správného pásma.

Čas v trapu nebo v syslogu si upravit umím, ale do proprietárních systémů sahat nemůžu.
Předpokládám (neznám ntp natolik), že ntp posílá UTC, takže mně napadlo postavit si fake ntp, který by posílal čas v CET a ve správný okamžik přepnul na CEST. Není v tom nějaký zásadní problém? Případně, nenapadá někoho lepší řešení?
« Poslední změna: 27. 11. 2017, 20:33:37 od Petr Krčmář »


JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Řešení časových pásem pomocí falešného NTP
« Odpověď #1 kdy: 27. 11. 2017, 20:47:07 »
Lepsi reseni je naucit se cist logy, co jsou porad v UTC. Soupat casem sem a tam zpusobi bordel v logach a kdovi jake dalsi problemy. Treba najednou na systemu budou nejmin hodinu trcet soubory s timestampem v budoucnosti a kdyz do te krabice nemuzete lezt a nevite, jak presne funguje, tak asi nemuzete zjistit, jestli to je neco proti necemu a jestli se tim nemuze neco posrat.

Sten

Re:Řešení časových pásem pomocí falešného NTP
« Odpověď #2 kdy: 27. 11. 2017, 21:04:13 »
Problémů může být víc.

NTP je pull, nikoliv push, ta krabička se NTP serveru ptá jen občas a nepřepne se přesně v době přechodu na letní čas. Dokonce může být klidně i jen jednou za den. Samozřejmě každý krabička se může přepnout jindy. V takovém zmatku se pak jen velmi těžko vyznáte. Proto bych taky doporučil používat všude UTC, přepočítávat z něj je oproti tomuhle triviální.

Zásadní problém by mohl nastat při každém přechodu na zimní čas, kdy se hodiny posouvají dozadu. Těžko říct, jak na to SW v té krabičce zareaguje. Třeba mnoho embedded SW vůbec nepředpokládá, že by proběhlé události (časy souborů, triggerů ap.) mohly mít časové razítko v budoucnu, a pak může počítat chybné údaje (např. časosběrné průměry), následující hodinu neposílat data či dokonce spadnout. Embedded svět je obecně stavěný na to, že všechno běží v UTC a případné přepočty dělá ten výkonnější stroj, který data zpracovává nebo zobrazuje.

Re:Řešení časových pásem pomocí falešného NTP
« Odpověď #3 kdy: 27. 11. 2017, 21:15:56 »
Logy jsou ten nejmenší problém... tam si úpravu podle skutečného času představit umím. Bohužel část krabiček posílá data v propriretárním formátu do proprietárního "něco-jako-nms", do toho vrtat nemůžu a vlastní jsem si zatím nenapsal (ale chystám se :)

Tomas2

  • ****
  • 310
    • Zobrazit profil
    • E-mail
Re:Řešení časových pásem pomocí falešného NTP
« Odpověď #4 kdy: 28. 11. 2017, 09:10:09 »
tohle je vždy problém, občas udělám to, že logovací proces spustím se správným TZ (čti globálně jednotným) s tím, že vím, kterou source je v jakém TZ, aby šlo konkrétní data intepretovat, to jsou jen krajní případy, kdy nemám na výběr.

Prakticky nejlepší řešení je těmhle časům správně porozumět při analýze a nesnažit se je nějak modifikovat, ztrácíš tím pak třeba důležité informace. Problém může být i změna TZ, což se občas děje.

Nezapomeň, že existují přestupné sekundy, ukládat si čas v UTC znamená, že ti tam budou při přechodu vznikat anomálie. U většiny logů ukládáme časové informace jako timestamp, leap seconds (ne všechny systémy bývají hned synchronizované, takže aktuální množství korekcí se hodí logovat), TZ.