5. Ý nghĩa khoa học và thực tiễn
3.4.2. Đánh giá Parser
Đánh giá độ chính xác của quá trình chuyển đổi dữ liệu từ file log sang ontology
Thực hiện chuyển đổi dữ liệu từ 400 dữ liệu đến 100000 dữ liệu
Bảng 3.1 Số liệu chuyển đổi từ Log IIS sang Ontology
Số dữ liệu cần chuyển Dữ liệu tiếp nhận Tỷ lệ
400 400 100% 600 600 100% 1000 1000 100% 3000 3000 100% 4000 4000 100% 10000 10000 100% 15000 15000 100% 40000 40000 100% 75000 75000 100% 100000 100000 100%
Dữ liệu luôn đạt 100% trong quá trình chuyển đổi từ dữ liệu Log IIS sang Ontology.
quá trình chuyển đổi của Parser Log IIS luôn ổn định hơn so với các Parser khác. Do đó Parser Log IIS tối ƣu về độ chính xác.
Hình 3.23. So sánh độ chính xác trong việc thực hiện chuyển đổi của Parser Log IIS với các Parser khác
Đánh giá thời gian thực hiện
Tiến hành so sánh đánh giá Parser với các Parser khác, so sánh này chỉ mang tính chất khách quan dựa trên quan sát thời gian thực hiện chuyển đổi dữ liệu từ dữ liệu Log sang Ontology.
Thực nghiệm 1:
Bảng 3.2 Thời gian chuyển đổi dữ liệu trong thực nghiệm 1
Số lƣợng dữ liệu LogIIS SLCT IPLoM LogSix LKE
400 0,41 0,01 0,03 8,02 10,00 4000 3,50 0,07 0,1 100 1000 40000 55,00 0,5 0,3 800 X 400000 X 1 4 8000 X 4000000 X 7 20 10000 X Thực nghiệm 2:
Bảng 3.3 Thời gian chuyển đổi dữ liệu trong thực nghiệm 2
Số lƣợng dữ liệu LogIIS SLCT IPLoM LogSix LKE
600 0,52 0,03 0,05 8 50
3000 2,93 0,06 0,3 6 900
15000 20,69 0,25 0,9 100 10000
75000 104,61 1 3 900 X
375000 X 3 7 5000 X
Vậy số lƣợng sự kiện càng lớn thì thời gian chuyển đổi càng lâu. Với số lƣợng sự kiện từ 3000 trở đi thì thời gian chuyển đổi rất dài. Ngoài ra thời gian chuyển đổi còn bị phụ thuộc vào các yếu tố khách quan khác nhƣ: tốc độ, độ ổn định của internet, cấu hình máy tính sử dụng của ngƣời dùng.
Thời gian thực hiện chuyển đổi của Parser trong luận văn này chậm hơn so với các Parser khác. Do đó, Parser của Log IIS vẫn chƣa tối ƣu với thời gian chuyển đổi.
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
1. Kết luận chung
Trong nghiên cứu này, ngoài phần trình bày các khái niệm cơ bản về Ontology, máy chủ Web, nhật ký máy chủ Web, quản lý tri thức, tôi đã xây dựng mô hình Parser chuyển đổi dựa trên cấu trúc của một file IIS Log, kết hợp với phƣơng pháp rút trích từ file Log và truy vấn dữ liệu từ file OWL. Việc thử nghiệm đƣợc thực hiện trên file Log của máy chủ Web.
Kết quả đạt đƣợc của luận văn
- Hiểu các kiến thức về Ontology, máy chủ Web, nhật ký máy chủ Web, quản lý tri thức, cách thức truy xuất file Log.
- Xây dựng mô hình Ontology dành cho quản lý tri thức sự kiện máy chủ Web IIS.
- Xây dựng mô hình Parser rút trích dữ liệu từ các file Log máy chủ IIS vào mô hình Ontology.
Một số kết quả chƣa đạt đƣợc:
- Mô hình chuyển đổi hoạt động chậm khi dữ liệu quá lớn.
- Còn nhiều loại Log khác chƣa đƣợc đƣa vào mô hình.
- Chƣa đƣa giải pháp vào mô hình chuyển đổi.
- Chƣa triển khai thành 1 công cụ hoàn chỉnh cho ngƣời dùng.
2. Hƣớng phát triển đề tài
Trên cơ sở các kết quả đạt đƣợc trong nghiên cứu này, tôi nhận thấy còn một số vấn đề cần tiếp tục đƣợc nghiên cứu để có đƣợc kết quả tốt hơn nhƣ:
- Tiếp tục nghiên cứu thử nghiệm để tối ƣu mô hình Ontology.
- Tiếp tục nghiên cứu các loại Log khác nhƣ: Apache Log, Error Log, System Log, … đƣa vào Parser để tạo thành một mô hình tổng quát cho các loại Log.
DANH MỤC TÀI LIỆU THAM KHẢO
[1] John Wiley & Sons, Microsoft Official Academic Course, “Windows
Server Administration Fundamentals”, 2011.
[2] Daniil Mirylenka, Andrea Passerini, and Luciano Serafini -
Bootstrapping Domain Ontologies from Wikipedia: A Uniform Approach - of the Twenty-Fourth International Joint Conference on Artificial Intelligence, 2015.
[3] Patrick, Killelea, Web performance tuning (2nd ed.). Beijing: O'Reilly.
p. 264, 2012.
[4] Webdevelopersnotes, “What is web server?'”, 2010.
[5] Girard, John P.; Girard, JoAnn L. (2015). "Defining knowledge management: Toward an applied compendium" (PDF). Online Journal of Applied Knowledge Management. 3 (1): 14.
[6] University of North Carolina at Chapel Hill. Introduction to Knowledge
Management 2014.
[7] ThS. Trần Hùng Cƣờng, ThS. Ngô Đức Vĩnh - Khoa Công nghệ thông tin Trƣờng Đại học Công nghiệp Hà Nội, Tổng quan về phát hiện tri
thức và khai phá dữ liệu, 2011.
[8] Maier, Ronald, and Thomas Hadrich. Knowledge management systems. Encyclopedia of Knowledge Management, Second Edition.
IGI Global, 2011.
[9] Davies, John; Grobelnik, Marko; Mladenić, Dunja. Semantic Knowledge
Management: Integrating Ontology Management, Knowledge
Discovery, and Human Language Technologies, 2009.
[10] Retrieved 27 November 2010. "Parse". dictionary.reference.com [11] ThS. Vũ Ngọc Hiếu, Giáo Trình Hệ Thống Thông Tin Quản Lý, 2017
[12] Smith, Barry. Ontology. The furniture of the world. Brill Rodopi, 2012 [13] Gruber, Tom. Ontology. 2018.
[14] Jonathan Fulton. Web Architecture, 2017
[15] Tartir, Samir, I. Budak Arpinar, and Amit P. Sheth. "Ontological evaluation and validation." Theory and applications of ontology:
Computer applications. Springer, Dordrecht, 2010.
[16] He, Pinjia, et al. "An evaluation study on log parsing and its use in log
mining." 2016.
[17] J. Lou, Q. Fu, S. Yang, Y. Xu, and J. Li, Mining invariants from console
logs for system problem detection, 2010.
[18] Yu, Binbin. Research on information retrieval model based on ontology, 2019.
[19] Quách Xuân Hƣng, Một Số Phương Pháp Tích Hợp Ontology Dựa Vào
Logic Mô Tả Mờ. Trƣờng Đại học Khoa học – Đại học Huế, 2020.
[20] Deborah L. McGuinness, OWL Web Ontology Language, 2009 [21] Giuseppini, Gabriele. "Log parser." U.S. Patent Application, 2004.
PHỤ LỤC
Mô hình Parser chuyển đổi dữ liệu Log vào mô hình Ontology
import datetime import time
from owlready2 import * import csv
import time
start = time.time()
onto = get_ontology("http://test.org/onto.owl") onto.save("structure.owl")
with open('D:\Hoc Tap\Log\LogOnto.csv', newline='') as csvfile: reader = csv.DictReader(csvfile)
count = 0
for row in reader: count = count + 1 log = Log("Log_"+str(count)) log.hasLogFileName = row['LogFilename'] log.hasLogRow = row['LogRow'] date = Date("Date_"+str(count)) date.hasDate = row['date'] date.hasTime = row['time'] log.hasLogDate.append(date)
user = User("User_"+str(count)) user.hasUserIP = row['c-ip'] user.hasUserName = row['cs-username'] user.hasSitename = row['s-sitename'] log.hasLogUser.append(user) webServer = WebServer("WebServer_"+str(count)) webServer.hasServerName = row['s-computername'] webServer.hasServerIP = row['s-ip'] webServer.hasServerPort = row['s-port'] log.hasLogWebServer.append(webServer) type = Type("Type_"+str(count)) type.hasMethod = row['cs-method'] type.hasRequest = row['cs-uri-stem'] type.hasReferer = row['cs-uri-query'] log.hasLogType.append(type) status = Status("Status_"+str(count)) status.hasStatus = row['sc-status'] status.hasSubStatus = row['sc-substatus'] status.hasWin32 = row['sc-win32-status'] log.hasLogStatus.append(status) event = Event("Event_"+str(count)) event.hasSizeOfRequest = row['sc-bytes'] event.hasSizeOfReceive = row['cs-bytes']
event.hasTimeTaken = row['time-taken'] event.hasVersion = row['cs-version'] event.hasServerName = row['cs-host'] event.hasUserAgent = row['cs(User-Agent)'] event.hasRefererUser = row['cs(Referer)'] log.hasLogEvent.append(event) if (count>20000): break onto.save("LogOntology.owl")