Mở đầu cho vấn đề mà luận văn đang đề cập tới. CHƯƠNG 2: HỆ THỐNG TÍCH HỢP DỮ LIỆU LỚN VÀ KHÔNG ĐỒNG NHẤT LÀ GÌ? 2.1 User Case Tầm quan trọng của việc phân tích và quản lý dữ liệu từ các nguồn khác nhau để chuyển về server tập trung là rất quan trọng. Chúng ta hiểu rằng cần phải tìm ra một giải pháp mà sẽ phải giải quyết được các trường hợp sau đây: Tích hợp tất cả các dữ liệu định dạng khác nhau từ tất cả các server và lưu trữ ở một nơi duy nhất. Cung cấp chức năng tìm kiếm nhanh chóng để phát hiện ra các lỗi và tìm ra các cảnh báo chứa trong dữ liệu được chuyển về ở một thời gian cụ thể.
Phải dễ dàng phân tích các file dữ liệu lớn từ nhiều nguồn khác nhau. Sẵn sàng chia sẻ các dữ liệu ở server trung tâm mỗi khi cần cho đội phát triển mà không cần cung cấp cho họ quyền truy cập trực tiếp vào server chính. TIEU LUAN MOI download : skknchat@gmail.com 14 Trích lọc ra các dữ liệu liên quan trực tiếp tới vấn đề đang gặp phải. Thống kê các dữ liệu lỗi, các giao dịch bất thường, đưa các vấn đề chi tiết từ yêu cầu của người quản trị.
Phải có thông báo từ hệ thống quản lý trong trường hợp có các lỗi tương tự xảy ra.2 Thực hiện quản lý tích hợp dữ liệu tập trung Việc xử lý tích hợp dữ liệu từ đa dạng các nguồn, định dạng khác nhau có hai vấn đề cơ bản: Cấu hình server tập trung sẽ thu thập, xử lý, sàng lọc và hiển thị dữ liệu sau khi đã được tích hợp, trích lọc. Cấu hình các máy trạm để gửi dữ liệu về tới server tập trung, lựa chọn các đích lưu trữ dữ liệu tạm thời và bảo mật trong khi vận chuyển. Việc xây dựng một hệ thống quản lý tích hợp dữ liệu tập trung, phân tích và hiển thị giúp tổ chức có cái nhìn cụ thể và chi tiết về từng sản phẩm, dịch vụ mà các hệ thống đang hoạt động. Những vấn đề về bảo mật, lỗi kỹ thuật hay các vấn đề về lỗi vận hành hoặc khi có sự cố bất ngờ xảy ra.
Các giải pháp quản lý tích hợp dữ liệu tập trung phải sẵn sàng cung cấp thông tin chi tiết về vấn đề đang gặp phải, và có quan điểm rõ ràng hơn về các hướng giải quyết. Ngoài ra cần đảm bảo tính toàn vẹn của dữ liệu ở server trung tâm, phục vụ cho việc điều tra phân tích hệ thống. Việc tập trung một khối lượng dữ liệu lớn cho phép có thể khai thác và đưa ra dự đoán, quyết định.1 Vòng đời xử lý của hệ thống tích hợp và không đồng nhất [1][11] Có thể thấy rằng, ngày này có rất nhiều sản phẩm về tích hợp dữ liệu dữ liệu tập trung sẵn sàng đáp ứng cho các nhu cầu quản lý và cũng có rất nhiều loại hình với nhiều kiểu cấu trúc xử lý khác nhau. Nhưng về cơ bản, chúng có cùng bản chất khi đều là tích hợp và xử lý dữ liệu tập trung.
Cho nên, các kiến trúc đều có chung một vòng đời xử lý như sau: TIEU LUAN MOI download : skknchat@gmail.1: Vòng đời xử của hệ thống tích hợp và không đồng nhất Bước 1: Ứng dụng sinh ra các dữ liệu Một sự kiện được sinh ra bởi một ứng dụng. Vòng đời bắt đầu với một dữ liệu được ghi và lưu trữ trên một server. Có thể có rất nhiều loại dữ liệu khác nhau, nhưng chủ yếu là thuộc phạm vi các loại dữ liệu đã đề cập ở bên trên. Bước 2: Bộ thu thập dữ liệu (shipper) Nội dung dữ liệu được thu thập bởi một công cụ được xây dựng gọi là các shipper.
Các shipper thực hiện đẩy dữ liệu từ các máy trạm và gửi đến các hàng đợi hoặc đẩy dữ liệu trực tiếp về trung tâm. Thành phần shipper sẽ thực hiện đọc các tập tin, các nguồn dữ liệu và lấy các dữ liệu mới sinh ra, để gửi tới thành phần hàng đợi hoặc đẩy trực tiếp vào bộ phân giải dữ liệu (parser). Có điều quan trọng là các shipper phải được thiết kế nhẹ, hiệu quả, chiếm ít tài nguyên và có thể chạy song song với các ứng dụng máy chủ mà không gây ra bất kỳ vấn đề hiệu suất nào. Ví dụ một vài thành phần shipper như: Beaver, Logstash-forwarder, Log-courier, Splunk universal forwarder.
Bước 3: Hàng đợi lưu trữ các dữ liệu tạm thời Khi chúng ta bắt đầu thực hiện thu thập các dữ liệu từ nhiều nguồn và nhiều server, có thể tạo ra một lưu lượng dữ liệu khổng lồ mà ở thành phần parser xử lý phân tích, trích lọc và định dạng chuẩn cấu trúc chung. không thể theo kịp, gây ra mất dữ liệu tại đây. Trong trường hợp đó, chúng ta sẽ phải đưa ra một thành phần trung gian đóng vai trò là một hàng đợi. Nó lưu trữ dữ liệu tạm thời và cho phép việc xử lý dữ liệu ở bộ phân giải dữ liệu (parser) thực hiện tuần tự theo tốc độ riêng của nó.
Việc đọc và xóa liên tục ở hàng đợi mà parser xử lý là tốn nhiều thời gian, dẫn TIEU LUAN MOI download : skknchat@gmail.com 16 tới hệ thống có độ trễ nhất định. Ví dụ các Message Queues: ZeroMQ, RabbitMQ, Redis. Bước 4: Bộ phân giải dữ liệu (Parser) Khi nhận dữ liệu từ các thành phần khác chuyển tới, chúng ta đưa ra một thành phần xử lý dữ liệu chính của luồng dữ liệu được gọi là bộ phân giải dữ liệu parser. Khi thành phần parser nhận dữ liệu từ hàng đợi hoặc trực tiếp từ shipper chuyển tới, nó sẽ thực hiện các nhiệm vụ phân tích như: Trích lọc những thông tin có ích, đọc từng dòng dữ liệu và định dạng lại về dữ liệu có cấu trúc, chuyển về định dạng dữ liệu json, tags các thông tin quan trọng.
Và cuối cùng, parser sẽ thực hiện đẩy tất cả dữ liệu đã xử lý vào trong DB. Một số parser như: Logstash, Heka, Fluentd, Splunk Indexer. Bước 5: Client – Giao diện Cung cấp chức năng xem nội dung thông tin dữ liệu sau khi đã được tích hợp và xử lý, lập biểu đồ thống kê, truy vấn và tìm kiếm thông tin. Cũng có thể xử lý bởi các thuật toán bởi Data Mining nhằm đưa ra một vài quyết định hay kết luận có ý nghĩa từ dữ liệu đã thu thập được.
Điển hình như Kibana, Graphite, Splunk Web-UI, Grafana. Bước 6: Xóa dữ liệu cũ ra khỏi Database Tất nhiên chúng ta có thể giữ tất cả dữ liệu ở trong DB mãi mãi. Nhưng trong nhiều trường hợp, việc lưu trữ cộng với giá thành của phần cứng quá cao mà các dữ liệu cũ ngày càng trở lên không có giá trị gì nữa. Vì vậy, để chỉ giữ lại những dữ liệu cần thiết, chúng ta cần thêm một xử lý phân loại dữ liệu đẩy vào các thể loại category khác nhau theo mức độ quan trọng của chúng trước khi lưu trữ vào trong DB.
Mỗi category sẽ phải xác định số lượng, thời gian mà dữ liệu được lưu trữ hoặc cũng có thể lưu trữ tối đa kích cỡ category ở trong DB. Theo lập lịch ở cấu hình mà DB sẽ tạo ra một xử lý chạy ngầm để xóa các dữ liệu cũ, giữ cho DB nhẹ nhàng, sạch sẽ và chỉ lưu trữ các dữ liệu cần thiết.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 TIEU LUAN MOI download : skknchat@gmail. 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ử TIEU LUAN MOI download : skknchat@gmail.com 18 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.