Разработка системы анализа Log-файлов - Дипломная работа

бесплатно 0
4.5 67
Web content, usage mining. Современные средства анализа лог-файлов. Требования к создаваемой системе, выбор инструментов реализации, описание общей архитектуры. Конвенции программирования, разработки Firebird. Кроссплатформленость, работа с Еxсel.


Аннотация к работе
Целью моей дипломной работы ознакомиться с современными средствами анализа log-файлов, структурой и правилами ведения логов, а так же разработать систему для анализа этих файлов. Процесс автоматического изучения характеристик доступа пользователей к серверам может включать изучение наиболее популярных путей решения, нахождении ассоциативных правил, созданию кластеризации. Данный способ используется наиболее часто, поскольку без лишних накладных ресурсов можно получить достаточно полную картину работы пользователя с сервером, к тому же, для этого метода уже существуют заранее накопленные данные. Если между пользователем и сервером используется прокси-сервер, то это будет адрес прокси-сервера, а не исходной машины. Формируемые в Webalizer отчеты позволяют не только выявить данные о количестве запросов и посещений, но и определить, с каких серверов заходят на сайт посетители и на какие страницы сайта чаще попадают, с каких страниц чаще уходят, и выявить самые популярные страницы сайта.В современном мире существует большое количество лог-анализаторов, которые предоставляют возможность получать информацию о веб-ресурсе.Исходный код парсера class NODELIST(): def __init__(self, *args): self.elements = [] self.add(*args) def add(self, *args): for arg in args: self.elements.append(arg) def remove(self, *args): for arg in args: if arg in self: self.elements.remove(arg) def add_to(self, pos, arg): old_list = self.elements new_list = [] for i in range(len(old_list) 1): if i <pos: new_list.append(old_list[i]) elif i == pos: new_list.append(arg) else: new_list.append(old_list[i-1]) self.elements = new_list def foreach(self, func, deep=False): to_return = NODELIST() for node in self: if func(node): to_return.add(node) if node.NODETYPE == 1 and deep: to_return.add(*node.foreach(func, True)) return to_return def BYNAME(self, name, deep=False): return self.foreach(lambda x: x.NODETYPE == 1 and x.name == name, deep) def WITHATTR(self, name, deep=False): return self.foreach(lambda x: x.NODETYPE == 1 and name in x.attributes, deep) def BYATTR(self, name, value, deep=False): return self.foreach(lambda x: x.NODETYPE == 1 and name in x.attributes and x.attributes[name] == value, deep) def __getitem__(self, index): return self.elements[index] def __bool__(self): return bool(self.elements) def __len__(self): return len(self.elements) class BONDEDLIST(NODELIST): def __init__(self, parent): NODELIST.__init__(self) self.common_parent = parent def add(self, *args): for arg in args: if self: self[-1].NEXTSIBLING = arg arg.PREVIOUSSIBLING = self[-1] arg.parent = self.common_parent NODELIST.remove(self, arg) def add_to(self, pos, arg): arg.parent = self.common_parent if pos == 0: self[0].PREVIOUSSIBLING = arg arg.NEXTSIBLING = self[0] elif pos <len(self): self[pos].PREVIOUSSIBLING = arg arg.NEXTSIBLING = self[pos] self[pos-1].NEXTSIBLING = arg arg.PREVIOUSSIBLING = self[pos-1] elif pos == len(self): self[pos-1].NEXTSIBLING = arg arg.PREVIOUSSIBLING = self[pos-1] PREVIOUSSIBLING = None def remove(self): if self.NEXTSIBLING: self.NEXTSIBLING.PREVIOUSSIBLING = self.PREVIOUSSIBLING if self.PREVIOUSSIBLING: self.PREVIOUSSIBLING.NEXTSIBLING = self.NEXTSIBLING if self.parent: self.parent.CHILDNODES.remove(self) def INSERTBEFORE(self, node): if self.parent is not None: index = self.parent.CHILDNODES.elements.index(self) self.parent.CHILDNODES.add_to(index, node) def INSERTAFTER(self, node): if self.parent is not None: index = self.parent.CHILDNODES.elements.index(self) self.parent.CHILDNODES.add_to(index 1, node) class TEXTNODE(Node): def __init__(self, content=""): self.content = content class Comment(TEXTNODE): NODETYPE = 8#-*-coding: utf-8-*-import sys from PYQT4 import QTCORE, QTGUI class ANYWIDGET(QTGUI.QWIDGET): def __init__(self,*args): QTGUI.QWIDGET.__init__(self,*args) boxlay = QTGUI.QHBOXLAYOUT(self) frame = QTGUI.QFRAME(self) # Фрейм frame.SETFRAMESHAPE(QTGUI.QFRAME.STYLEDPANEL) frame.SETFRAMESHADOW(QTGUI.QFRAME.Raised) gridlay = QTGUI.QGRIDLAYOUT(frame) # Менеджер размещения элементов во фрейме label = QTGUI.QLABEL(u"Метка",frame) # Текстовая метка. gridlay.ADDWIDGET(label,0,0) ln_edit = QTGUI.QLINEEDIT(u"Винни Пух", frame) # Строковое поле ввода. gridlay.ADDWIDGET(ln_edit,0,1) radio_group = QTGUI.QGROUPBOX(u"Выбор из двух", frame) # Рамка с надписью вокруг группы элементов. radio_lay = QTGUI.QVBOXLAYOUT(radio_group) # Менеджер размещения элементов в рамке. radio1 = QTGUI.QRADIOBUTTON(u"Первый", radio_group) # Два зависимых radio2 = QTGUI.QRADIOBUTTON(u"Второй", radio_group) # переключателя radio2.SETCHECKED(True) radio_lay.ADDWIDGET(radio1) radio_lay.ADDWIDGET(radio2) gridlay.ADDWIDGET(radio_group,1,0,3,1) combo = QTGUI.QCOMBOBOX(frame) # Поле ввода с раскрывающимся списком. combo.ADDITEM(u"Пятачок") combo.SETEDITABLE(True) gridlay.ADDWIDGET(combo,1,1) spin = QTGUI.QSPINBOX(frame) spin.SETVALUE(5) . gridlay.ADDWIDGET(spin,2,1) check = QTGUI.QCHECKBOX(u"По

Вывод
В современном мире существует большое количество лог-анализаторов, которые предоставляют возможность получать информацию о веб-ресурсе. Однако, как показал проведенный анализ популярных анализаторов, обновления большинства бесплатных анализаторов практически не происходит, а версии устарели.

На основе анализа существующих решений были сформулированы концепции разрабатываемой системы, на основе которой была спроектирована архитектура разрабатываемой системы.

Была спроектированы структура базы данных, используемая в системе. С учетом специфики использования системы, для хранения больших объемов данных.

Список литературы
1. Щербин А.А. Исследование и разработка метода автоматической классификации поведения пользователей Интернет / А.А. Щербин - Москва: 2007. - 87 с.

2. The Apache Software Foundation (2012). Apache HTTP server Documentation. URL: http://httpd.apache.org/docs/ [10 сентября]

3. Социологи подсчитали число пользователей интернета в России URL: http://lenta.ru/news/2013/03/16/internet/ [15 апреля]

4. Firebird: About Firebird 25 января 2013. URL:http://www.firebirdsql.org/en/about-firebird/ [4 февраля 2013]

5. IBASE.ru | Firebird 18 марта 2012 URL:http://www.ibase.ru/firebird.htm [26 октября 2012]

6. Программирование на Phyton. Преимущества. 10 ноября 2010. URL:http://www.weblearn.ru/2010/11/programmirovanie-na-phyton-preimushhestva. [ 21 сентября 2012]

7. Узнайте все о Firebird за 2 минуты 23 сентября 2011. URL:http://www.firebirdnews.org/docs/fb2min_ru.html [1 октября 2012]

8. Макконелл С. Совершенный код. Мастер-класс / Пер. с англ. - М. : Издательство «Русская редакция», 2012 - 896 стр. : ил.

9. Марк Лутц Изучаем Python. / Пер. с англ. - М. : Издательство «Символ-Плюс» 2011 - 1280 стр. : ил.

10. The Webalizer. URL: http://www.webalizer.org/ [10 октября 2012]

11. Analog. URL:http://www.analog.cx/ [11 октября 2012]

12. Awstat official web site. URL:http://awstats.sourceforge.net/ [15 октября 2012]

13. ALTERWIND Log Analyzer URL: http://www.alterwind.ru/ [18 октября 2012]

14. Semonitor URL:http://www.semonitor.ru/ [20 октября 2012]
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?