Tải bản đầy đủ (.pdf) (75 trang)

XÂY DỰNG hệ THỐNG PHÂN TÍCH LOG TRÊN nền TẢNG ELASTICSEARCH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.42 MB, 75 trang )

LỜI CAM ĐOAN

Em xin cam đoan Khóa luận tốt nghiệp với đề tài: “Xây dựng hệ thống phân tích
log trên nền tảng ElasticSearch” là do chính bản thân em tìm hiểu và phân tích. Các
số liệu thu thập và kết quả nghiên cứu nêu trong khóa luận là trung thực và do chính
em thực hiện.
Tp Hồ Chí Minh, ngày........tháng.......năm 2017
Sinh viên thực hiện

Trần Cảnh Khánh


MỤC LỤC
Trang phụ bìa
Lời cam đoan
MỤC LỤC ........................................................................................................................ 1
Danh sách các ký hiệu và chữ viết tắt .............................................................................. 4
Danh mục các bảng .......................................................................................................... 5
Danh mục các hình vẽ, đồ thị ........................................................................................... 5
LỜI MỞ ĐẦU .................................................................................................................. 6
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI ....................................................................... 8
1.1 Giới thiệu về log ..................................................................................................... 8
1.2 Quá trình phân tích log ........................................................................................... 8
1.2.1 Thu thập dữ liệu ............................................................................................... 9
1.2.2 Chuyển đối cấu trúc, phân tích dữ liệu ............................................................ 9
1.2.3 Mô phỏng dữ liệu, kết quả đạt được ................................................................ 9
1.3 Tại sao phải xây dựng hệ thống phân tích log? .................................................... 10
1.4 Mục tiêu, đối tượng, phạm vi ............................................................................... 11
1.4.1 Mục tiêu ......................................................................................................... 11
1.4.2 Đối tượng ....................................................................................................... 11
1.4.3 Phạm vi .......................................................................................................... 12


1.5 Tình hình nghiên cứu chung khi xây dựng, phân tích log .................................... 12
1.6 Kết luận ................................................................................................................ 13
CHƯƠNG 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG .......................................... 14
2.1. Hệ thống cân bằng tải Haproxy ........................................................................... 14
Trang 1


2.1.1 Giới thiệu về log trong Haproxy .................................................................... 14
2.1.2 Các định dạng log .......................................................................................... 15
2.2. Hệ thống máy chủ web ........................................................................................ 19
2.2.1. Giới thiệu ...................................................................................................... 19
2.2.2 Các loại log của máy chủ web ....................................................................... 19
2.3 Kết luận ................................................................................................................ 24
CHƯƠNG 3. HỆ THỐNG PHÂN TÍCH LOG ELASTIC STACK .............................. 25
3.1 Giới thiệu về ElasticSearch .................................................................................. 25
3.1.1 Một số khái niệm cơ bản trong ElasticSearch ............................................... 26
3.1.2 Kiến trúc ElasticSearch.................................................................................. 28
3.1.3 Quá trình lưu trữ, truy xuất dữ liệu trong ElasticSearch ............................... 29
3.2 Giới thiệu về Logstash.......................................................................................... 31
3.2.1 Tính năng của Logstash ................................................................................. 32
3.2.2 Kiến trúc của Logstash .................................................................................. 33
3.2.3 Cấu trúc tập tin cấu hình của Logstash .......................................................... 34
3.2.4 Các loại Plugin trong Logstash ...................................................................... 35
3.3 Kibana................................................................................................................... 35
3.4 Kết luận ................................................................................................................ 37
CHƯƠNG 4. XÂY DỰNG HỆ THỐNG PHÂN TÍCH LOG ....................................... 38
4.1 Mô hình triển khai ................................................................................................ 38
4.2 Thông tin thu thập ................................................................................................ 40
4.3 Cài đặt, cấu hình hệ thống .................................................................................... 41
4.3.1 Cấu hình log trên các dịch vụ ........................................................................ 41

Trang 2


4.3.2 Cấu hình filebeat ............................................................................................ 43
4.3.3 Cấu hình packetbeat ....................................................................................... 44
4.3.4 Cấu hình metricbeat ....................................................................................... 45
4.3.5 Cài đặt, cấu hình máy chủ ElasticSearch. ...................................................... 46
4.3.6 Cài đặt, cấu hình máy chủ kibana .................................................................. 48
4.3.7 Cài đặt cấu hình máy chủ Logstash ............................................................... 49
4.3.8 Cấu hình cảnh báo khi có dấu hiệu bất thường.............................................. 54
4.4 Hiển thị dữ liệu trên Kibana ................................................................................. 64
4.4.1 Thống kê thông tin CPU, Memory, FileSystem, Network ............................ 66
4.4.2 Thống kê thông tin truy cập vào ứng dụng web ............................................ 68
4.4.3 Thống kê các câu truy vấn trên MySQL ........................................................ 70
4.4.4 Tự động cảnh báo khi hệ thống có dấu hiệu bị xâm nhập ............................. 71
4.5 Kết luận ................................................................................................................ 72
CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................................... 73
5.1 Kết luận ................................................................................................................ 73
5.2 Hướng phát triển ................................................................................................... 73
TÀI LIỆU THAM KHẢO .............................................................................................. 74

Trang 3


Danh sách các ký hiệu và chữ viết tắt
CLF

Common Log Format

CURD


Create, read, update and delete

ELK

Elastic, Logstash, Kibana

HTTP

HyperText Transfer Protocol

ID

Identification

IP

Internet Protocol

MSSQL

Microsoft Structured Query Language

MySQL

My Structured Query Language

OSI

Open Systems Interconnection Reference Model


TCP

Transmission Control Protocol

TCP/UPD Transmission Control Protocol/User Datagram Protocol
UUID

Universally unique identifier

Trang 4


Danh mục các bảng
Bảng 2.1. Các trường dữ liệu trong định dạng mặc định của log haproxy [10] ............ 15
Bảng 2.2 Các trường trong định dạng TCP của log haproxy [10] ................................. 17
Bảng 4.1 Thông tin các máy chủ trong hệ thống triển khai ........................................... 39

Danh mục các hình vẽ, đồ thị
Hình 1.1 Quy trình xử lý phân tích log ............................................................................ 9
Hình 3.1. Minh họa việc lưu trữ dữ liệu trên ElasticSearch. [2] .................................... 27
Hình 3.2. Kiến trúc ElasticSearch. [3] ........................................................................... 28
Hình 3.3. Mô tả quá trình lữu trữ dữ liệu trên ElasticSearch [2] ................................... 30
Hình 3.4. Mô tả quá trình truy xuất dữ liệu.[2] .............................................................. 30
Hình 3.5. Kiến trúc Logstash [3].................................................................................... 33
Hình 3.6. Kiến trúc đơn giản của Logstash.[3] .............................................................. 34
Hình 3.7. Mô tả thu thập và xử lý dữ liệu trong Elastic Stack.[1] ................................. 36
Hình 4.1. Mô hình hệ thống phân tích Log. ................................................................... 38
Hình 4.2. Danh sách các chỉ mục trên hệ thống ElasticSearch. ..................................... 65
Hình 4.3. Danh sách các chỉ mục trên Kibana ............................................................... 65

Hình 4.4. Dữ liệu sau khi được thu thập, xử lý, lưu xuống ElasticSearch. .................... 66
Hình 4.5. Thông tin CPU được hiển thị dưới dạng biểu đồ. .......................................... 66
Hình 4.6. Thông tin RAM thu thập được ....................................................................... 67
Hình 4.7. Số lượng giao dịch và các trạng thái lỗi trên hệ thống................................... 68
Hình 4.8. Thống kê các yêu cầu truy cập nhiều nhất vào vị trí người dùng truy cập. ... 69
Hình 4.9. Thông tin thu thập được về hiệu năng MySQL. ............................................ 70
Hình 4.10. Hệ thống gửi mail cảnh báo khi phát hiện có dấu hiện tấn công. ................ 71
Trang 5


LỜI MỞ ĐẦU
Chúng ta đang sống trong thời đại của công nghệ thông tin - một thế giới ngập tràn
dữ liệu. Kho dữ liệu này chứa đựng một lượng lớn thông tin cực kỳ quý giá, biết tận
dụng là một lợi thế. Tuy nhiên, với một tập hợp dữ liệu khổng lồ và phức tạp như
những nguồn thông tin có khối lượng lớn, tốc độ nhanh, hình thức định dạng dữ liệu
khác nhau thì các phương pháp truyền thống không đủ mạnh để xử lý được.
Nghiên cứu của Intel tháng 9/2013 cho thấy hiện nay thế giới đang tạo ra 1 petabyte
dữ liệu trong mỗi 11 giây, tương đương với một đoạn video HD dài 13 năm. Bản thân
các công ty, doanh nghiệp cũng đang sở hữu “Big Data” của riêng mình. Biết cách khai
thác Big Data sẽ tạo ra sự khác biệt, hình thành lợi thế cạnh tranh vượt trội. Doanh
nghiệp khi hiểu rõ đối tượng khách hàng của mình là ai, họ cần gì, họ ở đâu, họ có
những suy nghĩ như thế nào khi truy cập một website,…sẽ chủ động trong việc đưa ra
các giải pháp chiến lược kịp thời nhằm nắm bắt thị trường. Bên cạnh đó, với một lượng
lớn dữ liệu quan trọng của các cơ quan, tổ chức được lưu trữ trên mạng, trong trường
hợp hệ thống mạng xảy ra sự cố, việc bảo mật thông tin và khả năng truy cập của người
dùng sẽ bị ảnh hưởng. Mức độ nghiêm trọng của sự cố tùy thuộc vào khả năng đáp ứng
kịp thời hay tính sẵn sàng của dịch vụ cung cấp. Vì vậy, việc nắm bắt những hoạt động
đang xảy trong hệ thống mạng tổ chức, doanh nghiệp là rất cần thiết và quan trọng,
giúp người quản trị hệ thống có căn cứ chính xác để nâng cao khả năng ra quyết định,
khám phá giá trị nội tại và tối ưu hoá quy trình làm việc.

Việc trích xuất dữ liệu một cách chính xác, hữu ích với chi phí hợp lý là thách thức
đặt ra cho các tổ chức, doanh nghiệp lớn. Câu hỏi được đặt ra là: Trong bối cảnh chi
phí đầu tư cho việc thu thập, lưu trữ, phân tích hệ thống quản lý dữ liệu luôn không
phải là một con số dễ chịu, thì cần sử dụng phương pháp nào để đáp ứng các yêu cầu
như: Theo dõi hoạt động của người sử dụng, phát hiện các vấn đề xảy ra trong hệ
thống, phân tích hiệu năng của hệ thống, phân tích để phát hiện các vấn đề về bảo mật,
phân tích để đưa ra dự đoán...? Lĩnh vực nghiên cứu mà khóa luận tập trung là ở nội
dung phân tích log sẽ giải quyết các vấn đề này. Khóa luận sẽ trình bày cách xây dựng
Trang 6


một hệ thống Elastic stack dùng để quản lý và phân tích dữ liệu tập trung có khả năng
tính toán cao, một hệ thống được thiết kế đảm bảo tính dự phòng và có khả năng mở
rộng. Trong hệ thống Elastic stack, dữ liệu có thể được thu thập từ nhiều nguồn máy
chủ khác nhau, có cấu trúc định dạng khác nhau, được lưu trữ tập trung với việc lập chỉ
mục để có thể phân tích dữ liệu nhanh chóng.

Trang 7


Chương 1. TỔNG QUAN VỀ ĐỀ TÀI

CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về log
Log là một thành phần quan trọng trong hệ thống mạng. Nó lưu lại một cách chính
xác mọi hoạt động, tình trạng của hệ thống. Log cực kỳ hữu hiệu cho việc giám sát
cũng như khắc phục các sự cố trong hệ thống mạng. Log được coi là dữ liệu lớn bởi vì
kích thước thường xuyên tăng trưởng theo thời gian. Các tập tin log chứa đựng các
thông tin quý giá mà các nguồn dữ liệu khác không có được.
Log lưu lại thông tin về hoạt động của hệ thống hoặc các dịch vụ. Hầu như các thao

tác trên hệ thống đều tạo ra log. Cấu trúc của một tập tin log về cơ bản có hai trường
chính, đó là thời gian và dữ liệu. Thời gian ở đây là thời gian mà dòng log được ghi lại,
còn dữ liệu bao gồm các thông tin về hoạt động xảy ra trên hệ thống. Thông thường log
được định dạng kiểu “plain text” và có phần mở rộng .log.
Như vậy, log có tác dụng ghi lại liên tục các thông báo về hoạt động của cả hệ
thống hoặc của các dịch vụ được triển khai trên hệ thống vào tập tin nhật ký tương ứng.
Thông qua việc lưu trữ và phân tích log, người quản trị mạng sẽ giám sát tình trạng
hoạt động cũng như giải quyết các vấn đề gặp phải của hệ thống, dịch vụ. Khi xảy ra sự
cố, việc phân tích log sẽ giúp phát hiện vấn đề nhanh hơn nhằm đưa ra giải pháp xử lý
kịp thời. Điều này cực kỳ quan trọng với các hệ thống cần tính sẵn sàng cao để phục vụ
nhu cầu người dùng. Bên cạnh đó, phân tích log cũng dùng để phát hiện và dự đoán các
vấn đề xảy ra cho hệ thống.
1.2 Quá trình phân tích log
Một quá trình thu thập phân tích log gồm các giai đoạn như hình dưới

Trang 8


Chương 1. TỔNG QUAN VỀ ĐỀ TÀI

Hình 1.1 Quy trình xử lý phân tích log

1.2.1 Thu thập dữ liệu
Việc thu thập dữ liệu chính là lấy các thông tin liên quan đến tình trạng hoạt động
của thiết bị trong hệ thống mạng. Tuy nhiên trong những hệ thống mạng lớn của doanh
nghiệp thì các dịch vụ không nằm trên một thiết bị riêng biệt mà nằm trên nhiều thiết bị
khác nhau. Các thành phần hệ thống cũng hoạt động trên những nền tảng khác nhau.
Mô hình quản lý log tập trung được đưa ra để giải quyết vấn đề này. Cụ thể tất cả các
tập tin log sẽ được chuyển về một hệ thống chung để phân tích, xử lý.
1.2.2 Chuyển đối cấu trúc, phân tích dữ liệu

Sau khi đã thu thập được những thông tin về hệ thống thì công việc tiếp theo
chuyển đổi cấu trúc của định dạng log, phân tách ra các trường riêng biệt và phân tích
thông tin thu thập được. Dữ liệu sẽ được đánh chỉ mục, phát hiện những điều bất
thường, những mối đe dọa hệ thống. Dựa trên những thông tin về lưu lượng truy cập,
trạng thái truy cập, hiệu năng của máy chủ… Ví dụ lưu lượng mạng tăng vọt lên một
thời điểm thì có thể là dấu hiệu hệ thống bị tấn công từ chối dịch vụ.
1.2.3 Mô phỏng dữ liệu, kết quả đạt được
Sau khi thực hiện việc phân tích dữ liệu từ các nguồn thu thập được, việc tiếp theo
là thực hiện việc tổng hợp, biểu diễn thông tin dưới dạng các biểu đồ để người quản trị
Trang 9


Chương 1. TỔNG QUAN VỀ ĐỀ TÀI

có cái nhìn toàn diện về hệ thống, đưa thông tin cảnh báo tới người quản trị và thực
hiện những công tác nhằm chống lại những mối đe dọa, khắc phục các sự cố có thể xảy
ra. Cảnh báo có thể thông qua email hoặc thực thi các mã script nhằm hạn chế hậu quả
của sự cố.
1.3 Tại sao phải xây dựng hệ thống phân tích log?
Như đã đề cập ở trên, trong hệ thống tổ chức, doanh nghiệp, các tập tin log được
tạo ra hàng ngày sẽ cung cấp cho chúng ta những thông tin cần thiết về tình trạng của
hệ thống. Các tập tin log chứa đựng các thông tin mà các nguồn dữ liệu khác không có
được. Chẳng hạn như: Tập tin log của dịch vụ cơ sở dữ liệu mysql ghi lại các thông
báo lỗi liên quan đến các câu truy vấn, tốc độ xử lý các câu truy vấn. Tập tin log của
một máy chủ web ghi lại thông tin về tất cả các yêu cầu gửi đến, các phản hồi gửi đi,
thời gian trả lời khi nhận yêu cầu từ người dùng... Để kiểm soát được mọi hoạt động
diễn ra đòi hỏi người quản trị hệ thống cần phải tiến hành phân tích log. Ví dụ, người
quản trị có thể sử dụng các bản ghi từ cơ sở dữ liệu nhằm xác định những câu truy vấn
chậm, đánh giá được hiệu năng của hệ thống, trong khi phân tích log của máy chủ web
có thể xác định được số người quan tâm đến những sản phẩm nào nhiều nhất.

Dưới đây là một số mục đích phổ biến khi tiến hành phân tích log:
-

Phát hiện các vấn đề xảy ra trong hệ thống: Đây là một trong những lý do
phổ biến khi ghi lại log trong hệ thống. Trong Linux, để điều tra lỗi của dịch vụ,
người quản trị thường sử dụng câu lệnh tail hoặc cat để kiểm tra tập tin log của
dịch vụ, ứng dụng được sinh ra. Làm thế nào để vừa không mất quá nhiều thời
gian, vừa có thể truy cập nội dung tập tin log nhanh chóng mà không làm ảnh
hưởng đến các vấn đề bảo mật của dữ liệu log? Đáp ứng yêu cầu này, cần có
một hệ thống phân tích log tập trung và hiệu quả, giúp người quản trị nắm bắt
vấn đề một cách kịp thời nhất.

-

Phân tích hiệu năng của hệ thống: Phân tích log giúp tối ưu và giám sát được
hiệu năng của hệ thống, phát hiện các điểm bị “thắt nút cổ chai” (bottleneck). Ví
T r a n g 10


Chương 1. TỔNG QUAN VỀ ĐỀ TÀI

dụ: log của máy chủ web có thể biết được tài nguyên của dịch vụ có quá tải hay
không dựa trên thời gian hồi đáp, mã hồi đáp HTTP.
-

Phân tích để phát hiện ra các vấn đề về bảo mật: Các tập tin log đóng một
vai trò quan trọng trong khâu bảo mật của bất kỳ tổ chức, doanh nghiệp nào.
Chúng đặc biệt hữu ích trong việc giám sát chặt chẽ, phát hiện kịp thời các vi
phạm về bảo mật, các cuộc tấn công nguy hiểm, vì khi người dùng tương tác với
hệ thống, các hành động của họ sẽ được ghi lại vào tập tin log.


-

Phân tích để đưa ra dự đoán: Đây là xu hướng nóng trong thời gian gần đây.
Log có thể được sử dụng để tiên đoán, giúp xác định khách hàng tiềm năng hay
để lập kế hoạch nâng cấp tài nguyên của hệ thống tương lai.

Như vậy, phân tích log là một phương pháp trích xuất dữ liệu giúp chúng ta có thể
lấy nhiều thông tin có giá trị có ích cho các tổ chức, doanh nghiệp trong việc giải quyết
các vấn đề liên quan.
1.4 Mục tiêu, đối tượng, phạm vi
1.4.1 Mục tiêu
Khóa luận có 3 mục tiêu chính:
-

Nghiên cứu được mô hình lưu trữ và phân tích log trên hệ thống Elastic stack.

-

Triển khai hệ thống phân tích log elastic stack được tính toán và lưu trữ trên 2
nodes và có khả năng mở rộng theo chiều ngang khi dung lượng log tăng lên.

-

Dựa trên các nội dung trình bày, xây dựng một số kịch bản thử nghiệm dữ liệu
đã được phân tích.

1.4.2 Đối tượng
Phân tích log của các dịch vụ apache, mysql, haproxy trong hệ thống mạng


T r a n g 11


Chương 1. TỔNG QUAN VỀ ĐỀ TÀI

1.4.3 Phạm vi
Đề tài chỉ tập trung việc phân tích và lưu trữ log trên môi trường Elastic stack. Đối
tượng để phân tích log là các tập tin log được sinh ra bởi các máy chủ apache, mysql,
haproxy. Dựa vào các thông tin thu thập được cho phép người quản trị tìm kiếm theo
các trường đã phân tích như IP nguồn, IP đích, dịch vụ. Đồng thời biễu diễn các dữ liệu
thu thập được dưới dạng các biểu đồ, giúp người dùng có cái nhìn trực quan về hệ
thống. Hệ thống thử nghiệm với dung lượng log của các dịch vụ được sinh ra khoảng
3Gb/ngày và tổng dung lượng log của hệ thống để truy vấn khoảng 40G.
1.5 Tình hình nghiên cứu chung khi xây dựng, phân tích log
Để quản lý log một cách tốt hơn, xu thế hiện nay sử dụng log tập trung do có nhiều
nguồn sinh ra log với nội dung không đồng nhất và log đòi hỏi phải được lưu trữ ở một
nơi an toàn, bảo mật, sẵn sàng sử dụng để phân tích hệ thống. Log tập trung giúp người
quản trị mạng nắm bắt chi tiết hệ thống, giúp bảo mật và bảo toàn thông tin lưu trữ,
đồng thời giảm bớt thời gian và sức lực khi tiến hành phân tích log.
Quá trình phân tích log bao gồm việc kiểm tra log tại nhiều máy chủ được tạo bởi
những thành phần khác nhau. Điều này gây ra một số khó khăn trong việc phân tích log
như:
-

Định dạng của các tập tin log không nhất quán: Mỗi ứng dụng hay mỗi thiết bị
đều có cách ghi của riêng nó.

-

Các tập tin log phân tán: Các tập tin log thường nằm trên nhiều thành phần khác

nhau. Đối với một, hai máy chủ thiết lập tìm ra một số thông tin từ log với lệnh
cat hoặc tail thì không có vấn đề gì. Tuy nhiên nếu hệ thống doanh nghiệp có
100 máy chủ, những câu lệnh trên dường như khó thể đáp ứng được và cần phải
có một hệ thống quản lý tập trung để thực hiện việc phân tích log.

-

Cần phải có kiến thức chuyên môn về các thành phần, ứng dụng tạo ra tập tin
log: Việc phân tích log đòi hỏi người quản trị phải có kiến thức chuyên môn về

T r a n g 12


Chương 1. TỔNG QUAN VỀ ĐỀ TÀI

các thành phần ứng dụng để có thể trích xuất các thông tin cần thiết từ log một
cách nhanh chóng.
Với những hệ thống lớn, việc quản lý và phân loại log bằng việc xem tập tin log của
dịch vụ là khá khó khăn. Hệ thống cần thu thập dữ liệu thời gian thực từ các dòng dữ
liệu đầu vào với tốc độ rất lớn song song với nhiệm vụ xử lý dữ liệu, tiếp đó cần phải
có phương thức thích hợp để trích xuất thông tin có giá trị. Điều này đòi hỏi phải có
một công cụ quản lý log tốt hơn, đáp ứng được sự phức tạp của luồng dữ liệu. Elastic
stack là một hệ thống phân tích log được phát triển bằng cách kết hợp 3 thành phần có
chức năng riêng biệt: Logstash, Elasticsearch, Kibana. Trong đó:
-

Logstash dùng để thu thập log từ các máy chủ trong hệ thống và tiến hành phân
tích.

-


ElasticSearch dùng để đánh chỉ mục và thực hiện truy vấn tìm kiếm dữ liệu.

-

Kibana hiển thị kết quả cho người dùng. Kibana sẽ sử dụng ElasticSearch để tìm
kiếm các dữ liệu phù hợp với yêu cầu của người dùng.

Elastic stack có nhiều ưu điểm như phần mềm mã nguồn mở hoàn toàn miễn phí,
cung cấp dịch vụ quản lý log rất tốt và dễ sử dụng. Điểm mạnh của Elastic stack là khả
năng thu thập, truy vấn, hiển thị kết quả gần như thời gian thực. Có thể đáp ứng truy
vấn một lượng dữ liệu cực lớn. Hệ thống phân tích log giúp người quản trị phát hiện ra
các điểm bất thường, giám sát được hiệu năng của hệ thống thông qua log thu thập
được. Đồng thời giúp người quản trị phân tích để phát hiện các vấn đề về bảo mật.
1.6 Kết luận
Trong chương này chúng ta đã hiểu cơ bản về quá trình phân tích log và biết được
những khó khăn gặp phải trong một hệ thống mà các tập tin log không được quản lý
tập trung. Từ nhu cầu đó cần phải xây dựng hệ thống phân tích log mà khóa luận này
hướng đến. Ở chương tiếp theo chúng ta sẽ đi sâu vào các tập tin log của dịch vụ và
phương pháp để phân tích các tập tin đó.
T r a n g 13


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

CHƯƠNG 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG
Tập tin log chứa những thông tin quan trọng về tên người dùng, địa chỉ IP nguồn,
địa chỉ IP đích, số lượng bytes được chuyển, user agent sử dụng và nhiều thông tin hữu
ích khác. Bằng cách phân tích các tập tin log sẽ cho chúng ta những thông tin hữu ích
về người dùng, mọi hoạt động xảy ra trên hệ thống. Phần này sẽ đi vào chi tiết về

những tập tin log của dịch vụ web, dịch vụ cân bằng tải Haproxy.
2.1. Hệ thống cân bằng tải Haproxy
2.1.1 Giới thiệu về log trong Haproxy
Một trong những điểm mạnh của Haproxy là khả năng cung cấp ghi nhật ký chính
xác, điều này rất quan trọng để khắc phục sự cố trong một môi trường hệ thống phức
tạp. Những thông tin được cung cấp trong bản ghi bao gồm cổng kết nối phía máy
khách, bộ định thời TCP/ HTTP, trạng thái phiên làm việc kết thúc, thông tin về các kết
nối được chuyển hướng đến máy chủ.
Haproxy cung cấp 5 định dạng log khác nhau. Tùy theo thông tin cấu hình trong tập
tin haproxy.cfg mà cho ra những định dạng đúng với yêu cầu của hệ thống.
-

Định dạng mặc định: Đây là định dạng rất cơ bản và rất hiếm khi được sử dụng.
Nó chỉ cung cấp thông tin rất cơ bản về kết nối đến vào thời điểm nó được tiếp
nhận. Các thông tin cung cấp bao gồm: IP nguồn, cổng kết nối trên IP nguồn, IP
đích, cổng kết nối trên IP đích. Định dạng mặc định hiếm khi được sử dụng vì
nó không mô tả chi tiết thông tin cần thiết của dịch vụ.

-

Định dạng TCP: định dạng này có nhiều cải tiến hơn so với định dạng mặc định.
Định dạng TCP được sử dụng khi tùy chọn tcplog để thiết lập trong tập tin
haproxy.cfg. Haproxy thường sẽ đợi kết nối từ khi bắt đầu cho đến khi kết thúc
rồi mới ghi lại vào trong tập tin nhật ký. Định dạng này cung cấp nhiều thông tin
hữu ích hơn như số lượng kết nối, kích thước hàng đợi… Đây là định dạng
thường được sử dụng khi Haproxy thực hiện cân bằng tải ở tầng 4 trong mô hình
OSI.


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG


-

Định dạng HTTP: Đây là định dạng nhiều cải tiến nhất khi Haproxy được sử
dụng để cân bằng tải ở tầng 7 trong mô hình OSI. Định dạng này được sử dụng
khi tùy chọn httplog được thiết lập trong tập tin haproxy.cfg. Định dạng này
cung cấp những thông tin như định dạng TCP và một số trường khác như trạng
thái trả về, thông tin header và cookies.

-

Định dạng HTTP CLF tương đương với định dạng HTTP, nhưng với các trường
được sắp xếp theo cùng thứ tự như định dạng CLF. Trong chế độ này, tất cả bộ
đếm giờ, cờ ... xuất hiện một ô cho mỗi trường sau khi kết thúc các trường phổ
biến, theo cùng thứ tự chúng xuất hiện ở định dạng HTTP tiêu chuẩn.

-

Tùy chỉnh định dạng log: Cho phép người quản trị tùy chỉnh định dạng log.

2.1.2 Các định dạng log
2.1.1.1 Định dạng mặc định
Định dạng này được sử dụng khi trong tập tin cấu hình haproxy.cfg không được
thiết lập tùy chọn nào. Thông tin kết nối sẽ được ghi xuống tập tin nhật ký ngay khi kết
nối thiết lập. Đây là định dạng duy nhất ghi lại IP đích và cổng đích của máy khách.
Một bản ghi log có định dạng mặc định
Feb

6


12:12:09

localhost

haproxy[14385]:

Connect

10.0.1.2:33312 to 10.0.3.31:8012 (www/HTTP)
Bảng 2.1. Các trường dữ liệu trong định dạng mặc định của log haproxy [10]
Các trường trong định dạng mặc định

Thông tin từ bản ghi

process_name '[' pid ']:'

haproxy[14385]:

'Connect from'

Connect from

source_ip ':' source_port

10.0.1.2:33312

'to'

To


destination_ip ':' destination_port

10.0.3.31:8012

'(' frontend_name '/' mode ')'

(www/HTTP)

Ý nghĩa các trường trong bản ghi sử dụng định dạng mặc định:

from


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

-

“process_name '[' pid ']”: ID của tiến trình.

-

“source_ip“: là địa chỉ IP của máy khách kết nối đến máy chủ haproxy

-

“source_port”: là cổng TCP của máy khách dùng để kết nối đến máy chủ.

-

“destination_ip”: là địa chỉ mà phía máy khách kết nối đến.


-

“destination_port”: là cổng TCP mà máy khách kết nối đến.

-

“frontend_name”: là tên của một quy trình xử lý dữ liệu nơi mà yêu cầu được
nhận và xử lý

-

“mode”: chế độ mà haproxy hoạt động, nếu thực hiện cân bằng tải ở lớp 4 trong
mô hình OSI thì giá trị này là TCP, nếu thực hiện cân bằng tải ở lớp 7 trong mô
hình OSI thì giá trị này là HTTP.

2.1.1.2 Định dạng TCP
Định dạng TCP được sử dụng khi tùy chọn tcplog được thiết lập và được khuyến
khích sử dụng trong trường hợp Haproxy thực hiện cân bằng tải ở lớp 4. Nó cung cấp
nhiều thông tin hữu ích để khắc phục khi có sự cố. Định dạng này bao gồm thông tin về
bộ tính giờ và số lượng byte của các kết nối. Các bản ghi thường được ghi lại khi phiên
kết nối kết thúc.
Một bản ghi sử dụng định dạng tcp
Feb

6

12:12:56

localhost


[06/Feb/2009:12:12:51.443]

fnt

haproxy[14387]:
bck/srv1

10.0.1.2:33313

0/0/5007

212

--

0/0/0/0/3 0/0

Ngoài các trường địa chỉ IP máy khách, cổng máy khách sử dụng để kết nối, ID tiến
trình… như định dạng mặc định. Định dạng TCP có một số trường khác so với định
dạng mặc định.


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

Bảng 2.2 Các trường trong định dạng TCP của log haproxy [10]
Các trường trong định dạng TCP

Thông tin từ bản ghi


process_name '[' pid ']:'

haproxy[14387]:

client_ip ':' client_port

10.0.1.2:33313

'[' accept_date ']'

[06/Feb/2009:12:12:51.443]

frontend_name

Fnt

backend_name '/' server_name

bck/srv1

Tw '/' Tc '/' Tt*

0/0/5007

bytes_read*

212

termination_state


--

actconn '/' feconn '/' beconn '/' srv_conn '/'
retries*
srv_queue '/' backend_queue

0/0/0/0/3
0/0

Ý nghĩa một số trường trong bản ghi sử dụng định dạng TCP
-

“client_ip”: là địa chỉ IP của máy khách khởi tạo kết nối TCP đến máy chủ
haproxy.

-

“client_port”: là cổng TCP mà máy khách sử dụng để khởi tạo kết nối đến máy
chủ.

-

“accept_date”: là ngày khi kết nối được nhận bởi haproxy.

-

“frontend_name”: là tên của một quy trình xử lý dữ liệu nơi mà yêu cầu được
nhận và xử lý.

-


“Tw”: là tổng thời gian tính bằng milisecond để chờ đợi ở trong các hàng đợi
khác nhau.

-

“Tc”: là tổng thời gian tính bằng milisecond để đợi một kết nối thiết lập đến
máy chủ.

-

“Tt”: là tổng thời gian tính bằng milisecond khi một kết nối được chấp nhận
cho đến khi bị đóng lại.

-

“byte_read”: là tổng số byte truyền từ máy chủ đến máy khách khi log được
ghi.


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

2.1.1.3 Định dạng HTTP
Định dạng HTTP là định dạng đầy đủ nhất và phù hợp nhất khi Haproxy đóng vai
trò như một thiết bị cân bằng tải ở lớp 7 trong mô hình OSI. Định dạng HTTP được bật
khi tùy chọn httplog được chỉ định. Nó cung cấp thông tin như định dạng TCP với các
tính năng bổ sung mà cụ thể là cho giao thức HTTP. Giống như định dạng TCP, việc
ghi log thường được thực hiện khi kết thúc phiên làm việc.
Hầu hết các trường trong định dạng HTTP đều giống với định dạng TCP, một số
trường có thể hơi khác tùy thuộc vào cấu hình.

Dưới đây là một định dạng HTTPlog
Feb

6

12:14:14

localhost

[06/Feb/2009:12:14:14.655]

haproxy[14389]:

http-in

static/srv1

10.0.1.2:33317
10/0/30/69/109

200 2750 - - ---- 1/1/1/1/0 0/0 {1wt.eu} {} "GET /index.html
HTTP/1.1"

2.1.1.4 Tùy chỉnh định dạng log
Tùy chỉnh định dạng log cho phép người quản trị tùy chỉnh định dạng của log ở chế
độ HTTP và TCP. Haproxy hiểu một số biến định dạng log, các biến bắt đầu bằng ký
tự %. Người quản trị có thể thay thế hoặc chỉ sử dụng một vài trường để định nghĩa
một bản ghi log của Haproxy.
Ví dụ hiện tại định dạng HTTP format sẽ được định nghĩa như sau
log-format "%ci:%cp [%tr] %ft %b/%s %TR/%Tw/%Tc/%Tr/%Ta %ST %B

%CC \
%CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs
%{+Q}r"


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

2.2. Hệ thống máy chủ web
2.2.1. Giới thiệu
Để quản lý một máy chủ web một cách hiệu quả, cần phải có những thông tin về
hoạt động và hiệu suất của máy chủ cũng như bất cứ vấn đề nào đang xảy ra trong hệ
thống. Máy chủ Web Apache HTTP cung cấp nhiều cơ chế khác nhau để ghi lại mọi
thứ xảy ra trên máy chủ từ yêu cầu ban đầu, qua quá trình ánh xạ URL, để quyết định
kết nối, bao gồm bất kỳ lỗi nào có thể xảy ra trong quá trình này.
Máy chủ web chứa tất cả các tập tin cần thiết để hiển thị trang web trên máy tính.
Tất cả các trang web riêng biệt kết hợp với nhau tạo thành một trang web hoàn chỉnh.
Những tập tin ảnh, biểu đồ và bất cứ đoạn script là một thành phần trong chức năng
của trang web. Người dùng gửi yêu cầu thông qua trình duyệt đến máy chủ web sử
dụng giao thức HTTP. Khi máy chủ web nhận được một yêu cầu HTTP, nó sẽ phản hồi
thông qua HTTP ví dụ như trả về một trang HTML chứa những thông tin mà phía trình
duyệt yêu cầu. Trình duyệt lần lượt chuyển đổi, hoặc định dạng các tập tin vào một
trang người dùng có thể xem được. Cũng giống như vậy, máy chủ có thể gửi các tập tin
tới nhiều máy tính khách cùng một lúc, cho phép nhiều khách hàng xem cùng một lúc
một trang. Tất cả hoạt động khi người dùng yêu cầu từ trình duyệt gửi đến máy chủ
web và trả về được máy chủ web ghi lại dưới dạng các tập tin log.
2.2.2 Các loại log của máy chủ web
Apache có nhiều tập tin log khác nhau nhằm ghi lại những hoạt động của máy chủ
web. Log của apache dưới dạng plain text. Điển hình đối với hệ thống web thì có 2 loại
log bên dưới:
-


Error Log

-

Access Log


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

3.2.2.1 Error Log
Error Log là một tập tin nhật ký quan trọng nhất. Tên của Error log và vị trí lưu trữ
được thiết lập trong thông số ErrorLog của tập tin httpd.conf.
Error Log là nơi mà httpd sẽ gửi những thông tin chuẩn đoán và ghi lại bất kỳ lỗi
nào gặp phải trong quá trình xử lý yêu cầu phía người dùng. Khi máy chủ web bị sự cố
thì tập tin Error Log là tập tin đầu tiên người quản trị phải kiểm tra vì tập tin này lưu
những thông tin chi tiết về lỗi đang diễn ra trên hệ thống và cách khắc phục sự cố.
Định dạng của tập tin Error Log không bị bó buộc, đươc xác định bởi thông số
ErrorLogFormat trong tập tin httpd.conf. Người quản trị có thể tùy chỉnh các giá trị
được ghi lại. Thông thường một bản ghi trong tập tin Error Log có định dạng sau:
ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"

Trong đó
-

%t là Thời gian xảy ra lỗi.

-

%l là Mức độ cảnh báo.


-

[pid %P] là ID của tiến trình hiện tại.

-

%F là tên tập tin nguồn và số dòng trong bản ghi truy xuất.

-

%E là trạng thái mã lỗi.

-

[client %a] là địa chỉ IP và cổng kết nối.

-

%M là nội dung cảnh báo.

Thông tin người quản trị cần quan tâm đầu tiên là mức độ cảnh báo. Mức độ cảnh
báo cho phép người quản trị xác định mức độ nghiệm trọng của cảnh báo dựa trên cơ
sở mỗi tiêu chuẩn. Mức độ cảnh báo có các cấp độ bên dưới theo thứ tự giảm dần.
-

Emerg: log ở cấp độ này mang tính khẩn cấp, hệ thống hiện không thể sử dụng
được.

-


Alert: cảnh báo các vấn đề cần được xử lý ngay.


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

-

Crit: các vấn đề quan trong nhưng không nhất thiết phải xử lý ngay lập tức, để
theo dõi thêm.

-

Error: ghi lại thông tin lỗi như đăng nhập hoặc cấu hình sai, mức độ thấp hơn
crit.

-

Warm: ở mức độ cảnh báo, không phải lỗi.

-

Notice: để thông báo cái gì đó.

-

Info: ghi thông tin hệ thống, không có gì cả.

-


Debug: ghi lại tất cả mọi thứ, dùng để dò lỗi.

Trong tất cả mức độ ưu tiên, debug có mức độ cao nhất. Debug bao gồm tất cả các
thông tin của các cấp độ khác. Dưới đây là một đoạn Error Log được sinh ra bởi dịch
vụ web apache
[Fri Sep 09 10:42:29.902022 2011] [core:error] [pid 35708:tid
4328636416]

[client

72.15.99.187]

File

does

not

exist:

/usr/local/apache2/htdocs/favicon.ico

Trong đó [Fri Sep 09 10:42:29.902022 2011] là thời gian của bản ghi. Tiếp theo
[core:error] là module tạo ra bản ghi (trong trường hợp này là core) và mức độ nghiêm
trong của lỗi này là error. ID tiến trình của tin nhắn này là 35708 và được truy cập từ
máy khách có địa chỉ 72.15.199.187. Nguyên nhân gây ra lỗi trong trường hợp này là
do tập tin /usr/local/apache2/htdocs/favicon.ico không tồn tại. Từ những thông tin thu
được, người quản trị có thể dễ dàng đưa ra phương án xử lý để khắc phục lỗi này.
3.2.2.1 Access Log
Tập tin access log ghi lại tất cả những yêu cầu được xử lý của máy chủ. Vị trí và

nội dung của tập tin access log được xác định bởi trường CustomLog trong tập tin cấu
hình. Mặc định tập tin access log được lưu tại đường dẫn /var/log/httpd/access_log. Tất
nhiên lưu trữ các thông tin trong access log chỉ là bước đầu tiên trong quản lý log.
Chúng ta cần phải phân tích những thông tin này để đưa ra các số liệu thống kê hữu
ích.


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

Cấu hình định dạng của tập tin access log thường như sau
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common

Cấu hình trên sẽ ghi lại các bản ghi trong một định dạng gọi là CLF. Định dạng chuẩn
này có thể được tạo ra bởi nhiều máy chủ web và được đọc bởi nhiều chương trình
phân lích log. Các bản ghi trong tập tin log được tạo sẽ giống như sau.
123.19.163.34

-

frank

[10/Oct/2000:13:55:36

-0700]

"GET

/apache_pb.gif HTTP/1.0" 200 2326


Trong đó
-

%h (123.19.163.34): Xác định ai đã truy cập vào trang web này. Việc xác định
người dùng chủ yếu là sử dụng địa chỉ IP được gán bởi nhà cung cấp dịch vụ
Internet ISP. Đây có thể là một địa chỉ tạm thời được gán cho người dùng. Vì
địa chỉ IP này được gán tạm thời nên có thể bị thay đổi trong những lần truy cập
khác nhau. Trong một số trang web, người dùng có thể được xác định bằng cách
yêu cầu người dùng cung cấp thông tin rồi sử dụng tên người dùng và mật khẩu
để truy cập trang web. Trong loại truy cập này, thông tin để xác định người
dùng là duy nhất.

-

%l (-) :Dấu gạch nối trong đầu ra cho thấy không có thông tin yêu cầu.

-

%u (frank ): đây là thông tin userid của người gửi yêu cầu được xác định thông
qua chứng thực HTTP. Nếu trạng thái mã là 401 thì giá trị này không nên tin
tưởng bởi vì người dùng đã không chứng thực. Nếu như trang web không có
mật khẩu bảo vệ thì giá trị này sẽ là “– “.

-

%t ([10/Oct/2000:13:55:36 -0700]): Thời gian mà yêu cầu được nhận.

-

\"%r\"("GET /apache_pb.gif HTTP/1.0"): Nội dung yêu cầu từ máy khách. Nội

dung này chứa rất nhiều thông tin rất hữu ích. Thứ nhất phương thức được


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

khách hàng sử dụng là GET. Thứ 2, khách hàng yêu cầu tài nguyên
/apache_pb.gif và cuối cùng khách hàng sử dụng giao thức HTTP/1.0.
-

%>s (200 ): Đây là mã trạng thái mà máy chủ trả về cho phía máy khách. Thông
tin này rất có giá trị bởi vì nó cho thấy yêu cầu đã được phản hồi thành công.

-

%b (2325): Phần cuối cùng cho biết kích thước của đối tượng trả về cho máy
khách, không bao gồm thông tin header. Nếu không có nội dung được trả lại cho
máy khách thì giá trị này sẽ là “-“.

Trên đây là những nội dung có trong tập tin log của máy chủ web. Chi tiết tập tin
log này được sử dụng trong quá trình điều tra khi có sự cố, cũng như cung cấp các
thông tin hữu ích cho doanh nghiệp.
2.2.3 Mã trạng thái của HTTP
Khi máy chủ nhận được một yêu cầu từ phía máy khách, máy chủ sẽ gửi tín hiệu
phản hồi HTTP trong đó bao gồm mã trạng thái trả về của HTTP. Mã trạng thái là một
số nguyên 3 ký tự, trong đó ký tự đầu tiên của mã trạng thái định nghĩa loại hồi đáp từ
phía máy chủ và hai ký tự sau không có bất cứ vai trò phân loại nào. Ký từ đầu tiên có
thể là 1 trong 5 ký tự bên dưới:
-

1xx: Khi nhận được mã như vậy nghĩa là yêu cầu đã được máy chủ tiếp nhận và

quá trình xử lý yêu cầu đang được tiếp tục.

-

2xx: Khi nhận được mã như vậy tức là yêu cầu đã được máy chủ tiếp nhận và
xử lý thành công.

-

3xx: Mã trạng thái này cho biết client cần có thêm hành động để hoàn thành yêu
cầu.

-

4xx: Mã trạng thái có nghĩa là yêu cầu có cú pháp không chính xác hoặc không
được thực hiện

-

5xx: Mã trạng thái này có nghĩa là máy chủ thất bại với việc thực hiện một yêu
cầu nhìn như có vẻ khả thi.


Chương 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

Vì thông tin mã trạng thái được lưu lại trong log khi máy chủ xử lý một yêu cầu từ
phía khách hàng nên nắm rõ ý nghĩa của các mã trạng thái giúp người dùng biết được
các yêu cầu gửi từ phía máy khách được xử lý thành công hay thất bại.
2.3 Kết luận
Trong chương này, chúng ta đã trình bày vấn đề liên quan đến các tập tin log được sinh

ra của các dịch vụ apache, haproxy trong hệ thống mạng. Giải thích về ý nghĩa các
trường trong định dạng tập tin log của từng dịch vụ. Chúng ta cũng tham khảo một vài
bản ghi log mẫu của dịch vụ web và dịch vụ cân bằng tải để biết được ý nghĩa của từng
thông số trước khi tiến hành xây dựng một hệ thống phân tích log Elastic Stack trích
xuất dữ liệu từ những tập tin log trong hệ thống mạng.


×