2.2 Thực hiện quản lý tích hợp dữ liệu tập trung
2.2.2 Chi tiết bộ thu thập dữ liệu Shipper
Với các nguồn dữ liệu chúng ta muốn nhanh chóng thu thập, vận chuyển nó tới một server tập trung, trong thời gian thực. Chúng ta sẽ phải sử dụng các thành phần
shipper. Nó là một ứng dụng nhẹ được thực hiện để thu thập các dữ liệu sinh ra từ nhiều nguồn khác nhau và gửi đến một hoặc nhiều đích đầu ra.
Ứng dụng chạy nền shipper: Một shipper tốt là một thành phần ẩn, sử dụng CPU, bộ nhớ, các tài nguyên I\O ít nhất có thể và không bao giờ gây xung đột với các ứng dụng đang chạy trên server. Trong nhiều trường hợp, có thể một shipper đọc rất nhiều file ở cùng một thời điểm trên cùng một server mà các ứng dụng đang chạy đó đang cố gắng ghi thêm dữ liệu mới vào các file hay các nguồn đang bận xử lý trước đó. Khi thực hiện đọc các file, shipper không được khóa file để cho việc ghi thêm dữ liệu không bị xung đột. Nếu chúng ta cảm thấy shipper ảnh hưởng tới các ứng dụng đang chạy, thì nên cân nhắc sử dụng một shipper khác hoặc tìm một giải pháp khác cho việc gửi dữ liệu tới server tập trung.
Gửi dữ liệu an toàn: Thành phần shipper sẽ gửi các dữ liệu tới một hoặc nhiều đích và để thực hiện điều này, nó cần truy cập được vào network ở các đích đến đó. Để bảo vệ các ứng dụng và tầng mạng network, thì chúng ta nên chắc chắn rằng chỉ mở các cổng cần thiết cho việc kết nối. Luôn luôn sử dụng một firewall để bảo vệ cho các hệ thống.
Trong một vài trường hợp, dữ liệu chứa các thông tin nhạy cảm mà chúng ta sẽ có ý định mã hóa dữ liệu này trước khi gửi đi. Tránh trường hợp xấu nhất là hệ thống có thể bị tấn công và bị lộ các thông tin đó gây ra thiệt hại lớn. Hầu hết các shipper của một vài ứng dụng quản lý dữ liệu log hiện như ELK đều hỗ trợ mã hóa SSL. Vì thế chúng ta luôn phải sử dụng khi gửi dữ liệu qua mạng, trừ khi có một vài trường hợp với lý do chính đáng.
Hệ thống quản lý tích hợp dữ liệu sử dụng một cổng duy nhất để truyền tải dữ liệu giữa shipper và parser, các dữ liệu có thể được mã hóa trước khi gửi để đảm bảo vấn đề bảo mật thông tin.
Vậy sự khác biệt giữa một shipper và một parser là gì? Cả hai thành phần này có chức năng tương tự là đều thực hiện thu thập dữ liệu từ các nguồn và gửi dữ liệu tới các đích đến. Trong một vài trường hợp các parser được sử dụng như là các shipper, nhưng có một điều quan trọng khác nhau giữa chúng: Parser luôn được sử
dụng để thực hiện xử lý trích lọc, quy về dữ liệu có cấu trúc, tags các thông tin từ các dữ liệu thu thập được và việc xử lý này tốn rất nhiều tài nguyên CPU. Chạy các parser cùng với các ứng dụng trên cùng một server sẽ gây ra các việc xử lý quá tải không cần thiết. Trong một vài trường hợp cụ thể mà chúng ta chủ định thực hiện triển khai chúng trên cùng một server, điều cần thiết là phải ước lượng và kiểm soát được rằng không ảnh hưởng tới hiệu năng của các ứng dụng hiện tại.