Tải bản đầy đủ - 0 (trang)
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ải bản đầy đủ - 0trang

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 q 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 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 q trình xử lý 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 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 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 để hồn thành u

cầu.



-



4xx: Mã trạng thái có nghĩa là 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 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.



Chương 3. Hệ thống phân tích Log Elastic Stack



CHƯƠNG 3. HỆ THỐNG PHÂN TÍCH LOG ELASTIC STACK

Việc phân tích log từ nhiều nguồn khác nhau tập trung về hệ một hệ thống quản lý

chung là rất quan trọng. Một hệ thống phân tích cần phải đáp ứng các yêu cầu bên

dưới:

-



Cung cấp chức năng tìm kiếm nhanh chóng để phát hiện ra lỗi.



-



Hệ thống có khả năng mở rộng theo chiều ngang, đáp ứng được khi có sự mở

rộng dữ liệu vì kích thước log tăng lên từng ngày.



-



Có thể phân tích log từ các nguồn khác nhau, thực hiện xử lý dữ liệu trước khi

lưu trữ.



-



Thống kê các tài nguyên hệ thống đang sử dụng như cpu, ram, network. Thống

kê các dữ liệu lỗi, các truy cập bất thường.



-



Việc lưu trữ log tập trung nhưng không làm ảnh hưởng đến dữ liệu log ban đầu

của dịch vụ.



Elastic stack là một giải pháp phân tích log trên mã nguồn mở giải quyết được các

vấn đề đó. Elastic stack được tạo lên từ 3 thành phần mã nguồn mở Elasticsearch,

Logstash và Kibana có chức năng thu thập, phân tích, lưu trữ tìm kiếm và hiển thị dữ

liệu. Ngoài ra Beats là thành phần quan trọng đi kèm với Elastic stack. Beats được cài

đặt trên Client với nhiệm vụ gửi dữ liệu về Logstash hoặc ElasticSearch.

3.1 Giới thiệu về ElasticSearch

ElasticSearch là một cơng cụ tìm kiếm cấp doanh nghiệp. Mục tiêu của nó là tạo

thành một cơng cụ, nền tảng kỹ thuật tìm kiếm và phân tích thời gian thực, cũng như

cách để nó có thể áp dụng hay triển khai một cách dễ dàng vào các nguồn dữ liệu khác

nhau.

Nguồn dữ liệu nói trên có thể là các cơ sở dữ liệu nổi tiếng như MS SQL, MySQL,

PostgreSQL... cũng có thể là văn bản, thư điện tử...

T r a n g 25



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

CHƯƠNG 2. LOG CỦA DỊCH VỤ TRONG HỆ THỐNG

Tải bản đầy đủ ngay(0 tr)

×