Báo Cáo AT-HDH - D21AT - INT1484-03 - Nhóm 7

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA AN TOÀN THÔNG TIN

BÁO CÁO BÀI TẬP LỚN MÔN:


AN TOÀN HỆ ĐIỀU HÀNH

Chủ đề: Tìm hiểu về bộ công cụ quản lý log ELK

Nhóm 7:
Mai Anh Quân - B21DCAT154
Nguyễn Minh Quân - B21DCAT156
Lê Ngọc Quyền - B21DCAT162
Nguyễn Văn Quyến - B21DCAT161
Quách Văn Sơn - B21DCAT165

Hà Nội, tháng 2/2024

1
Mục Lục
A. Lý thuyết ....................................................................................................................... 3
I. Giới thiệu .................................................................................................................... 3
1. Stack là gì? ....................................................................................................................... 3
2. ELK Stack là gì?............................................................................................................. 3
II. Kiến trúc ELK Stack ................................................................................................ 4
1. Kiến trúc ELK Stack đơn giản ................................................................................... 4
2. Kiến trúc ELK Stack cho dữ liệu lớn ........................................................................ 4
III. Các thành phần của ELK stack ............................................................................. 5
1. Elasticsearch .................................................................................................................... 5
1.1 Elasticsearch là gì? ........................................................................................... 5
1.2 Các khái niệm cơ bản của Elasticsearch ........................................................ 6
1.2.1 Document .................................................................................................... 6
1.2.3 Shard ........................................................................................................... 7
1.2.4 Node............................................................................................................. 8
1.2.5 Cluster ......................................................................................................... 8
1.3 Nguyên lý làm việc ............................................................................................ 9
2. Logstash.......................................................................................................................... 10
2.1 Logstash là gì?................................................................................................. 10
2.2 Nguyên lý làm việc .......................................................................................... 11
3. Kibana ............................................................................................................................ 14
3.1 Kibana là gì? ................................................................................................... 14
3.2 Chức năng của chính Kibana ........................................................................ 14
4. Beats ................................................................................................................................ 15
4.1 Beats là gì?....................................................................................................... 15
4.2 Filebeat làm việc như thế nào? ...................................................................... 16
IV. Các tính năng của ELK stack ............................................................................... 17
V. Kết luận .................................................................................................................... 17
B. Thực hành .................................................................................................................... 19
I. Cài đặt ELK stack trên Ubuntu .............................................................................. 19
1. Cài đặt Elasticsearch ................................................................................................... 19
2. Cài đặt Kibana .............................................................................................................. 19
3. Cài đặt Logstash ........................................................................................................... 20
4. Cài đặt filebeat trên máy client ................................................................................. 22
II. Thử nghiệm phân tích một số file log.................................................................... 22
C. Tài liệu tham khảo ...................................................................................................... 23
Chủ đề: Tìm hiểu về bộ công cụ quản lý log ELK
A. Lý thuyết
I. Giới thiệu
1. Stack là gì?
Trước khi tìm hiểu ELK Stack là gì, chúng ta cần hiểu thế nào là logging. Nói một cách đơn giản,
dễ hiểu thì logging là công cụ đơn giản và mạnh mẽ giúp ghi lại toàn bộ dữ liệu và các hoạt động
trên hệ thống, hỗ trợ quá trình kiểm tra trở nên thuận tiện và dễ dàng hơn. Logging là một mảnh
ghép không thế thiếu trong bất kỳ một hệ thống nào, nhờ logging mà việc kiểm tra lại các trạng
thái của hệ thống cũng như phát hiện và sửa lỗi cũng đơn giản hơn rất nhiều
Tuy nhiên, một vấn đề gặp phải đó là có nhiều file log có dung lượng rất lớn, có thể lên đến hàng
chục GB, vì vậy việc xử lý các file log đó khá phức tạp và khó khăn đối với nhiều doanh nghiệp.
Chính vì vậy, để hoàn thiện quá trình tìm kiếm hay truy xuất log, các công cụ quản lý file log tập
trung (stack) được ra đời. Một trong các công cụ phổ biến, được sử dụng nhiều hiện nay đó là ELK
Stack
2. ELK Stack là gì?
ELK Stack là từ viết tắt được sử dụng để mô tả bộ dịch vụ bao gồm ba dự án mã nguồn mở phổ
biến: Elasticsearch, Logstash và Kibana. ELK Stack mang tới cho người dùng khả năng tổng hợp
nhật ký (log) từ tất cả các hệ thống và ứng dụng khác nhau, phân tích những nhật ký này, hiển thị
dữ liệu để giám sát ứng dụng và cơ sở hạ tầng, khắc phục sự cố nhanh hơn, phân tích bảo mật,...
II. Kiến trúc ELK Stack
1. Kiến trúc ELK Stack đơn giản

Aggregation (Tổng hợp): Trong kiến trúc này, Logstash đóng vai trò chính trong việc thu thập và
tổng hợp log từ các nguồn khác nhau (ví dụ như server gửi UDP request chứa log tới URL của
Logstash, hoặc Beat đọc file log và gửi lên Logstash). Các log sau đó được gửi đến Elasticsearch
để lưu trữ và phân tích.
Processing (Xử lý): Logstash cũng chịu trách nhiệm cho việc xử lý log messages. Nó có khả năng
parse dữ liệu từ log, trích xuất thông tin quan trọng, sửa đổi định dạng log và tiêu chuẩn hóa dữ
liệu để tạo ra dữ liệu có ý nghĩa và dễ dàng phân tích.
Storage (Lưu trữ): Elasticsearch được sử dụng để lưu trữ dữ liệu log trong khoảng thời gian dài.
Elasticsearch là một cơ sở dữ liệu tìm kiếm phân tán, cho phép lưu trữ và tìm kiếm log một cách
hiệu quả.
Analysis (Phân tích): Kibana là giao diện người dùng được sử dụng để phân tích dữ liệu log.
Người dùng có thể truy vấn dữ liệu từ Elasticsearch và tạo biểu đồ, bảng điều khiển và dashboard
để hiển thị thông tin phân tích một cách trực quan và dễ hiểu.
2. Kiến trúc ELK Stack cho dữ liệu lớn
Để xử lý các pipeline phức tạp hơn và lượng dữ liệu lớn trong môi trường sản xuất, các thành phần
bổ sung thường được thêm vào kiến trúc logging để cải thiện tính kháng lỗi và bảo mật. Các thành
phần bổ sung này có thể bao gồm Kafka, RabbitMQ, Redis để cải thiện tính kháng lỗi, và các biện
pháp bảo mật như Nginx....
III. Các thành phần của ELK stack
1. Elasticsearch
1.1 Elasticsearch là gì?
- Elasticsearch là một công cụ dựa trên phần mềm Lucene. Nó cung cấp một bộ máy tìm kiếm
dạng phân tán, có đầy đủ công cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON.
Elasticsearch được phát triển bằng Java và được phát hành dạng mã nguồn mở theo giấy phép
Apache.
- Ngoài ra, Elasticsearch cũng được xem là một document oriented database. Nhiệm vụ của nó
chính là store và retrieve document. Trong Elasticsearch, tất cả các document được hiển thị
trong JSON format. Nó được xây dựng trên Lucene – phần mềm tìm kiếm và trả về thông tin
với hơn 15 năm kinh nghiệm về full text indexing and searching.
- Các đặc điểm cơ bản:
• JSON based data: hệ thống sử dụng cơ sở dữ liệu noSQL để lưu trữ và truy vấn dữ liệu,
tập trung vào việc tối ưu hóa hiệu suất tìm kiếm. Điều này đảm bảo rằng Elasticsearch có
thể cung cấp kết quả tìm kiếm chính xác trong thời gian gần như thời gian thực, ngay cả
trên tập dữ liệu lớn.
• RESTful APIs: Elasticsearch cũng cung cấp một giao diện RESTful API, cho phép các
ứng dụng và dịch vụ khác có thể tương tác với nó một cách dễ dàng. Điều này làm cho việc
tích hợp Elasticsearch vào các ứng dụng hiện có trở nên rất linh hoạt và thuận tiện.
• Multi data resources: Dữ liệu có thể lấy từ nhiều nguồn khác nhau. Đó có thể là Logs từ
ứng dụng, Metrics hệ thống hoặc bất nguồn kỳ dữ liệu với bất kỳ loại dữ liệu nào đến từ
bất kỳ ứng dụng khác nhau.

1.2 Các khái niệm cơ bản của Elasticsearch

1.2.1 Document
Document là đơn vị nhỏ nhất để lưu trữ dữ liệu trong Elasticsearch. Đây là một đơn vị lưu trữ
thông tin cơ bản trong Elasticsearch, là một JSON object đối với một số dữ liệu.
1.2.2 Index
- Trong Elasticsearch có một cấu trúc tìm kiếm gọi là inverted index, nó được thiết kế để cho
phép tìm kiếm full-text search. Cách thức khá đơn giản, các văn bản được tách ra thành từng
từ có nghĩa sau đó sẽ được map xem thuộc văn bản nào và khi search sẽ ra kết quả cụ thể.
- Có 2 kiểu đánh index và forward index và inverted index. Bản chất của inverted index là đánh
theo keyword: words → pages còn forward đánh theo nội dung page → words.
- Việc đánh theo keyword thì tìm kiếm sẽ nhanh hơn phải tìm kiếm theo từng page. Elasticsearch
sử dụng Apache lucence để quản lý và tạo inverted index.
1.2.3 Shard
- Shard là một đối tượng của Lucence, là tập hợp con của một Index. Một index có thể được
lưu trên nhiều shard.
- Một node bao gồm nhiều Shard, shard chính là đối tượng nhỏ nhât hoạt động ở mức thấp nhất,
đóng vai trò lưu trữ dữ liệu.
- Người dùng sẽ không bao giờ làm việc với các shard vì Elasticsearch sẽ hỗ trợ toàn bộ việc
giao tiếp cũng như tự động thay đổi các Shard khi cần thiết.
- Elasticsearch cung cấp 2 cơ chế của shard đó là primary shard và replica shard.
• Primary shard sẽ lưu trữ dữ liệu và đánh Index, sau khi đánh dữ liệu xong sẽ được vận
chuyển đến các replica shard, mặc định của Elasticsearch mỗi index sẽ có 5 Primary shard
thì sẽ đi kèm với 1 Replica shard.
• Replica shard là nơi lưu trữ dữ liệu nhân bản của Elasticsearch, đóng vai trò đảm bảo tính
toàn vẹn dữ liệu khi Primary shard xảy ra vấn đề, ngoài ra nó còn giúp tăng tốc độ tìm kiếm
vì người dùng có thể cấu hình lượng Replica shard nhiều hơn cấu hình mặc định của
Elasticsearch.
1.2.4 Node
- Là trung tâm hoạt động của Elasticsearch, là nơi lưu trữ dữ liệu, tham gia thực hiện đánh index
của cluster cũng như thực hiện các thao tác tìm kiếm.
- Mỗi node được xác định bằng một tên riêng và không được phép trùng lặp.
1.2.5 Cluster

- Tập hợp các nodes hoạt động cùng với nhau, chia sẻ cùng thuộc tính cluster name. Chính vì
thế Cluster sẽ được xác định bằng một 'unique name'. Việc định danh các cluster trùng tên sẽ
gây nên lỗi cho các node vì vậy khi setup các bạn cần hết sức chú ý điểm này.
- Mỗi cluster có một node chính (master), được lựa chọn một cách tự động và có thể thay thế
nếu sự cố xảy ra. Một cluster có thể gồm một hoặc nhiều nodes. Các nodes có thể hoạt động
trên cùng một server. Tuy nhiên trong thực tế, một cluster sẽ gồm nhiều nodes hoạt động trên
các server khác nhau để đảm bảo nếu một server gặp sự cố thì server khác (node khác) có thể
hoạt động đầy đủ chức năng so với khi có hai servers. Các node có thể tìm thấy nhau để hoạt
động trên cùng một cluster qua giao thức unicast.
- Chức năng chính của Cluster đó chính là quyết định xem shards nào được phân bổ cho node
nào và khi nào thì di chuyển các Cluster để cân bằng lại Cluster.

1.3 Nguyên lý làm việc

- Elasticsearch hoạt động dựa trên việc lưu trữ và quản lý các dữ liệu có dạng document và các
loại dữ liệu bán cấu trúc. Nội bộ Elasticsearch hoạt động dựa trên một nguyên lý cơ bản dưới
một cấu trúc không chia sẻ bất cứ thứ gì. Cấu trúc dữ liệu chính của nó sử dụng một chỉ mục
được đánh ngược bằng việc tận dụng API của Apache Lucene.
- Hiểu theo một cách đơn giản thì một chỉ mục ngược được gán cho từng từ riêng biệt (được
gọi là token) tới một danh sách các tài liệu có chứa các từ đó, điều này cho phép người dùng
có thể định vị được tài liệu với từ khóa được sử dụng để tìm kiếm. Thông tin chỉ mục đó được
lưu trữ trong một hoặc nhiều phân vùng được gọi là shard.
- Elasticsearch có khả năng phân tán và tìm thấy được vị trí shard một cách linh hoạt từ các
node trong một cluster cũng như là việc nhân bản chúng lên.
- Cơ chế này làm cho việc phân bổ dữ liệu trở nên linh hoạt và dễ dàng hơn. Cluster Elastic
Search hoàn toàn có thể được giảm tải bởi việc phân tán các phân vùng được nhân bản tới các
node khác nhau. Các phương thức chỉ mục sử dụng các phân vùng ưu tiên và tìm kiếm sử
dụng cả hai loại shard. Trong một cluster có nhiều node và càng nhiều replica thì hiệu suất tìm
kiếm càng tăng.
2. Logstash
2.1 Logstash là gì?

- Logstash là một công cụ mã nguồn mở thu thập dữ liệu có khả năng liên hợp theo thời gian
thực. Logstash có thể hợp nhất dữ liệu từ các nguồn khác nhau và chuẩn hóa dữ liệu ở phần
xử lý tiếp theo, loại bỏ và đồng hóa tất cả dữ liệu đó trong một số use case cần phân tích và
thể hiện trên biểu đồ.
- Logstash có 3 thành phần chính cũng chính là 3 bước xử lý chính của logstash đó là:
• INPUT: Nó có thể lấy đầu vào từ TCP/UDP, các file, từ syslog, Microsoft Windows
EventLogs, STDIN và từ nhiều nguồn khác. Người dùng có thể lấy log từ các ứng dụng
trên môi trường rồi đẩy chúng tới Logstash.
• FILTER: Khi những log này tới Server Logstash, có một số lượng lớn các bộ lọc mà cho
phép người dùng có thể chỉnh sửa và chuyển đổi những event này. Người dùng có thể lấy
ra các thông tin cần sử dụng từ những event log.
• OUTPUT: Khi xuất dữ liệu ra, Logstash hỗ trợ rất nhiều các đích tới bao gồm TCP/UDP,
email, các file, HTTP, Nagios và số lượng lớn các dịch vụ mạng. Người dùng có thể tích
hợp Logstash với các công cụ tính toán số liệu (metric), các công cụ cảnh báo, các dạng
biểu đồ, các công nghệ lưu trữ hay có thể xây dựng một công cụ trong môi trường làm việc.
2.2 Nguyên lý làm việc

Đường ống xử lý sự kiện của Logstash có ba giai đoạn: input → filter → output. Các đầu vào tạo
ra các sự kiện, bộ lọc sửa đổi chúng và các đầu ra sẽ chuyển chúng tới nơi khác. Đầu vào và đầu
ra hỗ trợ codec cho phép người dùng mã hóa hoặc giải mã dữ liệu khi nó vào hoặc thoát khỏi
đường dẫn mà không phải sử dụng bộ lọc riêng biệt.
Input: sử dụng để lấy dữ liệu vào Logstash

Một số đầu vào thường được sử dụng là :


- File : đọc từ một tệp trên hệ thống, giống như lệnh UNIX tail -0F
- Syslog : nghe trên cổng 514 nổi tiếng cho các thông báo nhật ký hệ thống và phân tích cú pháp
theo định dạng RFC3164.
- Redis : đọc từ máy chủ redis, sử dụng cả kênh redis và danh sách redis. Redis thường được sử
dụng như một “broker” trong một mô hình Logstash tập trung, có hàng đợi các sự kiện
Logstash từ các “shippers” từ xa.
- Beats : xử lý các sự kiện do beats gửi.
Filter: là thiết bị xử lý trung gian trong đường dẫn Logstash. Người dùng có thể kết hợp các bộ
lọc với các điều kiện để thực hiện một hành động trên một sự kiện nếu nó đáp ứng các tiêu chí
nhất định

Một số bộ lọc hữu ích bao gồm :


- Grok : phân tích cú pháp và cấu trúc văn bản tùy ý - chỉnh sửa định dạng log từ client gửi về.
Grok hiện là cách tốt nhất trong Logstash để phân tích cú pháp dữ liệu nhật ký không được
cấu trúc thành một thứ có cấu trúc và có thể truy vấn được. Với 120 mẫu được tích hợp sẵn
trong Logstash, nhiều khả năng người dùng sẽ tìm thấy một mẫu đáp ứng nhu cầu của mình.
- Mutate : thực hiện các phép biến đổi chung trên các trường sự kiện. Bạn có thể đổi tên, xóa,
thay thế và sửa đổi các trường trong sự kiện của mình.
- Drop : xóa hoàn toàn sự kiện, ví dụ: debug events.
- Clone : tạo bản sao của sự kiện, có thể thêm hoặc xóa các trường.
- Geoip : thêm thông tin về vị trí địa lý của địa chỉ IP (cũng hiển thị biểu đồ tuyệt vời trong
Kibana).
Output: Các đầu ra là pha cuối cùng của đường ống Logstash. Một sự kiện có thể đi qua nhiều
đầu ra, nhưng một khi tất cả xử lý đầu ra đã hoàn tất, sự kiện đã hoàn tất việc thực thi của nó.

Một số đầu ra thường được sử dụng bao gồm :


- Elasticsearch : gửi dữ liệu sự kiện tới Elasticsearch. Nếu người dùng đang có kế hoạch để lưu
dữ liệu trong một định dạng hiệu quả, thuận tiện, và dễ dàng truy vấn … Elasticsearch là con
đường để đi.
- File : ghi dữ liệu sự kiện vào file trên bộ nhớ.
- Graphite : gửi dữ liệu sự kiện tới graphite, một công cụ nguồn mở phổ biến để lưu trữ và vẽ
đồ thị số liệu.
- Statsd : gửi dữ liệu sự kiện đến statsd, một dịch vụ lắng nghe và thống kê.
3. Kibana
3.1 Kibana là gì?

Kibana là một nền tảng phân tích hiển thị dữ liệu từ Elasticsearch một cách trực quan dễ sử dụng.
Nó thực hiển chuyển đổi các truy vấn của người dùng thành câu truy vấn mà Elasticsearch có thể
thực hiện được và cung cấp các tính năng cho người dùng quản lý như biểu đồ cột, biểu đồ đường,
biểu đồ tròn, biểu đồ nhiệt và nhiều kiểu biểu đồ khác.
3.2 Chức năng của chính Kibana
- Trực quan hóa Dữ liệu: Kibana cung cấp các biểu đồ, đồ thị và bảng trực quan để hiển thị dữ
liệu từ Elasticsearch. Người dùng có thể tạo các biểu đồ tùy chỉnh để hiển thị thông tin theo
cách mong muốn.
- Tìm kiếm và Lọc Dữ liệu: Kibana cho phép người dùng thực hiện các truy vấn và tìm kiếm
dữ liệu trong Elasticsearch để nhanh chóng định vị thông tin cụ thể.
- Dashboard: Người dùng có thể tạo các bảng điều khiển (dashboard) để tổng hợp nhiều biểu
đồ và thông tin trực quan trong một trang để theo dõi và phân tích dữ liệu.
- Quản lý Log và sự kiện: Kibana có thể kết hợp với Logstash để quản lý và xử lý log từ nhiều
nguồn khác nhau, giúp hiển thị thông tin log một cách dễ đọc và dễ theo dõi.
- Xác thực và Quản lý Người Dùng: Kibana hỗ trợ xác thực và quản lý người dùng, giúp kiểm
soát quyền truy cập vào các dữ liệu và chức năng của hệ thống.
4. Beats
4.1 Beats là gì?
- Beats là những data shipper mã nguồn mở được cài đặt như các agent trên các server cần thu
thập các sự kiện để gửi các kiểu dữ liệu khác nhau tới Elasticsearch. Beats có thể gửi dữ liệu
trực tiếp tới Elasticsearch hay tới Logstash.
- Beats là một platform trong đó có các project nhỏ sinh ra thực hiện trên từng loại dữ liệu nhất
định.
- ELK cần sử dụng các beat để làm shipper giúp gửi các loại dữ liệu từ client tới Server.
- Các beat index pattern cần được cài đặt trên cả ELK server và các client. Trên ELK server,
các beat sẽ kết hợp với các thành phần để lọc dữ liệu, đánh chỉ mục, hiển thị.
- Một số beats pattern thường được sử dụng:
• Packetbeat : Thực hiện gửi dữ liệu được capture từ các port về server.
• Topbeat : Như là một monitor agent, giúp người dùng có thể thu thập các thông tin về phần
cứng như là : CPU, RAM,…
• Filebeat : Giúp vận chuyển các log từ client về server.
• Winlogbeat : Giúp vận chuyển event log từ các client là máy OS Windows.
• Metricbeat : Thu thập các dữ liệu từ hệ điều hành, các dịch vụ như : Apache, HAProxy,
MongoDB, Nginx,….
- Mô hình beats platform:
- Trong các beats pattern trên thì filebeat thường được ưu tiên sử dụng tuy nhiên filebeat vẫn
còn một số hạn chế cần lưu ý khi sử dụng như:
• Khó khăn đối với người mới sử dụng cú pháp YAML.
• Nếu cấu hình quá nhiều file log cần đẩy về thì File filebeat registry sẽ phình to rất nhanh
do cần dung lượng để lưu trữ từng trạng thái của từng dòng log(dòng log đã được gửi đi
hay chưa).
• Không nên cấu hình filebeat quét các filelog nhỏ hơn 1s bởi vì điều anfy sẽ khiến cho
filebeat chiếm CPU một lượng đáng kể.
4.2 Filebeat làm việc như thế nào?
- Khi khởi động filebeat, nó sẽ khởi chạy một hay nhiều prospector, sẽ tìm kiếm các đường dẫn
của tập tin tin mà người dùng đã khai báo. Với mỗi môt tập tin log mà prospector tìm thấy
được, Filebeat sẽ khởi chạy một harvester. Mỗi một harvester đọc một tập tin log, và gửi các
bản tin log này khi có dữ liệu mới tới spooler. Spooler là nơi tổng hợp các sự kiện và gửi dữ
liệu đã tổng hợp được tới output mà người dùng đã cấu hình trên Filebeat.
- Cấu trúc bên trong filebeat:
IV. Các tính năng của ELK stack
- Quản lý dữ liệu log hiệu quả: ELK Stack cho phép thu thập, lưu trữ và xử lý dữ liệu log từ
nhiều nguồn khác nhau một cách hiệu quả. Điều này giúp tổ chức theo dõi và phân tích các
hoạt động hệ thống, tìm kiếm thông tin cần thiết và phát hiện sự cố nhanh chóng.
- Phân tích và khai thác dữ liệu log: ELK Stack cung cấp các công cụ tìm kiếm và phân tích
mạnh mẽ, giúp người dùng khai thác thông tin từ dữ liệu log. Bằng cách áp dụng các truy vấn
và bộ lọc, người dùng có thể tìm ra xu hướng, mô hình và thông tin quan trọng khác để cải
thiện hiệu suất và tăng cường bảo mật.
- Trực quan hóa dữ liệu log: Kibana cung cấp giao diện trực quan để tạo biểu đồ, đồ thị và
bảng điều khiển từ dữ liệu log. Điều này giúp người dùng hiểu rõ hơn về các xu hướng, hiệu
suất hệ thống và các vấn đề quan trọng khác một cách dễ dàng và rõ ràng.
- Quản lý sự kiện và thông tin bảo mật (SIEM): ELK Stack có thể được sử dụng như một nền
tảng SIEM để giám sát và phân tích các sự kiện liên quan đến bảo mật. Điều này giúp phát
hiện, phản ứng và giải quyết các mối đe dọa và tấn công mạng nhanh chóng, đảm bảo an ninh
thông tin cho tổ chức.
- Linh hoạt và mở rộng: ELK Stack là một giải pháp linh hoạt và mở rộng, có thể tích hợp và
mở rộng với các công cụ và hệ thống khác. Nó có khả năng xử lý lượng dữ liệu lớn và hỗ trợ
các kiến trúc phân tán, đáp ứng nhu cầu của các môi trường phức tạp và quy mô lớn.
V. Kết luận
"ELK" là từ viết tắt của ba dự án nguồn mở: Elaticsearch, Logstash và Kibana. Trong đó:
• Elasticsearch: không chỉ đơn thuần là một cơ sở dữ liệu, mà còn là một nền tảng phân tán
mạnh mẽ cho việc tìm kiếm và phân tích dữ liệu lớn. Trong bộ ba này thì nó đóng vai trò là
một store để chứa logs kiêm vai trò tìm kiếm và phân tích mạnh mẽ vốn có.
• Logstash: đây là một công cụ sử dụng để thu thập, xử lý log được viết bằng Java. Nhiệm vụ
chính của logstash là thu thập log sau đó chuyển vào Elastichsearch. Mỗi dòng log của logstash
được lưu trữ đưới dạng json.
• Kibana: hiển thị những tài liệu theo bộ lọc hoặc thống kê và phân tích theo những data có sẵn
ở trên Elasticsearch, mọi dữ liệu thống kê và phân tích sẽ được quan sát và nhìn thấy trên
Kibana.
Luồng hoạt động:
• Đầu tiên, log sẽ được đưa đến Logstash.
• Logstash sẽ đọc những log này, thêm những thông tin như thời gian, IP, parse dữ liệu từ log
ra, sau đó ghi xuống database là Elasticsearch.
• Khi muốn xem log, người dùng vào URL của Kibana. Kibana sẽ đọc thông tin log trong
Elasticsearch, hiển thị lên giao diện cho người dùng query và xử lý.
Qua những gì đã tìm hiểu, chúng ta có thể rút ra một số ưu điểm của phần mềm ELK stack:
- ELK stack là phần mềm mã nguồn mở, không tốn nhiều chi phí khi triển khai.
- ELK mới được phát triển mạnh gần đây, nên cộng đồng hỗ trợ rất đông đúc và mạnh mẽ.
- Thu thập được log từ rất nhiều nguồn khác nhau: log hệ thống, log ứng dụng, log thiết bị mạng,
log snmp, log từ các hệ thống API (Application Programming Interface)…
- Khả năng tương thích cao, dễ dàng tích hợp với các hệ thống khác mà không gặp khó khăn.
- Giao diện Kibana trực quan, sinh động.
- Phương tiện cảnh báo đa dạng, tích hợp với email, sms, slack, các ứng dụng OTP (One Time
Password) như Telegram, Whatsapp,...
- Hiệu năng xử lý cao, có thể chịu tải được một lượng lớn dữ liệu (log) đẩy về mà không phải
quá phụ thuộc vào khả năng xử lý của phần cứng.
- Giải quyết được hầu hết các bài toán trong giám sát hệ thống mạng: giám sát hạ tầng, giám
sát dịch vụ, giám sát an ninh, giám sát người dùng,... Đây là đặc điểm chính giúp cho ELK
trong tương lai sẽ được các công ty và tổ chức sử dụng để triển khai hệ thống giám sát tập
trung bên trong hệ thống mạng
B. Thực hành
I. Cài đặt ELK stack trên Ubuntu
1. Cài đặt Elasticsearch

=> Cài đặt thành công:

2. Cài đặt Kibana

=> Cài đặt thành công:


3. Cài đặt Logstash

Cấu hình Logstash:


• Input:
• Filter:

• Output:

=> Cài đặt thành công:


4. Cài đặt filebeat trên máy client

=> Cài đặt thành công:

II. Thử nghiệm phân tích một số file log


C. Tài liệu tham khảo
1. ELK là gì? Khám phá sức mạnh đằng sau giải pháp quản lý dữ liệu log và sự kiện
2. Tìm hiểu về Elasticsearch
3. Tìm hiểu về logstash
4. Tìm hiểu về beats
5. Cài đặt ELK Elasticsearch Logstash Kibana

You might also like