1. Splunk là gì?
Splunk là một công ty và cũng là tên của một nền tảng phân tích dữ liệu và quản lý sự kiện (SIEM – Security Information and Event Management). Splunk được phát triển để thu thập, xử lý và phân tích dữ liệu từ nhiều nguồn khác nhau như hệ thống, ứng dụng, thiết bị mạng và hơn thế nữa.
Splunk cho phép các tổ chức thu thập, lưu trữ, tìm kiếm, trực quan hóa và phân tích dữ liệu từ nhiều nguồn khác nhau trong hạ tầng công nghệ thông tin của họ. Nó có khả năng tiếp cận và hiển thị dữ liệu theo thời gian thực, giúp người dùng phát hiện các sự cố, hiểu rõ hơn về hệ thống và đưa ra các quyết định dựa trên thông tin cung cấp bởi dữ liệu.
Splunk có khả năng xử lý các loại dữ liệu đa dạng như log, metric, sự kiện và dữ liệu bán cấu trúc. Nó cung cấp các công cụ và giao diện cho việc tìm kiếm, truy vấn, phân tích và trực quan hóa dữ liệu, cho phép người dùng tìm ra mối liên hệ, xu hướng và thông tin quan trọng từ dữ liệu thu thập được.
Splunk được sử dụng trong nhiều lĩnh vực như bảo mật mạng, giám sát hệ thống, quản lý log, phân tích dữ liệu doanh nghiệp và nhiều ứng dụng khác liên quan đến quản lý và phân tích dữ liệu.
2. Splunk với ELK.
Splunk và ELK (Elasticsearch, Logstash, Kibana) là hai nền tảng phân tích dữ liệu phổ biến và thường được sử dụng cho mục đích tương tự. Dưới đây là một số khác biệt chính giữa Splunk và ELK:
- Kiến trúc: Splunk cung cấp một giải pháp toàn diện, bao gồm cả việc thu thập, xử lý và trực quan hóa dữ liệu trong một gói duy nhất. ELK là một bộ công cụ nguồn mở và được kết hợp từ ba thành phần chính: Elasticsearch (cơ sở dữ liệu phân tán), Logstash (thu thập và xử lý log), và Kibana (giao diện trực quan hóa dữ liệu).
- Quản lý dữ liệu: Splunk có thể xử lý nhiều loại dữ liệu, bao gồm log, metric, sự kiện và dữ liệu bán cấu trúc. Nó cung cấp các công cụ phân tích và truy vấn dữ liệu mạnh mẽ. ELK thường được sử dụng chủ yếu cho việc xử lý và truy vấn log, mặc dù Elasticsearch cũng có khả năng xử lý dữ liệu không phải log.
- Quản lý quy mô: Splunk có tính năng quản lý quy mô cao, cho phép mở rộng lưu trữ và xử lý dữ liệu dễ dàng. Splunk có khả năng xử lý các lượng dữ liệu lớn và có hiệu suất tốt. ELK cũng có thể mở rộng, nhưng cần sự cấu hình và quản lý tốt hơn từ phía người dùng.
- Giá cả: Splunk là một sản phẩm có giá, với các gói giấy phép phân cấp dựa trên quy mô và tính năng. ELK là một giải pháp nguồn mở và miễn phí, tuy nhiên, việc triển khai và quản lý có thể đòi hỏi nhiều kiến thức và tài nguyên.
Bạn có thể kết hợp Splunk với ELK để tận dụng các ưu điểm của cả hai nền tảng. Một số doanh nghiệp thực hiện việc này để tận dụng khả năng xử lý dữ liệu và trực quan hóa của Splunk cùng với tính linh hoạt và sức mạnh của ELK. Dưới đây là một số cách kết hợp Splunk và ELK:
- Forwarding Logs: Bạn có thể sử dụng Splunk để thu thập và chuyển tiếp log đến ELK để xử lý, lưu trữ và trực quan hóa. Splunk sẽ chịu trách nhiệm thu thập và gửi log đến ELK, trong khi ELK sẽ xử lý và trực quan hóa dữ liệu.
- Logstash và Splunk: Bạn có thể sử dụng Logstash để thu thập, chuyển đổi và gửi log đến Splunk. Splunk sẽ chịu trách nhiệm xử lý và trực quan hóa dữ liệu.
- Elasticsearch và Splunk: Bạn có thể sử dụng Elasticsearch của ELK như một cơ sở dữ liệu phân tán để lưu trữ dữ liệu từ Splunk. Splunk sẽ thu thập và gửi dữ liệu đến Elasticsearch, và bạn có thể sử dụng Kibana của ELK để trực quan hóa và truy vấn dữ liệu.
Splunk và Logstash đều có khả năng sử dụng Grok để phân tích và biến đổi dữ liệu log. Tuy nhiên, cách mà Splunk và Logstash sử dụng Grok có một số khác biệt.
Logstash: Logstash là một thành phần của bộ ELK và sử dụng Grok pattern để phân tích cú pháp và trích xuất thông tin từ dữ liệu log. Grok pattern trong Logstash được sử dụng thông qua plugin “grok” để tạo các biểu thức chính quy phù hợp với định dạng log cụ thể. Grok cho phép bạn tạo các mẫu tùy chỉnh để trích xuất các trường dữ liệu khác nhau từ log.
Splunk: Splunk cũng hỗ trợ Grok để phân tích dữ liệu log, tuy nhiên, Splunk sử dụng một ngôn ngữ phân tích dữ liệu riêng gọi là SPL (Splunk Processing Language). SPL cung cấp nhiều chức năng phân tích mạnh mẽ để trích xuất thông tin từ dữ liệu log, bao gồm cả khả năng sử dụng Grok-like patterns. SPL cung cấp một tập hợp các hàm và lệnh để thao tác và trích xuất dữ liệu log.
Lựa chọn giữa Splunk và ELK thường phụ thuộc vào yêu cầu cụ thể của dự án, quy mô, nguồn lực và sự quen thuộc với công nghệ. Splunk cung cấp một giải pháp tích hợp và dễ sử dụng, trong khi ELK là một giải pháp linh hoạt và có thể tuỳ chỉnh được sử dụng nhiều trong cộng đồng nguồn mở.
3. Triển khai Splunk.
Để triển khai Splunk bằng Docker Compose, bạn có thể sử dụng file docker-compose.yml để xác định các dịch vụ và cấu hình liên quan đến Splunk. Dưới đây là một ví dụ cơ bản về cách triển khai Splunk bằng Docker Compose:
- Tạo một file docker-compose.yml và mở nó để chỉnh sửa.
- Đưa vào nội dung sau vào file docker-compose.yml:
version: '3'
services:
splunk:
image: splunk/splunk:latest
ports:
- '8000:8000' # Port để truy cập giao diện Splunk Web
- '8088:8088' # Port để nhận dữ liệu từ các nguồn khác
environment:
- SPLUNK_START_ARGS=--accept-license
- SPLUNK_PASSWORD=<password> # Thay thế <password> bằng mật khẩu cho người dùng admin
- Lưu và đóng file docker-compose.yml.
- Mở terminal hoặc command prompt và chạy lệnh sau trong thư mục chứa file docker-compose.yml:
docker-compose up -d
Docker Compose sẽ bắt đầu quá trình tải xuống và triển khai container Splunk. Sau khi hoàn tất, bạn có thể truy cập vào giao diện Splunk Web bằng cách mở trình duyệt và truy cập vào địa chỉ http://localhost:8000
. Đăng nhập bằng tài khoản admin và mật khẩu bạn đã đặt trong biến môi trường SPLUNK_PASSWORD.
Lưu ý: File docker-compose.yml trong ví dụ trên chỉ triển khai Splunk cơ bản với cấu hình mặc định. Bạn có thể tùy chỉnh file này để đáp ứng nhu cầu và yêu cầu cụ thể của dự án Splunk của bạn, bao gồm việc thiết lập các cài đặt bổ sung, mount thư mục lưu trữ dữ liệu, v.v.
Chú ý rằng, để sử dụng Splunk trong môi trường sản xuất, bạn nên tìm hiểu và tuân thủ các hướng dẫn triển khai Splunk bằng Docker được cung cấp bởi Splunk và đảm bảo tuân thủ các quy định bảo mật và hiệu suất.
5. Kiểm tra xem container đã chạy hay chưa bằng cách sử dụng lệnh docker-compose ps.
$ docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
root-splunk-1 "/sbin/entrypoint.sh…" splunk running (healthy) 0.0.0.0:8000->8000/tcp, 0.0.0.0:8088->8088/tcp, :::8000->8000/tcp, :::8088->8088/tcp
Hãy chắc chắn rằng port 8000 đã chạy.
$ netstat -tlnp | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 3385/docker-proxy
tcp6 0 0 :::8000 :::* LISTEN 3392/docker-proxy
Đây là kết quả login trên trình duyệt.
Hãy login thông tin admin/password với password chính là thông tin bạn đã khai báo trong file docker-compose.yml và dưới đây là kết quả sau khi login thành công.
Đây là hình ảnh khi mình thêm logs của Cisco.
Chúc các bạn thành công.