5. Ý nghĩa khoa học và thực tiễn
1.6.2. Hoạt động của máy chủ web Apache
Apache không đơn thuần chỉ là server vật lý, mà là một phần mềm chạy trên server với chức năng thiết lập kết nối giữa server và các trình duyệt của ngƣời dùng nhƣ: Chrome, FireFox, Safari, Google,… rồi truyền, trao đổi file
cấu trúc 2 chiều dạng client-server. Xét về cách thức hoạt động thì Apache là một phần mềm đa nền tảng, hoạt động tốt trên server Unix và Windows.
Khi ngƣời dùng truy cập một trang web, trình duyệt sẽ gửi yêu cầu tải trang web đó lên server. Sau đó, Apache sẽ trả lại kết quả với tất cả các file cấu thành nên trang mà ngƣời dùng yêu cầu truy cập bao gồm cả nội dung, hình ảnh, video, âm thanh,…Apache đảm nhận trách nhiệm đảm bảo tiến trình giao tiếp giữa Server và Client qua giao thức HTTP một cách mƣợt mà và bảo mật một cách tối ƣu nhất.
Apache hoạt động trên nền tảng module có độ tùy biến cao. Cho phép quản trị server có cả quyền tắt hoặc thêm chức năng. Một điểm đặc biệt ở Apache là sử dụng một Module cho bảo mật caching, URL rewriting, chứng thực mật khẩu,…giúp ngƣời dùng bảo vệ trang web của mình một cách an toàn nhất.
Hình 1.14. Kiến trúc máy chủ Apache
1.7. Tổng kết Chƣơng 1
Trong chƣơng này đã giới thiệu tổng quan lý thuyết về các khái niệm về tri thức, Ontology, Máy chủ web và Nhật ký của máy chủ web. Nghiên cứu các khái niệm để nắm bắt các vấn đề cốt lõi trong quá trình nghiên cứu xây
dựng mô hình chuyển đổi tri thức máy chủ web dựa vào Ontology. Trong quá trình nghiên cứu tổng quan về các lý thuyết, tôi sửa dụng bƣớc phân tích trong quản lý tri thức (Bước 4 – Trang 23) để làm cơ sở cho việc phân tích mô hình hoạt động và xây dựng chuyển đổi tri thức ở các chƣơng sau.
Chƣơng 2: PHÂN TÍCH CÚ PHÁP FILE LOG DỰA VÀO ONTOLOGY VÀ PARSER
2.1. Phân tích cú pháp
2.1.1. Tổng quan phân tích cú pháp [19]
Với quy mô ngày càng tăng và độ phức tạp của các hệ thống hiện đại, khối lƣợng nhật ký đang tăng lên nhanh chóng, ví dụ, một hệ thống máy chủ sẽ ghi lại nhật ký hoạt động với tốc độ khoảng 50 gigabyte (khoảng 120∼200 triệu dòng) mỗi giờ. Do đó, cách phân tích nhật ký truyền thống chủ yếu dựa vào kiểm tra thủ công đã trở thành một công việc tốn kém và dễ xảy ra sai sót. Để giải quyết thách thức này, nhiều nỗ lực gần đây đã đƣợc thực hiện để tự động hóa phân tích nhật ký bằng cách sử dụng các kỹ thuật khai thác dữ liệu. Các ví dụ điển hình về khai thác nhật ký bao gồm phát hiện bất thƣờng, xác minh chƣơng trình, chẩn đoán sự cố và đảm bảo an ninh. Tuy nhiên, thông báo nhật ký thông thƣờng không có cấu trúc, vì các nhà phát triển đƣợc phép ghi lại thông báo nhật ký bằng cách sử dụng văn bản miễn phí để thuận tiện và linh hoạt. Để cho phép khai thác tự động các nhật ký không có cấu trúc, bƣớc đầu tiên là thực hiện phân tích cú pháp nhật ký, theo đó các thông báo nhật ký thông thƣờng không có cấu trúc có thể đƣợc chuyển đổi thành một chuỗi các sự kiện có cấu trúc.
Thông thƣờng, một thông báo nhật ký, nhƣ đƣợc minh họa trong ví dụ sau, ghi lại một sự kiện hệ thống cụ thể với một tập hợp các trƣờng: dấu thời gian (ghi lại thời gian xảy ra của sự kiện), mức ver-bosity (cho biết mức độ nghiêm trọng của sự kiện, ví dụ: thông tin), và nội dung tin nhắn thông thƣờng (ghi lại những gì đã xảy ra trong quá trình vận hành hệ thống).
Ví dụ: Một thông báo nhật ký
2008-11-09 20:35:32,146 INFO dfs.DataNode$DataXceive r: Receiving block blk_-1608999687919862906 src: /10 .251.31.5:42506 dest:
/10.251.31.5:50010
Nhƣ quan sát trong ví dụ, nội dung thông báo thông thƣờng có thể đƣợc chia thành hai phần: phần không đổi và phần biến.
Phần không đổi tạo thành văn bản thuần túy cố định và đƣợc giữ nguyên cho mỗi lần xảy ra sự kiện, có thể tiết lộ loại sự kiện của thông báo nhật ký.
Phần biến mang thông tin thời gian chạy đƣợc quan tâm, chẳng hạn nhƣ giá trị của trạng thái và tham số (ví dụ: địa chỉ IP và cổng: 10.251.31.5:50010), có thể khác nhau giữa các lần xuất hiện sự kiện khác nhau.
Mục tiêu của phân tích cú pháp nhật ký là trích xuất sự kiện bằng cách tự động tách phần không đổi và phần biến của thông báo nhật ký thông thƣờng, đồng thời biến đổi thêm mỗi thông báo nhật ký thành một sự kiện cụ thể (thƣờng đƣợc biểu thị bằng phần không đổi của nó). Trong ví dụ trên, sự kiện có thể đƣợc ký hiệu là “Khối nhận * src: * dest: *”, trong đó phần biến đƣợc xác định và che dấu bằng dấu hoa thị.
Phân tích cú pháp nhật ký là điều cần thiết để khai thác nhật ký. Theo truyền thống, phân tích cú pháp nhật ký chủ yếu dựa vào các biểu thức chính quy để trích xuất sự kiện nhật ký cụ thể (ví dụ: SEC). Tuy nhiên, các hệ thống phần mềm hiện đại, với kích thƣớc và độ phức tạp ngày càng tăng, có xu hƣớng tạo ra một khối lƣợng lớn nhật ký với các sự kiện nhật ký đa dạng. Các nhật ký này đòi hỏi những nỗ lực không nhỏ để tạo thủ công và duy trì các quy tắc biểu thức chính quy. Đặc biệt, khi một hệ thống liên tục phát triển, các quy tắc phân tích cú pháp nhật ký rất có thể sẽ trở nên lỗi thời rất thƣờng xuyên. Ví dụ: các hệ thống của Google mỗi tháng sẽ cho ra hàng nghìn bảng nhật ký khác nhau cho những nhiệm vụ khác nhau. Do đó, nhu cầu cao hiện
nay cần phải xây dựng các phƣơng pháp phân tích cú pháp nhật ký tự động, có khả năng phát triển cùng với hệ thống.
Để đạt đƣợc mục tiêu này, các nghiên cứu gần đây đã đề xuất một số phƣơng pháp tiếp cận theo hƣớng dữ liệu để phân tích cú pháp nhật ký tự động (ví dụ: SLCT, IPLoM, LKE, LogSig), trong đó các thông báo nhật ký lịch sử là tận dụng để đào tạo các mô hình thống kê cho việc trích xuất sự kiện.
2.1.2. Các phương pháp phân tích cú pháp [19]
Phân tích cú pháp nhật ký – Log Prasing là công cụ đã đƣợc nghiên cứu rộng rãi trong những năm gần đây. Trong số tất cả các phƣơng pháp đƣợc nghiên cứu, có bốn phƣơng pháp tiêu biểu đang đƣợc sử dụng rộng rãi cho các nhiệm vụ khai thác nhật ký.
SLCT (Simple Logfile Clustering Tool)
SLCT (Simple Logfile Clustering Tool), là công trình đầu tiên về phân
tích cú pháp nhật ký tự động. Công trình cũng đã phát hành một công cụ phân tích cú pháp nhật ký mã nguồn mở, đƣợc sử dụng rộng rãi trong các nhiệm vụ khai thác nhật ký, chẳng hạn nhƣ khai thác nhật ký sự kiện, xác định vấn đề dựa trên triệu chứng và phân loại cảnh báo mạng.
Lấy cảm hứng từ khai thác quy tắc liên kết, SLCT hoạt động nhƣ một thủ tục ba bƣớc với hai lần chuyển qua các thông báo nhật ký:
1) Word vocabulary construction. Làm cho một đƣờng chuyền so với dữ liệu và xây dựng một vốn từ vựng của tần số từ và vị trí.
2) Cluster candidates construction. Làm cho một đƣờng chuyền cho các ứng viên cụm (1) bằng cách sử dụng từ vựng từ.
3) Log template generation. Các nhóm có đủ thông báo nhật ký đƣợc chọn từ các ứng viên. Sau đó, những thông điệp ghi trong mỗi cụm có thể đƣợc kết hợp để tạo ra một mẫu nhật ký, trong khi thông điệp log còn lại đƣợc đặt vào một cụm ngoại lệ.
IPLoM (Iterative Partitioning Log Mining)
IPLoM (Iterative Partitioning Log Mining - Khai thác nhật ký phân
vùng lặp lại) là một phƣơng pháp phân tích cú pháp nhật ký dựa trên kinh nghiệm học, đƣợc thiết kế đặc biệt theo các đặc điểm của thông báo nhật ký. Phƣơng pháp này cũng đã đƣợc sử dụng bởi một tập hợp các nghiên cứu khai thác nhật ký (ví dụ: phát hiện cảnh báo, phân tích nhật ký sự kiện và tóm tắt sự kiện).
Cụ thể, IPLoM thực hiện phân tích cú pháp nhật ký thông qua quy trình ba bƣớc phân vùng thứ bậc trƣớc khi tạo mẫu:
1) Phân vùng theo kích thƣớc sự kiện. Thông báo nhật ký đƣợc phân chia thành các cụm khác nhau theo độ dài khác nhau.
2) Phân vùng theo vị trí mã thông báo. Đối với mỗi phân vùng, các từ ở các vị trí khác nhau đƣợc đếm. Sau đó, vị trí có số lƣợng từ duy nhất ít nhất đƣợc sử dụng để chia nhỏ các thông báo nhật ký.
3) Phân vùng bằng cách tìm kiếm ánh xạ. Phân vùng sâu hơn đƣợc thực hiện trên các cụm bằng cách tìm kiếm các mối quan hệ ánh xạ giữa tập hợp các mã thông báo duy nhất ở hai vị trí mã thông báo đƣợc chọn bằng cách sử dụng tiêu chí heuristic.
4) Tạo mẫu nhật ký. Tƣơng tự nhƣ SLCT, bƣớc cuối cùng là tạo các mẫu nhật ký từ mọi cụm.
LKE (Log Key Extraction)
LKE (Log Key Extraction) là một phƣơng pháp phân tích cú pháp nhật ký đƣợc phát triển bởi Microsoft và đã đƣợc áp dụng trong một tập hợp các nhiệm vụ về phân tích nhật ký phi cấu trúc.
LKE sử dụng cả thuật toán phân cụm và quy tắc heuristic để phân tích nhật ký:
nhóm bằng cách sử dụng thuật toán phân nhóm phân cấp với chỉ số khoảng cách chỉnh sửa có trọng số tùy chỉnh.
2) Tách cụm. Một bƣớc tách dựa trên các quy tắc heuristic đƣợc thực hiện để tách thêm các cụm.
3) Tạo mẫu nhật ký. Bƣớc cuối cùng là tạo các mẫu nhật ký từ mọi cụm, tƣơng tự nhƣ SLCT và IPLoM.
LogSig
LogSig là một phƣơng pháp phân tích cú pháp nhật ký gần đây. LogSig hoạt động theo ba bƣớc:
1) Tạo cặp từ. Mỗi thông báo nhật ký đƣợc chuyển đổi thành một tập hợp các cặp từ để mã hóa cả từ và thông tin vị trí của nó.
2) Phân cụm nhật ký. Dựa trên các cặp từ, một giá trị tiềm năng đƣợc tính toán cho mỗi thông báo nhật ký để quyết định thông điệp nhật ký có khả năng thuộc về cụm nào. Sau một số lần lặp lại, các thông báo nhật ký có thể đƣợc nhóm lại.
3) Tạo mẫu nhật ký. Trong mỗi cụm, các thông báo nhật ký đƣợc tận dụng để tạo ra một mẫu nhật ký.
2.2. Tổng quan về phân tích cú pháp - Parser
2.2.1. Cấu trúc của Parser
- Parser đƣợc tạo thành từ ba thành phần:
Input Formats: là nhà cung cấp bản ghi chung; các bản ghi tƣơng
đƣơng với các hàng trong bảng SQL và định dạng đầu vào có thể đƣợc coi là các bảng SQL chứa dữ liệu mà ngƣời dùng muốn xử lý.
+ Định dạng đầu vào của Log Parser có thể truy xuất dữ liệu từ các nguồn sau:
o Log files IIS (W3C, IIS, NCSA, Nhật ký nhị phân tập trung, nhật ký lỗi HTTP, nhật ký quét URL, nhật ký ODBC)
o Windows Event log
o Các tệp văn bản đƣợc định dạng chung: XML, CSV, TSV và W3C (ví dụ: tệp nhật ký Theo dõi Exchange, tệp nhật ký tƣờng lửa cá nhân, tệp nhật ký Dịch vụ Windows Media® , tệp nhật ký FTP, tệp nhật ký SMTP, v.v.)
o Windows Registry
o Đối tƣợng danh mục hoạt động
o Thông tin tệp và thƣ mục
o Các tệp chụp NetMon .cap
o Tệp nhật ký NCSA mở rộng / kết hợp o ETW traces
o Các plugin tùy chỉnh (thông qua giao diện COM công khai)
SQL-Like Engine Core: xử lý các hồ sơ đƣợc tạo ra bởi một Format
Input, sử dụng một phƣơng ngữ của ngôn ngữ SQL bao gồm các điều khoản SQL chung ( SELECT, WHERE, GROUP BY , HAVING , ORDER BY ), chức năng tổng hợp ( SUM , COUNT, AVG , MAX , MIN ) và một bộ hàm phong phú (ví dụ: SUBSTR , CASE , COALESCE , REVERSEDNS , v.v.); các bản ghi kết quả sau đó đƣợc gửi đến trang kết quả đã đƣợc định dạng.
Output Formats: là ngƣời dùng chung các bản ghi ; chúng có thể
đƣợc coi là bảng SQL nhận kết quả xử lý dữ liệu.
+ Các định dạng đầu ra tích hợp sẵn của Log Parser có thể:
o Ghi dữ liệu vào tệp văn bản ở các định dạng khác nhau (CSV, TSV,
XML, W3C, user-defined, v.v.)
o Gửi dữ liệu đến cơ sở dữ liệu SQL
o Gửi dữ liệu đến máy chủ SYSLOG
o Hiển thị dữ liệu ra bảng điều khiển hoặc ra màn hình
Hình 2.1. Cấu trúc của một Log Parser
- Công cụ Parser thƣờng có sẵn dƣới dạng tệp thực thi dòng lệnh (LogParser.exe) và dƣới dạng một tập hợp các đối tƣợng COM (LogParser.dll).
2.2.2. Hoạt động của Parser
Parser (phân tích cú pháp) là một thuật ngữ đƣợc nhóm một loạt các nghĩa và các trƣờng hợp sử dụng. Nói một cách tổng thể, Parser là quá trình giải mã thông tin thành một thứ mà máy móc có thể sử dụng đƣợc hay nói
cách khác Parser có nghĩa là tìm ra cấu trúc cơ bản của dữ liệu mà chúng ta đƣợc cung cấp.
Hình 2.2. Mô hình hoạt động của Parser
Hầu hết các trƣờng hợp sử dụng Parser là để chuyển đổi thông tin dạng văn bản thành dữ liệu có cấu trúc . Ví dụ, chuyển đổi một số mã lập trình do con ngƣời viết thành mã byte đƣợc máy chạy.
Một Parser đƣợc thực hiện bởi 3 thành phần - Scanner, Lexer và Parser. Scanner đọc văn bản đầu vào một ký tự tại một thời điểm và chuyển nó cho Lexer.
Lexer chuyển đổi luồng ký tự thành một luồng mã thông báo. Tất cả các mã thông báo là ký hiệu đầu cuối từ CFG (ngữ pháp không có ngữ cảnh). Thông thƣờng các lexer đƣợc triển khai dƣới dạng DFA (tự động hóa tự động xác định). Chúng có thể đƣợc tạo bởi các công cụ nhƣ jFlex.
Sau đó, Parser đọc dòng mã thông báo đƣợc tạo ra (ký hiệu đầu cuối) và xây dựng một cây theo các quy tắc sản xuất đƣợc xác định trong CFG.
Có 2 loại thuật toán phân tích cú pháp chính - từ trên xuống và từ dƣới lên.
2.2.3. Mô hình hoạt động của Phân tích cú pháp dựa vào Ontology
Để xác định đƣợc hệ thống phân tích cú pháp dựa vào Ontology hoạt động nhƣ thế nào. Đầu tiên ta cần xác định hệ thống chuyển đổi tri thức dựa vào Ontology sẽ hoạt động nhƣ thế nào để làm tiền đề xây dựng hệ thống phân tích cú pháp.
Hệ thống chuyển đổi tri thức dựa vào Ontology bao gồm hai phần: Xử lý dữ liệu Ontology (bao gồm máy chủ ontology, nguồn dữ liệu, đơn vị xử lý tài liệu và cơ sở dữ liệu) và Truy xuất dữ liệu ontology (bao gồm máy chủ ontology, chuyển đổi truy vấn, quy trình tùy chỉnh và tác nhân truy xuất).
Xử lý dữ liệu Ontology: Sẽ đảm nhận nhiệm vụ xử lý dữ liệu của tài liệu đƣợc sử dụng, tiến hành phân tích đƣa dữ liệu vào cơ sở dữ liệu và thông qua các truy vấn có thể đƣợc tùy chỉnh để tiến hành kết nối với máy chủ Ontology chuyển đổi các truy vấn thành dữ liệu ngƣời dùng cần. Quá trình này đƣợc thể hiện trong Hình 2.9.
Truy xuất dữ liệu Ontology: Đảm nhận nhiệm vụ xử lý tài liệu đƣợc sử dụng để trích xuất thông tin từ một hệ thống không có cấu trúc nhất định và xác lập quan hệ giữa các thuật ngữ và các khái niệm của tài liệu dựa trên máy chủ Ontology. Quá trình truy xuất này đƣợc thể hiện trong Hình 2.10.
Hình 2.5. Mô hình truy xuất dữ liệu Ontology [21]
Trong quá trình xử lý mỗi tài liệu trong bộ tài liệu sẽ triển khai từ vựng, phân tích từ và lọc số, dấu gạch ngang và dấu câu. Sử dụng danh sách từ dừng loại bỏ các từ chức năng để lại các từ hữu ích nhƣ danh từ và động từ. Việc trích xuất các từ gốc và loại bỏ tiền tố và hậu tố để cải thiện độ chính xác của việc truy xuất. Cuối cùng, việc xác định một số từ ngữ làm thành phần chính để thể hiện nội dung.
Parser Query: Sẽ kiểm tra các truy vấn đầu vào và tạo ra Cây truy
vấn theo quy tắc Heuristic.
Query Analysis: Tiến hành kiểm tra cây truy vấn theo từng Node trên
cây. Đầu ra của thuật toán này có thể là:
- Trọng tâm của truy vấn.