SIEM/Log Management Kiến trúc và dashboard OpenSearch

1. Giới thiệu về Opensearch và Apache Lucene​

1.1. OpenSearch​

1.1.1 Định nghĩa​

OpenSearch là một công cụ tìm kiếm và phân tích phân tán, hỗ trợ nhiều trường hợp sử dụng khác nhau, từ việc triển khai tìm kiếm trên trang web cho đến phân tích dữ liệu bảo mật nhằm phát hiện các mối đe dọa.
Thuật ngữ "phân tán" ở đây cho biết công cụ có thể vận hành trên nhiều máy tính khác nhau, khả năng tìm kiếm và phân tích cho phép người dùng có thể thực hiện

1.1.2. Nguồn gốc​

Bắt đầu là một bản fork từ Elastic sau khi họ thay giấy phép nguồn mở cho Kibana và ElasticSearch thành Server Side Public License (SSPL) and Elastic License, với mục đích là bảo tồn đặc điểm nguồn mở của công cụ. Cụ thể OpenSearch được phát triển từ Elasticsearch 7.10.2 và OpenSearch Dashboards được phát triển từ Kibana 7.10.2.

1.2. Apache Lucene​

1.2.1. Định nghĩa​

Apache Lucene, một thư viện tìm kiếm mã nguồn mở được viết bằng Java, một công nghệ phù hợp với hầu hết mọi ứng dụng đòi hỏi tính năng tìm kiếm có cấu trúc, tìm kiếm toàn văn, phân loại theo khía cạnh tìm kiếm láng giềng gần nhất trên các vectơ nhiều chiều, cũng như sửa lỗi chính tả hoặc gợi ý truy vấn.

1.2.2. Điểm mạnh của thuật toán tìm kiếm ​

  • Tìm kiếm
  • Nhiều loại truy vấn mạnh mẽ: truy vấn cụm từ, truy vấn ký tự đại diện, truy vấn lân cận, truy vấn phạm,...
  • Tìm kiếm theo trường (ví dụ: tiêu đề, tác giả, nội dung)
  • Tìm kiếm lân cận nhất cho các vectơ đa chiều
  • Sắp xếp theo bất kỳ trường nào
  • Tìm kiếm đa chỉ mục với kết quả được hợp nhất
  • Cho phép cập nhật và tìm kiếm đồng thời
  • Các công cụ gợi ý nhanh, tiết kiệm bộ nhớ và chịu lỗi chính tả

2. Kiến trúc Opensearch​

2.1. Document và Index​

Document là đơn vị chứa thông tin được lưu trữ văn bản hoặc dữ liệu có cấu trúc JSON, bao gồm các trường và giá trị tương ứng.
Index là tập hợp các document

2.2. Cluster và Node​

2.2.1. Cluster​

Cluster là một tập hợp một hoặc nhiều node khác nhau cùng hoạt động với nhau để lưu trữ, tìm kiếm và phân tích dữ liệu.

2.2.2. Node​

Do OpenSearch có thể phân tán nên những chức năng của công cụ sẽ chia ra từng node khác nhau.

2.2.2.1. Node Quản Lí Cluster​

Quản lí hoạt động tổng thể của một cluster, bao gồm các chức năng
  • Tạo và xóa các index
  • Theo dõi các node tham gia và tách khỏi cluster
  • Kiểm tra trạng thái của các node
  • Cấp shard cho các node
Luôn chỉ có duy nhất một node cho một cluster, thường hoạt động chung với các Node Đạt Chuẩn Quản Lí Cluster để thay thế khi node chính không hoạt động.

2.2.2.2. Node Dữ Liệu​

Lưu và tìm kiếm dữ liệu cùng với chức năng:
  • Thực hiện chỉ mục, tìm kiếm, tổng hợp trên các shard nội bộ
  • Cần dung lượng bộ nhớ cao hơn các node khác

2.2.2.3. Ingest Node​

Có thể gọi là Node tiền xử lí, xử lí dữ liệu trước khi trước khi lưu trữ vào cluster, chạy các pipeline được chạy để biến đổi, làm giàu và chuẩn hóa dữ liệu. Dùng để giảm bớt workload và tránh hiện tượng làm chậm quá trình tìm kiếm cho Node Dữ Liệu.

2.2.2.4. Node Phối Hợp​

Chuyển tiếp yêu cầu từ máy khách đến các shard trên các Node Dữ Liệu, sau đó thu thập và tổng hợp thành một kết quả cuối cùng gửi về cho máy khách.

2.2.2.5. Node Tìm Kiếm​

Với mục tiêu duy nhất là thưc hiện tìm kiếm các shard replica, giúp giảm tải cho Node Dữ Liệu.

2.3. Shard​

Opensearch chia các Index thành các shard, do vậy các shard sẽ chứa một tập hợp con của tất cả các Document trong Index. Những shard này sẽ được chia đồng đều qua các node trong một cluster và do mỗi shard là một instance của Lucene nên phải tốn tài nguyên CPU, bộ nhớ.

2.3.1. Primary Shard​

Những dữ liệu nguyên bản ban đầu sẽ được tách và lưu vào các shard này.

2.3.2. Replica Shard​

Replica shard là bản sao của một Primary shard, Opensearch mặc định luôn tạo một Replica cho mỗi Primary và thường đặt ở các node khác với node chứa Primary shard mà nó sao chép từ.
Phương pháp này nhằm giải quyết trường hợp một node ngừng hoạt động và tăng tốc độ cluster xử lí các truy vấn.

2.4. Phương thức truy vấn​

2.4.1. Inverted index​

OpenSearch Index sử dụng một cấu trúc dữ liệu gọi là chỉ mục đảo ngược. Index đảo ngược ánh xạ các từ tới những tài liệu có chứa chúng.
Phương pháp nâng cao hiệu quả của chức năng tìm kiếm về mặt tốc độ và tài nguyên của mỗi lần tìm kiếm nhưng sẽ tốn kém hơn khi các document được thêm, xóa, cập nhật dữ liệu.

2.4.2. Độ liên quan​

Mỗi lần tìm kiếm, OpenSearch sẽ so khớp các từ trong truy vấn với các từ trong tài liệu, mỗi tài liệu được gán một điểm số độ liên quan, cho biết mức độ phù hợp của tài liệu đó với truy vấn.
Các từ riêng lẻ trong một truy vấn tìm kiếm được gọi là term tìm kiếm, mỗi term này được chấm điểm dựa trên các quy tắc sau:
  • Một term tìm kiếm có tuần suất xuất hiện trong một document càng cao thì sẽ có điểm số càng cao, gọi là thành phần term frequency trong điểm số.
  • Ngược lại, một term tìm kiếm có tuần suất xuất hiện trong càng nhiều document thì sẽ có điểm số càng thấp, gọi là thành phần inverse document frequency trong điểm số.
  • Kết quả khớp với một document dài thường có điểm số thấp hơn so với kết quả khớp trong một tài liệu ngắn hơn. Một document chứa toàn bộ từ điển sẽ khớp với bất kỳ từ nào nhưng lại không thực sự liên quan chặt chẽ đến một từ cụ thể nào. Điều này gọi là thành phần length normalization trong điểm số.

3. Kiến trúc Opensearch Dashbroad​

Là thành phần web UI cho Opensearch, cho phép người dùng thực hiện đa số task qua OpenSearch API, có các tính năng bao gồm:
  • Tạo index và cấp dữ liệu cho chúng.
  • Kết nối các nguồn dữ liệu đến OpenSearch
  • Sử dụng các công cụ lọc hoặc một trong bốn ngôn ngữ truy vấn để theo dõi dữ liệu.
  • Tạo và lưu trữ các phương thức trực quan hóa dữ liệu và dashbroad.
TÀI LIỆU THAM KHẢO
https://docs.opensearch.org/latest/getting-started/intro/
https://lucene.apache.org/core
https://sdtimes.com/softwaredev/ama...open-source-fork-of-elasticsearch-and-kibana/
https://docs.opensearch.org/latest/dashboards/getting-started/index/
 
Back
Top