Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Podobne dokumenty
Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Klasy abstrakcyjne, interfejsy i polimorfizm

Laboratorium 8 Diagramy aktywności

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Metody dostępu do danych

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Języki i metody programowania Java INF302W Wykład 2 (część 1)


Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Programowanie obiektowe

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Java: interfejsy i klasy wewnętrzne

Platformy Programistyczne Podstawy języka Java

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Przypomnienie o klasach i obiektach

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Systemy operacyjne na platformach mobilnych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Aplikacje w środowisku Java

Współbieżność w środowisku Java

Android pierwsza aplikacja

Programowanie w Javie wykład 8 Interfejsy

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Metody Metody, parametry, zwracanie wartości

Aplikacje RMI Lab4

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Podstawy programowania obiektowego

Zaawansowane aplikacje WWW - laboratorium

Programowanie i projektowanie obiektowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Automaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1,

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Od wymagań do Javy w mgnieniu oka

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP002017_ Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Języki i metody programowania Java. Wykład 2 (część 2)

Aplikacje RMI

Wprowadzenie do języka Java

Diagram stanów Laboratorium 9

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie obiektowe i zdarzeniowe

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Algorytmy z powrotami. Algorytm minimax

Fragmenty są wspierane od Androida 1.6

Technologie i usługi internetowe cz. 2

Android, wprowadzenie do SDK

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie obiektowe

Tworzenie i wykorzystanie usług sieciowych

Klasy i obiekty cz II

Aplikacje WWW - laboratorium

Wzorce logiki dziedziny

Programowanie w Javie - wykład 3

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project

Systemy Rozproszone - Ćwiczenie 6

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial

Swing ćwiczenia 2 opis

Wstęp. Ale po co? Implementacja

Programowanie i projektowanie obiektowe

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

JAX-RS czyli REST w Javie. Adam Kędziora

[Android] Podstawy programowania

W powyższym kodzie utworzono wyliczenie dni tygodnia.

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

MVC w praktyce tworzymy system artykułów. cz. 1

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Modelowanie obiektowe

Programowanie obiektowe i zdarzeniowe

KLASY, INTERFEJSY, ITP

Jakarta POI. POIFS obsługa dokumentów OLE 2, HSSF dokumenty w formacie Excel'a, HWPF proste dokumenty w formacie Word 97,

UML a kod. C++, Java i C#

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Transkrypt:

Systemy Rozproszone Temat projektu: Regułowy system analizujacy logi Spis treści autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki Cel Projektu...2 Dane aplikacji...2 Technologia...2 Zarządzanie plikami...3 Regóły w aplikacji...3 Relacja równości...6 Relacja nierówności...6 Relacja relacja zawierania...7 Relacja relacja następstwa...7 Model UML...9 Wnioski...9 Projekt udostępniony na: http://code.google.com/p/log-analizator

Cel Projektu Celem projektu jest umożliwienie analizy pliku logów. W szczególności umożliwia on analizę logów z progrmu analizującego ruch w sieci - WireShark. Pozwala na zdefiniowanie reguł dotyczących atrybutów w danej kolumnie. Umożliwia wczytanie i zapis pliku o określonym formacie. Dane aplikacji Dane aplikacji wprowadzane są z menu aplikacji przez opcję Log z przedziału kolumna "No.","Time","Source","Destination". Definicja zakresu wartosciach. "No.","Time","Source","Destination","Protocol","Info" "1","0.000000","192.168.2.26","192.168.2.255","NBNS","Name query NB ISATAP<00>" "2","0.000924","169.254.241.58","169.254.255.255","NBNS","Name query NB ISATAP<00>" "3","0.035068","3com_9f:7d:06","Broadcast","ARP","Who has 192.168.2.195? Tell 192.168.2.165" "4","0.750808","fe80::4864:4a8f:5048:6ae5","ff02::1:3","LLMNR","Standard query A isatap" "5","0.751003","192.168.2.26","224.0.0.252","LLMNR","Standard query A isatap" "6","0.851334","fe80::4864:4a8f:5048:6ae5","ff02::1:3","LLMNR","Standard query A isatap" "7","0.851348","192.168.2.26","224.0.0.252","LLMNR","Standard query A isatap" "8","0.852112","fe80::3406:7da0:96fe:f13a","ff02::1:3","LLMNR","Standard query A isatap" "9","0.853040","169.254.241.58","224.0.0.252","LLMNR","Standard query A isatap" "10","1.051853","192.168.2.26","192.168.2.255","NBNS","Name query NB ISATAP<00>" "11","1.052862","169.254.241.58","169.254.255.255","NBNS","Name query NB ISATAP<00>" "12","1.134358","3com_9f:7d:06","Broadcast","ARP","Who has 192.168.2.61? Tell 192.168.2.165" Technologia Projekt został wykonany w technologii JAVA z wykorzystaniem komponentów Swing. Do wersjonowania i zarządzania projektem wykorzystaliśmy system Google Code. Projekt udostępniony został na: http://code.google.com/p/log-analizator Do wersjonowania wykorzystaliśmy system SVN udostępniony przez Google.

Zarządzanie plikami Wczytanie pliku do aplikacji odbywa się przez menu aplikacji Regóły w aplikacji

Wybór regół z aplikacji Wybór rególy odbywa się poprzez interfejs użytkownika przez okreslony scenariusz 1. Wybór kolumny której dotyczyc ma regóła 2. Wybór konkretnej regóły filtrującej 3. Ustawienie parametrów regóły 4. Dodanie regóły do zbioru regół Szczegóły implementacji /** * Model regol w systemie * @author sadzio

* public class RuleModel { private LinkedList<Rule> rulearraylist; private HashMap<Rule, Class> availablerulearraylist; public RuleModel() { rulearraylist = new LinkedList<Rule>(); availablerulearraylist = new HashMap<Rule, Class>(); // tu dodajemy zaimplementowane reguly availablerulearraylist.put(new EqualsRule(), EqualsRule.class); availablerulearraylist.put(new NotEqualsRule(), NotEqualsRule.class); availablerulearraylist.put(new MatchesRule(), MatchesRule.class); availablerulearraylist.put(new PairRule(), PairRule.class); public ArrayList<Rule> getavailablerulecollection() { ArrayList<Rule> arrret = new ArrayList<Rule>(); for (Entry<Rule, Class> entry : availablerulearraylist.entryset()) { arrret.add(entry.getkey()); return arrret; public Class getrulecless(rule rule) { return availablerulearraylist.get(rule); public HashMap<Rule, Class> getavailablerulearraylist() { return availablerulearraylist; public void setrulearraylist(linkedlist<rule> rulearraylist) { this.rulearraylist = rulearraylist; public List<Rule> getrulearraylist() { return rulearraylist; public void addruleaction(rule rule) { rulearraylist.add(rule); /** * sprawdza czy wiersz danych pasuje do wybranych regã³ł * @param row * @return public boolean isparsepositive(row row) { for (Rule rule : rulearraylist) { // stosule logiczny and na regulach if (!rule.isparsepositive(row)) return false; return true;

Relacja równości Wybór regół z aplikacji pozwala na filtrowanie wierszy o zadanej wartośici w wybranej kolumnie. Szczegóły implementacji /** * Regóła okreslająca rã³wność wartości * @author sadzio * public class EqualsRule extends Rule { public EqualsRule() { super(); @Override public String tostring() { return "EqualsRule:" + column.tostring() + "==" + stringvalue; public boolean isparsepositive(row row) { return row.getrovvalue(column).equals(stringvalue); public String getname() { return "EqualsRule"; Relacja nierówności Wybór regół z aplikacji pozwala na filtrowanie wierszy o wartości różnej od wybranej. Szczegóły implementacji /** * Regola okreslająca relacje nierownosci * @author sadzio * public class NotEqualsRule extends Rule { public NotEqualsRule() { super(); @Override public String tostring() {

return "NotEqualsRule:" + column.tostring() + "!=" + stringvalue; public boolean isparsepositive(row row) { return!row.getrovvalue(column).equals(stringvalue); public String getname() { return "NotEqualsRule"; Relacja relacja zawierania Wybór regół z aplikacji pozwala na filtrowanie wierszy októra zawiera w całości zadaną wartośić w wybranej kolumnie. Szczegóły implementacji /** * Regola okreslająca zawieranie sie w stringu zadanej wartości * @author sadzio * public class MatchesRule extends Rule { public MatchesRule() { super(); @Override public String tostring() { return "LikeRule:" + column.tostring() + " like " + stringvalue; public boolean isparsepositive(row row) { return row.getrovvalue(column).matches("*" + stringvalue + "*"); public String getname() { return "LikeRule"; Relacja relacja następstwa Wybór regół z aplikacji pozwala na zdefiniowanie regóły która pozwala zdefiniować pary gdzie wartości w zadanej kolumnie występują jeden po drógim w zadanej kolejności. Szczegóły implementacji

/** * Regola okreslająca wystepowania regoly pary w relacji następstwa pierwszej wartosci * dodanej (setvalue) po drugiej. * * @author sadzio * public class PairRule extends Rule { private String firststring1; private String secondstring2; boolean firststring; boolean prevmatch; private Row row; public PairRule(Column column, String value) { super(); this.column = column; this.stringvalue = value; public PairRule() { super(); @Override public String tostring() { return "PairRule:" + firststring1 + ">>" + secondstring2; public boolean isparsepositive(row row) { if (prevmatch) { boolean pos = row.getrovvalue(column).equals(secondstring2); if (pos) { prevmatch = false; this.row.setenable(); return true; prevmatch = row.getrovvalue(column).equals(firststring1); if (prevmatch) { this.row = row; return false; public String getname() { return "PrefixRule"; @Override public void setvelue(string text) { if (firststring) { secondstring2 = text; else { firststring = true; firststring1 = text; ;

Model UML Projekt jest podzielony na trzy niezależne części. Model danych, warstwę wizualizacyjną oraz analizator regółowy parser, który korzysta z powyżyszych. Głowną klasą jest View Odpowiada ona za prezentacje komponentów aplikacji. Zawiera w sobie elementy sterujące obiekty typu Action. Warstwę danych określają dwie klasy Rule i Column. Klasa Rule określa regółę jest ona bazą dle regół takich jak MatchesRule, PairRule, LikeRule, EqualsRule, NotEqualsRule. Wykorzystane są one w klasie zarządzającej regółami RuleModel. Definicę kolumny w aplikacji reprezentuje klasa Column, jest ona elementem ColumnModel, który określa struktórę pliku logu.

Wnioski Projekt został wykonany zgodnie z założeniami. Podczas pisania i aplikacji wykorzystaliśmy udostępnione przez Google narzędzia do zarządzania projektem. Portal do prowadzanie projektu google code znacznie ułatwił pracę. Usprawnił komunikację pomiędzy programistami i usestymatyzował proces tworzenia oprogramowania oraz zarządzania wersjami.