Chào các bạn,
HIện nay, trong bối cảnh hạ tầng mạng và các dịch vụ của các công ty, nhu cầu truy xuất và quản lý thông tin ngày càng cần thiết và cần được mở rộng, số lương log và sự kiện, các cuộc tấn công được sinh ra từ server, firewall, và từ application rất khổng lồ, vài tỷ log là chuyện bình thường. Việc chỉ lưu trữ log một cách thụ động và lúc cần thiết các kỹ sư IT muốn tìm kiếm thông tin rất khó khăn, không còn đáp ứng đủ nhu cầu vận hành và bảo mật của hệ thống. Vì vậy chúng ta cần một hệ thống có khả năng lưu trữ tốc độ cao, phân tích trực quan, lưu trữ và lọc theo filter trực quan và cảnh báo tấn công một cách chủ động.
Vì vậy, OpenSearch là một hệ sinh thái rất thích hợp cho vấn đề hiện tại, bao gồm kiến trúc lõi (Cluster), giao diện phân tích (Dashboards) và đặc biệt là chúng ta có thể biên nó thành một hệ thống giám sát an ninh (SIEM) thông qua plugin Security Analytics.
OpenSearch là gì?
OpenSearch là một công cụ tìm kiếm và phân tích phân tán, hướng tới cộng đồng được cấp phép của Âpche 2.0, 100% nguồn mở được sử dụng cho hàng loạt các trường hợp sử dụng như giám sát ứng dụng hay web server theo thời gian thực, phân tích bản ghi và tìm kiếm trang web. OpenSeaerch cung cấp một hệ thống có quy mô linh hoạt để mang tới khả năng truy cập và phản hồi nhanh khối lượng lớn dữ liệu với công cụ trực quan hóa được tích hợp sẵn, OpenSearch DashBoards, giúp người dùng dễ dàng khám phá dữ liệu của họ. OpenSearch được hỗ trợ bởi thư viện tìm kiếm Apache Lucene và nó hỗ trợ hàng loạt các tính năng tìm kiếm và phân tích, chẳng hạn như tìm kiếm lân cận gần nhất (KNN), SQL, phát hiện bất thường, thư viện Machine Learning Commons, phân tích dấu vết, tìm kiếm toàn văn bản, v.v.
Kiến trúc OpenSearch Clusster: Nền tảng Lưu trữ & Phân tích Siêu tốc
OpenSearch đóng vai trò là một "bộ não"/"thùng chứa" lưu trữ backend. Thay vì dùng các CSDL truyền thống để lưu trữ thông tin (MySQL), OpenSearch sử dụng kiến trúc phân tán (Distributed) kết hợp cấu trúc Inverted Index để tìm kiếm toàn văn bản (full-text search) trong hàng tỷ log chỉ mất vài mili giây.
1. Cấu trúc dữ liệu logic được chia thành 2 thành phần cốt lõi:
1.1. Cấu trúc Dữ liệu Logic
- Document (Tài liệu): Là đơn vị nhỏ nhất trong mô hình này, định dạng JSON. Vd: Một dòng log ghi nhận lại hành vi đăng nhập SSH thất bại.
- Index (Chỉ mục): Tương đương với "Database". Đây là nơi góm các nhóm các Document lại thành một nhóm có cùng tính chất. Vd: firewall-logs-2026.02 là một index chứa toàn bộ log tường lửa của tháng 2. 2026.
- Primary Shard (Màn hình chính): Để xử lý dữ liệu lớn, một index được băm nhỏ thành nhiều Primary Shard. Giúp hệ thống vượn qua giới hạn dung lượng của ổ cứng.
- Replica Shard (Mảnh bản sao): Hình dung giống như một bản sao copy của Primary Shard. Nhiệm vụ chính là đảm bảo an toàn dữ liệu (nếu một máy chủ vật lý bị hỏng, Replica sẽ lên thay) và tăng tốc độ đọc dữ liệu song song.
1.2. Cấu trúc Máy chủ Vật lý (Nodes)
Toàn bộ hệ thống chạy trên một cụm (Cluster) gồm nhiều Nút (Node - Máy chủ ảo hoặc vật lý). Các Node được phân chia vai trò rõ ràng để tối ưu hiệu năng:
- Cluster Manager Node: iều phối các cụm. Quyết định Shard nào nằm ở Server nào, theo dõi sức khỏe các Node. Nút này không lưu dữ liệu để tránh quá tải.
- Data Node: Chuyên lưu trữ Shard, trực tiếp thực hiện các lệnh tìm kiếm (Search) và tổng hợp số liệu (Aggregation).
- Coordinating Node: "Cổng giao tiếp". Nhận yêu cầu tìm kiếm từ người dùng, rải yêu cầu xuống các Data Node, gom kết quả lại và trả về cho người dùng.
- Ingest Node: Làm nhiệm vụ tiền xử lý, định dạng lại dữ liệu hoặc thêm thông tin địa lý (GeoIP) trước khi ghi vào ổ cứng. Ví dụ: Log tường lửa gửi về chỉ có IP 8.8.8.8. Ingest Node sẽ dùng pipeline tự động tra cứu và bổ sung thêm trường "country": "US", "city": "California" vào document trước khi ghi vào đĩa cứng.
- Ví dụ kịch bản lỗi thanh toán: Lúc 15:00, bộ phận CSKH báo có nhiều khách hàng không thanh toán được. Kỹ sư mở Discover, chọn index app-backend-logs-*, gõ vào thanh tìm kiếm:message: "payment timeout" AND environment: "production"Ngay lập tức, Dashboards lọc ra 150 dòng log tương ứng. Mở rộng log ra, kỹ sư phát hiện nguyên nhân là do kết nối từ App Server số 03 đến Database bị đứt. Vấn đề được khoanh vùng trong 2 phút!
-Ví dụ giám sát NOC:
+ Pie Chart (Biểu đồ tròn): Tỷ lệ HTTP Status 200 (Thành công) vs 5xx (Lỗi server).
+Line Chart (Biểu đồ đường): Băng thông mạng in/out theo từng phút để phát hiện hiện tượng nghẽn mạng.
+Coordinate Map (Bản đồ địa lý): Các chấm đỏ trên bản đồ thế giới hiển thị lượng traffic đang đổ về từ quốc gia nào (nhờ dữ liệu GeoIP đã xử lý ở Ingest Node).
Một vài ví dụ minh họa để có thể hiểu một cách trực quan:
Vai trò của OpenSearch: Đóng vai trò là "kho chứa khổng lồ". Tất cả log từ các máy chủ được gom lại và đẩy về OpenSearch. OpenSearch sẽ phân tích cú pháp, đánh chỉ mục (index) toàn bộ số log này theo thời gian thực (ví dụ: chia theo ngày logs-2026.04.23).
Vai trò của OpenSearch Dashboards: * Khi có khách hàng báo lỗi không thể thanh toán, kỹ sư IT sẽ mở OpenSearch Dashboards, vào tab Discover và gõ từ khóa: status: 500 AND message: "payment gateway timeout" để tìm ngay lập tức dòng log báo lỗi đó diễn ra ở server nào, lúc mấy giờ.
Trưởng nhóm IT có thể nhìn vào màn hình Dashboard gồm các biểu đồ đường (Line chart) báo cáo số lượng lỗi HTTP 404/500 theo từng phút để theo dõi sức khỏe hệ thống.
Vai trò của OpenSearch: Nằm phía sau thanh tìm kiếm (Search Bar) của ứng dụng. Khi người dùng gõ sai chính tả (ví dụ gõ "đắt nhân tâm" thay vì "đắc nhân tâm"), OpenSearch với khả năng tìm kiếm toàn văn (full-text search) và tìm kiếm mờ (fuzzy search) vẫn hiểu và trả về đúng cuốn sách đó chỉ trong vài mili-giây, nhanh hơn rất nhiều so với dùng truy vấn SQL truyền thống như LIKE '%đắc nhân tâm%'.
Vai trò của OpenSearch Dashboards: * Đội ngũ Marketing không viết code, họ chỉ cần vào OpenSearch Dashboards xem báo cáo: "Top 10 từ khóa khách hàng tìm kiếm nhiều nhất tuần này là gì?" hoặc "Từ khóa nào khách tìm mà không ra kết quả (Zero-result searches)?" để nhập thêm sách mới về bán.
Vai trò của OpenSearch: Liên tục nhận dữ liệu từ tường lửa (firewall), nhật ký đăng nhập của nhân viên. Hệ thống được thiết lập tính năng Alerting (Cảnh báo). Nếu phát hiện một địa chỉ IP nhập sai mật khẩu 20 lần trong vòng 1 phút, OpenSearch tự động kích hoạt cảnh báo gửi tin nhắn qua Slack/Email cho đội bảo mật.
Vai trò của OpenSearch Dashboards: * Cung cấp một biểu đồ Bản đồ địa lý (Geo-map). Đội bảo mật có thể nhìn lên bản đồ và thấy những chấm đỏ lớn xuất hiện, thể hiện đang có lượng lớn truy cập bất thường nhắm vào hệ thống xuất phát từ một khu vực địa lý cụ thể, từ đó có phương án chặn dải IP kịp thời.
HIện nay, trong bối cảnh hạ tầng mạng và các dịch vụ của các công ty, nhu cầu truy xuất và quản lý thông tin ngày càng cần thiết và cần được mở rộng, số lương log và sự kiện, các cuộc tấn công được sinh ra từ server, firewall, và từ application rất khổng lồ, vài tỷ log là chuyện bình thường. Việc chỉ lưu trữ log một cách thụ động và lúc cần thiết các kỹ sư IT muốn tìm kiếm thông tin rất khó khăn, không còn đáp ứng đủ nhu cầu vận hành và bảo mật của hệ thống. Vì vậy chúng ta cần một hệ thống có khả năng lưu trữ tốc độ cao, phân tích trực quan, lưu trữ và lọc theo filter trực quan và cảnh báo tấn công một cách chủ động.
Vì vậy, OpenSearch là một hệ sinh thái rất thích hợp cho vấn đề hiện tại, bao gồm kiến trúc lõi (Cluster), giao diện phân tích (Dashboards) và đặc biệt là chúng ta có thể biên nó thành một hệ thống giám sát an ninh (SIEM) thông qua plugin Security Analytics.
OpenSearch là gì?
OpenSearch là một công cụ tìm kiếm và phân tích phân tán, hướng tới cộng đồng được cấp phép của Âpche 2.0, 100% nguồn mở được sử dụng cho hàng loạt các trường hợp sử dụng như giám sát ứng dụng hay web server theo thời gian thực, phân tích bản ghi và tìm kiếm trang web. OpenSeaerch cung cấp một hệ thống có quy mô linh hoạt để mang tới khả năng truy cập và phản hồi nhanh khối lượng lớn dữ liệu với công cụ trực quan hóa được tích hợp sẵn, OpenSearch DashBoards, giúp người dùng dễ dàng khám phá dữ liệu của họ. OpenSearch được hỗ trợ bởi thư viện tìm kiếm Apache Lucene và nó hỗ trợ hàng loạt các tính năng tìm kiếm và phân tích, chẳng hạn như tìm kiếm lân cận gần nhất (KNN), SQL, phát hiện bất thường, thư viện Machine Learning Commons, phân tích dấu vết, tìm kiếm toàn văn bản, v.v.
Kiến trúc OpenSearch Clusster: Nền tảng Lưu trữ & Phân tích Siêu tốc
OpenSearch đóng vai trò là một "bộ não"/"thùng chứa" lưu trữ backend. Thay vì dùng các CSDL truyền thống để lưu trữ thông tin (MySQL), OpenSearch sử dụng kiến trúc phân tán (Distributed) kết hợp cấu trúc Inverted Index để tìm kiếm toàn văn bản (full-text search) trong hàng tỷ log chỉ mất vài mili giây.
1. Cấu trúc dữ liệu logic được chia thành 2 thành phần cốt lõi:
1.1. Cấu trúc Dữ liệu Logic
- Document (Tài liệu): Là đơn vị nhỏ nhất trong mô hình này, định dạng JSON. Vd: Một dòng log ghi nhận lại hành vi đăng nhập SSH thất bại.
- Index (Chỉ mục): Tương đương với "Database". Đây là nơi góm các nhóm các Document lại thành một nhóm có cùng tính chất. Vd: firewall-logs-2026.02 là một index chứa toàn bộ log tường lửa của tháng 2. 2026.
- Primary Shard (Màn hình chính): Để xử lý dữ liệu lớn, một index được băm nhỏ thành nhiều Primary Shard. Giúp hệ thống vượn qua giới hạn dung lượng của ổ cứng.
- Replica Shard (Mảnh bản sao): Hình dung giống như một bản sao copy của Primary Shard. Nhiệm vụ chính là đảm bảo an toàn dữ liệu (nếu một máy chủ vật lý bị hỏng, Replica sẽ lên thay) và tăng tốc độ đọc dữ liệu song song.
1.2. Cấu trúc Máy chủ Vật lý (Nodes)
Toàn bộ hệ thống chạy trên một cụm (Cluster) gồm nhiều Nút (Node - Máy chủ ảo hoặc vật lý). Các Node được phân chia vai trò rõ ràng để tối ưu hiệu năng:
- Cluster Manager Node: iều phối các cụm. Quyết định Shard nào nằm ở Server nào, theo dõi sức khỏe các Node. Nút này không lưu dữ liệu để tránh quá tải.
- Data Node: Chuyên lưu trữ Shard, trực tiếp thực hiện các lệnh tìm kiếm (Search) và tổng hợp số liệu (Aggregation).
- Coordinating Node: "Cổng giao tiếp". Nhận yêu cầu tìm kiếm từ người dùng, rải yêu cầu xuống các Data Node, gom kết quả lại và trả về cho người dùng.
- Ingest Node: Làm nhiệm vụ tiền xử lý, định dạng lại dữ liệu hoặc thêm thông tin địa lý (GeoIP) trước khi ghi vào ổ cứng. Ví dụ: Log tường lửa gửi về chỉ có IP 8.8.8.8. Ingest Node sẽ dùng pipeline tự động tra cứu và bổ sung thêm trường "country": "US", "city": "California" vào document trước khi ghi vào đĩa cứng.
2. OpenSearch Dashboards: Giao diện Tương tác (Frontend)
Nếu OpenSearch là một "kho bãi khổng lồ", thì Dashboards chính là "Cửa sổ quan sát và Bàn điều khiển". Công cụ web này (viết bằng Node.js) không tự lưu dữ liệu mà chỉ gọi API xuống OpenSearch để hiển thị thông tin.2.1. Tab Discover (Khám phá dữ liệu thô)
Nơi các kỹ sư truy vết sự cố (Troubleshooting) cực kỳ nhanh chóng bằng ngôn ngữ KQL/DQL.- Ví dụ kịch bản lỗi thanh toán: Lúc 15:00, bộ phận CSKH báo có nhiều khách hàng không thanh toán được. Kỹ sư mở Discover, chọn index app-backend-logs-*, gõ vào thanh tìm kiếm:message: "payment timeout" AND environment: "production"Ngay lập tức, Dashboards lọc ra 150 dòng log tương ứng. Mở rộng log ra, kỹ sư phát hiện nguyên nhân là do kết nối từ App Server số 03 đến Database bị đứt. Vấn đề được khoanh vùng trong 2 phút!
2.2. Tab Visualize & Dashboards
Thay vì đọc chữ, chúng ta vẽ biểu đồ để theo dõi xu hướng.-Ví dụ giám sát NOC:
+ Pie Chart (Biểu đồ tròn): Tỷ lệ HTTP Status 200 (Thành công) vs 5xx (Lỗi server).
+Line Chart (Biểu đồ đường): Băng thông mạng in/out theo từng phút để phát hiện hiện tượng nghẽn mạng.
+Coordinate Map (Bản đồ địa lý): Các chấm đỏ trên bản đồ thế giới hiển thị lượng traffic đang đổ về từ quốc gia nào (nhờ dữ liệu GeoIP đã xử lý ở Ingest Node).
Một vài ví dụ minh họa để có thể hiểu một cách trực quan:
Ví dụ 1: Hệ thống Quản lý Log tập trung (Centralized Logging)
Giả sử bạn đang vận hành một hệ thống thương mại điện tử lớn với hàng trăm máy chủ (server) và dịch vụ (microservices). Mỗi giây, hệ thống sinh ra hàng ngàn dòng log (lỗi, truy cập, thanh toán...).Vai trò của OpenSearch: Đóng vai trò là "kho chứa khổng lồ". Tất cả log từ các máy chủ được gom lại và đẩy về OpenSearch. OpenSearch sẽ phân tích cú pháp, đánh chỉ mục (index) toàn bộ số log này theo thời gian thực (ví dụ: chia theo ngày logs-2026.04.23).
Vai trò của OpenSearch Dashboards: * Khi có khách hàng báo lỗi không thể thanh toán, kỹ sư IT sẽ mở OpenSearch Dashboards, vào tab Discover và gõ từ khóa: status: 500 AND message: "payment gateway timeout" để tìm ngay lập tức dòng log báo lỗi đó diễn ra ở server nào, lúc mấy giờ.
Trưởng nhóm IT có thể nhìn vào màn hình Dashboard gồm các biểu đồ đường (Line chart) báo cáo số lượng lỗi HTTP 404/500 theo từng phút để theo dõi sức khỏe hệ thống.
Ví dụ 2: Công cụ Tìm kiếm Sản phẩm (Full-text Search) cho Website
Hãy tưởng tượng bạn đang xây dựng một ứng dụng bán sách cũ.Vai trò của OpenSearch: Nằm phía sau thanh tìm kiếm (Search Bar) của ứng dụng. Khi người dùng gõ sai chính tả (ví dụ gõ "đắt nhân tâm" thay vì "đắc nhân tâm"), OpenSearch với khả năng tìm kiếm toàn văn (full-text search) và tìm kiếm mờ (fuzzy search) vẫn hiểu và trả về đúng cuốn sách đó chỉ trong vài mili-giây, nhanh hơn rất nhiều so với dùng truy vấn SQL truyền thống như LIKE '%đắc nhân tâm%'.
Vai trò của OpenSearch Dashboards: * Đội ngũ Marketing không viết code, họ chỉ cần vào OpenSearch Dashboards xem báo cáo: "Top 10 từ khóa khách hàng tìm kiếm nhiều nhất tuần này là gì?" hoặc "Từ khóa nào khách tìm mà không ra kết quả (Zero-result searches)?" để nhập thêm sách mới về bán.
Ví dụ 3: Giám sát An toàn Thông tin (Security Analytics)
Công ty bạn cần theo dõi hệ thống mạng để phòng chống hacker (thường được gọi là hệ thống SIEM).Vai trò của OpenSearch: Liên tục nhận dữ liệu từ tường lửa (firewall), nhật ký đăng nhập của nhân viên. Hệ thống được thiết lập tính năng Alerting (Cảnh báo). Nếu phát hiện một địa chỉ IP nhập sai mật khẩu 20 lần trong vòng 1 phút, OpenSearch tự động kích hoạt cảnh báo gửi tin nhắn qua Slack/Email cho đội bảo mật.
Vai trò của OpenSearch Dashboards: * Cung cấp một biểu đồ Bản đồ địa lý (Geo-map). Đội bảo mật có thể nhìn lên bản đồ và thấy những chấm đỏ lớn xuất hiện, thể hiện đang có lượng lớn truy cập bất thường nhắm vào hệ thống xuất phát từ một khu vực địa lý cụ thể, từ đó có phương án chặn dải IP kịp thời.
3. Plugin Security Analytics: Biến hệ thống thành Trung tâm Giám sát An ninh (SIEM)
Lưu trữ log và tìm kiếm là chưa đủ. Nếu 2 giờ sáng có hacker rà quét mật khẩu server của công ty, không ai ngồi trực Dashboards để nhìn biểu đồ cả. Đây là lúc Security Analytics tỏa sáng. Nó chuyển hệ thống từ trạng thái Thụ động (truy vấn) sang Chủ động (giám sát và cảnh báo).Quy trình hoạt động của Security Analytics (Với ví dụ thực tế)
Kịch bản: Một tổ chức bên ngoài đang cố gắng tấn công Brute-force vào máy chủ Linux của công ty qua cổng SSH.- Rules (Luật bảo mật chuẩn Sigma):Hệ thống được cấu hình sẵn hàng ngàn Rule từ cộng đồng bảo mật. Trong đó có Rule: "Phát hiện hành vi đăng nhập SSH thất bại nhiều lần từ một IP".
- Detectors (Bộ dò tìm):Chúng ta tạo một Detector, gắn nó vào Index linux-auth-logs-* và bật Rule Brute-force ở trên. Detector này cứ mỗi 1 phút sẽ tự động quét log mới chảy về một lần.
- Findings (Ghi nhận sự kiện):Hacker dùng IP 203.0.113.50 thử sai mật khẩu root 30 lần trong 2 phút. Detector phát hiện log khớp với Rule. Nó lập tức sinh ra 30 "Findings" (Sự kiện đáng ngờ) và lưu lại bằng chứng.
- Alerts & Triggers (Cảnh báo & Kích hoạt):Chúng ta đã cài đặt một Trigger: "Nếu có nhiều hơn 10 Findings từ cùng 1 Rule trong vòng 5 phút, hãy báo động cấp bách".Ngay lập tức, Trigger được thỏa mãn. OpenSearch tự động kích hoạt Action: Gọi Webhook gửi một tin nhắn tự động vào kênh Slack #security-alerts của công ty:
CRITICAL ALERT: Brute-Force SSH Detected!- Source IP: 203.0.113.50
- Target Server: DB-Prod-01
- Failed Attempts: 30
- Đề nghị đội ngũ kiểm tra và bổ sung IP này vào Blacklist AWS WAF ngay lập tức!