2013-06-25 16 views
6

Potrzebuję pomocy, aby ocenić, jaki będzie właściwy projekt skręconej aplikacji macierzowej. Lub dowolny adres URL, aby pomóc w tym.python, twistedmatrix ... logowanie przez gniazdo

  • tła: I teraz korzystać z możliwości rejestrowania dołączonego twistedmatrix za pomocą FileLogObserver, a zwyczaj DailyLogFile do propage i zapisać dane do systemu plików i później analizować.

Teraz zamierzam użyć wielu różnych aplikacji, które wykonają swoje zadania i wysłały wiadomości dziennika jako zdarzenie czasowe w wielu plikach skręconych dzienników (pliki różnych plików). Tak więc moi wydarzenia składają się z (timestamp, data)

Potrzebuję jakiś sposób odczytać każdy tego zalogowany komunikatów (timestamp, data) w czasie rzeczywistym i scentralizować zdarzenie grupując je na podstawie czasu, który jest o kilka obliczeń i grupę, na wszystkie zdarzenia, które mają dokładnie taki sam znacznik czasu.

Czy mogę przypuszczać, że mogę to zrobić za pomocą funkcji skręconego dziennika?

Jak zaprojektowałbyś go w prosty sposób?

moja obecna myśl polegała na zbudowaniu skręconego rejestratora gniazd i powieleniu procesu logowania tak, aby każde zdarzenie zostało wysłane do rejestratora plików (potrzebuję oddzielnej historii), ale także przez gniazdo do odbiornika (teraz potrzebuję również czasu rzeczywistego). Jeśli mam rację, kopiąc w ten sposób, czy ktoś ma szkielet dla takiego skręconego rejestratora gniazd? jak mogę połączyć dwa programy rejestrujące ze skrętu?

dla drugiej strony, jaki powinien być właściwy odbiornik rejestrujący?

jak również będzie propagować dane wyliczone/agregowane za pośrednictwem serwera Lighstreamer za pomocą poniższego schematu może być pewne trudności, które mogłem nie zauważyć, że będą potrzebować jakiegoś wątku mekanizmu lub innych metod, aby uniknąć blokowania połączenia sieciowego?

feed = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
feed.connect(("localhost",MYPORT)) 

feed.send(mytimestamp, myeventdata) 

jako postać mogła być schematycznie jako: z (wszystko niemal czasie rzeczywistym)

producerTimedEventLog1 --->| 
producerTimedEventLog2 --->| 
...      |---> loggerReceiverComputingData ---> lighstreamer process ---> mozilla or whatever webclient 
...      | 
producerTimedEventLognN--->| 

każdy producerTimedEventLognN zalogowaniu również do pliku.

Jestem zainteresowany każdych przydatnych pomysłów :)

pozdrawiam

+0

Coś jeszcze potrzebujesz wiedzieć? –

Odpowiedz

3

Zrozumiałem, że wiele maszyn (niezależne komputery) jest zaangażowanych w twój system, prawda? Przede wszystkim musisz się upewnić, że zegary różnych urządzeń wysyłających zdarzenia są zsynchronizowane do pewnego stopnia. Jednak ponieważ zawsze będzie błąd synchronizacji czasu, musisz zdecydować, co masz na myśli, mówiąc o "wszystkich zdarzeniach, które mają dokładnie taki sam znacznik czasu".Z mojego punktu widzenia, musisz zdefiniować dowolną wartość delty czasu. Następnie po prostu definiujesz wszystkie zdarzenia ze znacznikami czasowymi w ramach tej delty czasowej, aby zdarzyły się "w tym samym czasie".

Po drugie, jeśli dobrze rozumiem, chcesz, aby "producenci" wysyłali swoje zdarzenia do "kolektora" za pośrednictwem protokołu TCP. Rodzi to pytanie, czy masz już pewien protokół komunikacyjny, na którym możesz po prostu dodać komunikację zdarzeń o znaczącym czasie, lub jeśli potrzebujesz ustanowić niezależną warstwę komunikacyjną (odrębne gniazdo TCP na kolektorze).

W każdym przypadku można utworzyć prostą klasę zdarzeń, która przechowuje komunikat o zdarzeniu (komunikat dziennika i wszelkie wymagane dane), a także znacznik czasu utworzenia. Producenci tworzą wystąpienia tej klasy. Następnie można użyć pickle w celu przesłania określonego zdarzenia przez strumień bajtów (połączenie TCP) do kolektora. Kolektor może go rozproszyć i przetworzyć.

Należy pamiętać, że rozdzielczość time.time() w systemie Linux jest wyższa niż w systemie Windows.

2

Można dodać PythonLoggingObserver oprócz swojej FileLogObserver. Następnie skonfiguruj program python logger do wysyłania wiadomości do syslog. Syslog można skonfigurować do wysyłania wiadomości do centralnego serwera. Na serwerze centralnym można zapisywać wiadomości w pliku dziennika i mieć inny plik dziennika czytania aplikacji z numerem LogReader.

Potrzebujesz również NTP do synchronizacji zegarów.

Powiązane problemy