2.2 Thực hiện quản lý tích hợp dữ liệu tập trung
2.2.4 Chi tiết về bộ phân giải dữ liệu Parser
Parser đôi khi cũng được gọi là Indexer (tương tự Logstash indexer). Là thành phần tâm điểm cho vòng đời xử lý dữ liệu. Chịu trách nhiệm phân tách từng giá trị có ý nghĩa ở trên mỗi bản ghi dữ liệu, trích lọc và làm cho các dữ liệu trở lên có cấu trúc.
Thông thường, nếu số lượng dữ liệu là vừa phải, chúng ta sẽ gửi tất cả tới một thành phần parser duy nhất để thực hiện phân tích nội dung của từng bản ghi dữ liệu và xử lý nó. Quá trình này sẽ tiêu tốn rất nhiều tài nguyên CPU như đã nói ở trên và bởi vì lý do này, thành phần parser nên được cài đặt và cấu hình ở một server riêng biệt mà không có các thành phần khác. Nếu chúng ta cảm thấy rằng server cài đặt thành phần parser đủ mạnh và các dữ liệu đầu vào từ thành phần shippser là không lớn. Chúng ta có thể bỏ qua thành phần hàng đợi để giảm thiểu thời gian tiêu tốn ở các bước trung gian.
Sau khi parser kết thúc việc xử lý dữ liệu, nó sẽ chuyển sang cho bộ lưu trữ. Để thực hiện quá trình này hiệu quả, nên triển khai cài đặt database và server parser trên cùng một mạng để đạt tốc độ tối đa việc trao đổi dữ liệu mà không xảy ra vấn đề mất mát dữ liệu.
Vậy chính xác thành phần parser làm những gì? Ở đây, chúng ta sẽ sử dụng hai dòng dữ liệu log bên dưới để có thể hiểu được cách thức mà parser làm việc.
3/12/2015 1:04:04 PM [18] From: (192.167.26.1) Fac:16 Sev:6 Msg >>> Mar 12 13:03:58 pf: 154.45.216.159.1043 > 117.6.95.159.49751: UDP, length 94
3/12/2015 1:04:04 PM [17] From: (192.167.26.1) Fac:16 Sev:6 Msg >>> Mar 12 13:03:58 pf: 00:00:00.004827 rule 5/0(match): block in on pppoe0: (tos 0x0, ttl 46, id 41412, offset 0, flags [DF], proto UDP (17), length 122)
Parser thực hiện kéo các dữ liệu log từ hàng đợi và chạy luồng xử lý phân tích sử dụng một bộ lọc filter được khai báo trước trong cấu hình. Cuối cùng parser sẽ trích lọc và định dạng lại các thông tin trong dữ liệu log thành các trường dưới dạng key-value: Dòng đầu tiên: @Datetime: 3/12/2015 1:04:04 PM @Thread : 18 @host : 192.167.26.1 @facility: 16 @severity: 6 @datetransfer: Mar 12 13:03:58
@message: pf: 154.45.216.159.1043 > 117.6.95.159.49751: UDP, length 94
Dòng thứ hai: @Datetime: 3/12/2015 1:04:04 PM @Thread : 17 @host : 192.167.26.1 @facility: 16 @severity: 6 @datetransfer: Mar 12 13:03:58
@message: pf: 00:00:00.004827 rule 5/0(match): block in on pppoe0: (tos 0x0, ttl 46, id 41412, offset 0, flags [DF], proto UDP (17), length 122)
Khi việc xử lý này kết thúc, các trường dữ liệu đã chuyển về cùng một kiểu có cấu trúc và bây giờ parser sẽ bắt đầu ghi dữ liệu vào trong database.