Tài liệu giới thiệu và cài đặt elk stack môn Công nghệ thông tin | Trường đại học Kinh Doanh và Công Nghệ Hà Nội

● sử dụng cơ sở dữ liệu NoSQL dựa trên nền tảng của ApacheLucene engine. Dùng để lưu trữ dữ liệu và cung cấp interface cho phép truy vấn đến cơ sở dữ liệu. ● Elasticsearch là một công cụ tìm kiếm mã nguồn mở được phát triển bởi công ty Elastic .Tài liệu giúp bạn tham  khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!

lOMoARcPSD| 48704538
1
TÀI LIỆU
GIỚI THIỆU VÀ CÀI ĐẶT ELK STACK
LƯU HÀNH NỘI BỘ
Phiên bản: v 1.0
Ngày ban hành: 10/06/2022
PHẦN 1 – ELK STACK LÀ GÌ
I . Khái nhiệm:
Fluentd:
"Fluentd" is an open-source tool to collect events and logs. http://fluentd.org/
lOMoARcPSD| 48704538
2
Fluentd là một phần mềm trung gian tuyệt vời dựa trên Ruby dùng để đọc, xử
lý và gửi log.
Fluentd cũng thể được mở rộng bằng cách viết plugin, hiện nay nhiều
plugin đã được develop
public. http://fluentd.org/plugin/
Elasticsearch:
sử dụng sở dữ liệu NoSQL dựa trên nền tảng của Apache Lucene engine.
Dùng để lưu trữ dữ liệu và cung cấp interface cho phép truy vấn đến cơ sở dữ
liệu.
Elasticsearch một công cụ tìm kiếm mã nguồn mở được phát triển bởi công
ty Elastic.
Bạn có thể nhanh chóng trích xuất các tài liệu chứa các từ mong muốn từ một
số lượng lớn document.
Elasticsearch không phải sở dữ liệu quan hệ, nên các câu lệnh SQL
không thể được sử dụng.Thay vào đó nó hoạt động bằng cách sử dụng
RESTful interface.
Bạn thể gặp khó khăn đã quen thuộc với sdữ liệu quan hệ n
Oracle, MySQL vv. Tuy nhiên Elasticsearch API rất đơn giản, bạn không cần
quá lo lắng nhé.
Kibana: Đây giao diện sử dụng dành cho người dùng trên môi trường web. Kibana
sẽ sử dụng Elashtichsearch để tìm kiếm các dữ liệu phù hợp với yêu cầu của người
dùng.
II . Cơ chế hoạt động:
Cơ chế hoạt động của EFK Stack cũng khá đơn giản, các bạn xem hình sẽ hiểu:
1. Đầu tiên, log sẽ được đưa đến Fluentd. (Ví dụ như log access server
nginx/apache, log do develop setting trong source php/java vv. miễn là ghi
ra file log).
2. Fluentd 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 (server nào, độ nghiêm trọng, nội dung log) ra, sau đó ghi xuống
database là Elasticsearch.
lOMoARcPSD| 48704538
3
3. 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ý.
4. Log có nhiều loại (tag), do developer định nghĩa chẳng hạn access_log
error_log, peformance_log, api_log. Khi Fluentd đọc log phân loại từng
loại log rồi gửi đến Elasticsearch, giao diện Kibana chúng ta chỉ cần add
một số filter như access_log chẳng hạn và query.
III . Tại sao phải dùng EFK Stack?
Với các hệ thống hoặc ứng dụng nhỏ, ta không cần sử dụng EFK stack làm gì! Cứ
dùng thư viện ghi log đi kèm với ngôn ngữ, sau đó ghi log ra file rồi đọc thôi!
Tuy nhiên, với những hệ thống lớn nhiều người dùng, nhiều service phân n
(microservice), nhiều server chạy cùng lúc… thì việc ghi log xuống file không
còn hiệu quả nữa. Đơn giản 1 ví dụ quản lý log bằng cách ghi xuống file như thông
thường nãy sinh vấn đề như sau:
Giả sử bạn 10 con server web (có log nginx, apache, log fronted, backend, api,
batch vv) chạy cùng lúc, bạn sẽ phải lục tung 10 con server này để đọc tìm file
log, cực quá phải không nào? Lúc này, người ta bắt đầu áp dụng centralized logging,
tức ghi log tập trung vào 1 chỗ.
Việc tập trung 1 chổ và query bằng giao diện Kinaba giúp tìm log nhanh chóng
bất kỳ server nào, loại log gì. Thật tuyệt vời đúng không.
IV . Triển khai trong thực tế
Về triển khai Elasticsearch Fluentd Kibana. Các bạn thể cài tất cả cùng trên 1
máy. Việc cài đặt mình nghĩ không khó đối với anh em developer, trong bài viết này
mình không trình bày cụ thể việc cài đặt như thế nào.
Hiện tại dự án mình dùng Ansible Docker và mình xin chia sẽ cách triển khai trên
môi trường test. Việc scale dùng ansible hay docker rất dễ dàng, nên mình chỉ trình
bày cấu trúc đơn giản nhất.
1. Về bản mình rất nhiều server chứa log, cần tập hợp hết các log này lại
1 server.
lOMoARcPSD| 48704538
4
2. Các server chứa log (Fluentd agent) chúng ta cài đặt Fluentd, sử dụng plugin
forwarder: plugin đơn giản là cách cấu hình để gửi log đến server Tập hợp
log(Fluentd aggregator)
3. Tại server tập hợp log (Fluentd aggregator) chúng ta cài Fluentd với plugin
Elasticsearch với mc đích là chuyển log đến cơ sở dữ liệu ES
( Elasticsearch). chỉ nên dùng đúng 1 server tập hợp log.
4. ES server có thể có nhiều hơn 1 server dùng để chứa dữ liệu log được gửi về
từ nhiều Fluent forwarder server.
5. Kibana thể tách riêng thành 1 server riêng hoặc cài chung trên ES server,
có thể dùng nhiều server cài Kibana (dùng Load Balanceing).
lOMoARcPSD| 48704538
5
PHẦN 2 – HƯỚNG DẪN CÀI ĐẶT VÀ SETUP ELK STACK CHO
SPRING BOOT
I. Tải ElasticSearch, Kibana, Logstash từ trang chủ
Tải elasticsearch ở đường dẫn
https://www.elastic.co/downloads/elasticsearch
Tải kibana ở đường dẫn
https://www.elastic.co/downloads/kibana
Tải logstash ở đường dẫn
https://www.elastic.co/downloads/logstash
II. Cài đặt và cấu hình ElasticSearch và Kibana
1. Elasticsearch
Mở cmd thư mục cài đặt elasticsearch, vào /bin, chạy file elasticsearch.bat
trên cmd
Bây giờ ta có thể truy cập elasticsearch với đường dẫn https://localhost:9200
Ở lần đầu tiên truy cập sẽ yêu cầu username và password
Vào một cmd mới gõ lệnh elasticsearch-reset-password -u elastic và chạy
lOMoARcPSD| 48704538
6
Nhập y để tiếp tục, password sẽ tự được gen và show trên cmd, nhớ lưu lại
để sử dụng đăng nhập kibana về sau
Nhập username là ‘elastic’ và password trên để vào https://localhost:9200
lOMoARcPSD| 48704538
7
Kibana
Cấu hình lại file kibana.yml trong /config của thư mục cài
Chạy file kibana.bat trong /bin bằng cmd
Có thể phải đợi thời gian khá lâu
Màn hình cmd lần đầu chạy
Truy cập bằng đường dẫn http://localhost:5601
Ở lần đầu tiên chạy, kibana sẽ đòi token
elasticsearch.url: "http://localhost:9200"
lOMoARcPSD| 48704538
8
Vào cmd mới trong thư mục /bin của elasticsearch gõ lệnh elasticsearch-
create-enrollment-token -s elastic
Enrollment token sẽ được sinh ra, copyđiền vào kibana và chọ
Configure Elastic.
Đăng nhập vào kibana với username Elastic và password lưu ở trên III.
Cấu hình logstash và project Spring Boot
Tạo file logstash config trong /bin của thư mục cài logstash
lOMoARcPSD| 48704538
9
lOMoARcPSD| 48704538
10
Tạo một project spring boot với log trả về vị trí mình muốn
Cấu hình cho file config logstash gồm 3 đối tượng input, filter, output
Mở folder /bin trong thư mục cài logstash chạy lệnh logstash -f logstash.conf
lOMoARcPSD| 48704538
11
Chạy project spring boot
Sau khi chạy project sẽ tự sinh file log trong đường dẫn cấu hình từ trước
lOMoARcPSD| 48704538
12
| 1/12

Preview text:

lOMoAR cPSD| 48704538 TÀI LIỆU
GIỚI THIỆU VÀ CÀI ĐẶT ELK STACK LƯU HÀNH NỘI BỘ Phiên bản: v 1.0 Ngày ban hành: 10/06/2022
PHẦN 1 – ELK STACK LÀ GÌ I . Khái nhiệm: Fluentd:
● "Fluentd" is an open-source tool to collect events and logs. http://fluentd.org/ 1 lOMoAR cPSD| 48704538
● Fluentd là một phần mềm trung gian tuyệt vời dựa trên Ruby dùng để đọc, xử lý và gửi log.
● Fluentd cũng có thể được mở rộng bằng cách viết plugin, hiện nay có nhiều plugin đã được develop và
public. http://fluentd.org/plugin/ Elasticsearch:
● sử dụng cơ sở dữ liệu NoSQL dựa trên nền tảng của Apache Lucene engine.
Dùng để lưu trữ dữ liệu và cung cấp interface cho phép truy vấn đến cơ sở dữ liệu.
● Elasticsearch là một công cụ tìm kiếm mã nguồn mở được phát triển bởi công ty Elastic.
● Bạn có thể nhanh chóng trích xuất các tài liệu chứa các từ mong muốn từ một số lượng lớn document.
● Vì Elasticsearch không phải là cơ sở dữ liệu quan hệ, nên các câu lệnh SQL
không thể được sử dụng.Thay vào đó nó hoạt động bằng cách sử dụng RESTful interface.
● Bạn có thể gặp khó khăn vì đã quen thuộc với cơ sở dữ liệu quan hệ như
Oracle, MySQL vv. Tuy nhiên Elasticsearch API rất đơn giản, bạn không cần quá lo lắng nhé.
Kibana: Đây là giao diện sử dụng dành cho người dùng trên môi trường web. Kibana
sẽ sử dụng Elashtichsearch để tìm kiếm các dữ liệu phù hợp với yêu cầu của người dùng.
II . Cơ chế hoạt động:
Cơ chế hoạt động của EFK Stack cũng khá đơn giản, các bạn xem hình sẽ hiểu:
1. Đầu tiên, log sẽ được đưa đến Fluentd. (Ví dụ như log access server
nginx/apache, log do develop setting trong source php/java vv. miễn là có ghi ra file log).
2. Fluentd 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 (server nào, độ nghiêm trọng, nội dung log) ra, sau đó ghi xuống database là Elasticsearch. 2 lOMoAR cPSD| 48704538
3. 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ý.
4. Log có nhiều loại (tag), do developer định nghĩa chẳng hạn access_log
error_log, peformance_log, api_log. Khi Fluentd đọc log và phân loại từng
loại log rồi gửi đến Elasticsearch, ở giao diện Kibana chúng ta chỉ cần add
một số filter như access_log chẳng hạn và query.
III . Tại sao phải dùng EFK Stack?
Với các hệ thống hoặc ứng dụng nhỏ, ta không cần sử dụng EFK stack làm gì! Cứ
dùng thư viện ghi log đi kèm với ngôn ngữ, sau đó ghi log ra file rồi đọc thôi!
Tuy nhiên, với những hệ thống lớn nhiều người dùng, có nhiều service phân tán
(microservice), có nhiều server chạy cùng lúc… thì việc ghi log xuống file không
còn hiệu quả nữa. Đơn giản 1 ví dụ quản lý log bằng cách ghi xuống file như thông
thường nãy sinh vấn đề như sau:
Giả sử bạn có 10 con server web (có log nginx, apache, log fronted, backend, api,
batch vv) chạy cùng lúc, bạn sẽ phải lục tung 10 con server này để đọc và tìm file
log, cực quá phải không nào? Lúc này, người ta bắt đầu áp dụng centralized logging,
tức ghi log tập trung vào 1 chỗ.
Việc tập trung 1 chổ và query bằng giao diện Kinaba giúp tìm log nhanh chóng ở
bất kỳ server nào, loại log gì. Thật tuyệt vời đúng không.
IV . Triển khai trong thực tế
Về triển khai Elasticsearch Fluentd Kibana. Các bạn có thể cài tất cả cùng trên 1
máy. Việc cài đặt mình nghĩ không khó đối với anh em developer, trong bài viết này
mình không trình bày cụ thể việc cài đặt như thế nào.
Hiện tại dự án mình dùng Ansible và Docker và mình xin chia sẽ cách triển khai trên
môi trường test. Việc scale dùng ansible hay docker rất dễ dàng, nên mình chỉ trình
bày cấu trúc đơn giản nhất.
1. Về cơ bản mình có rất nhiều server chứa log, cần tập hợp hết các log này lại 1 server. 3 lOMoAR cPSD| 48704538
2. Các server chứa log (Fluentd agent) chúng ta cài đặt Fluentd, sử dụng plugin
forwarder: plugin đơn giản là cách cấu hình để gửi log đến server Tập hợp log(Fluentd aggregator)
3. Tại server tập hợp log (Fluentd aggregator) chúng ta cài Fluentd với plugin
Elasticsearch với mục đích là chuyển log đến cơ sở dữ liệu ES
( Elasticsearch). chỉ nên dùng đúng 1 server tập hợp log.
4. ES server có thể có nhiều hơn 1 server dùng để chứa dữ liệu log được gửi về
từ nhiều Fluent forwarder server.
5. Kibana có thể tách riêng thành 1 server riêng hoặc cài chung trên ES server,
có thể dùng nhiều server cài Kibana (dùng Load Balanceing). 4 lOMoAR cPSD| 48704538
PHẦN 2 – HƯỚNG DẪN CÀI ĐẶT VÀ SETUP ELK STACK CHO SPRING BOOT I.
Tải ElasticSearch, Kibana, Logstash từ trang chủ
Tải elasticsearch ở đường dẫn
https://www.elastic.co/downloads/elasticsearch
Tải kibana ở đường dẫn
https://www.elastic.co/downloads/kibana
Tải logstash ở đường dẫn
https://www.elastic.co/downloads/logstash II.
Cài đặt và cấu hình ElasticSearch và Kibana 1. Elasticsearch
Mở cmd thư mục cài đặt elasticsearch, vào /bin, chạy file elasticsearch.bat trên cmd
Bây giờ ta có thể truy cập elasticsearch với đường dẫn https://localhost:9200
Ở lần đầu tiên truy cập sẽ yêu cầu username và password
Vào một cmd mới gõ lệnh elasticsearch-reset-password -u elastic và chạy 5 lOMoAR cPSD| 48704538
Nhập y để tiếp tục, password sẽ tự được gen và show trên cmd, nhớ lưu lại
để sử dụng đăng nhập kibana về sau
Nhập username là ‘elastic’ và password trên để vào https://localhost:9200 6 lOMoAR cPSD| 48704538 Kibana
Cấu hình lại file kibana.yml trong /config của thư mục cài
elasticsearch.url: "http://localhost:9200"
Chạy file kibana.bat trong /bin bằng cmd
Có thể phải đợi thời gian khá lâu
Màn hình cmd lần đầu chạy
Truy cập bằng đường dẫn http://localhost:5601
Ở lần đầu tiên chạy, kibana sẽ đòi token 7 lOMoAR cPSD| 48704538
Vào cmd mới trong thư mục /bin của elasticsearch gõ lệnh elasticsearch-
create-enrollment-token -s elastic
Enrollment token sẽ được sinh ra, copy và điền vào kibana và chọ Configure Elastic.
Đăng nhập vào kibana với username Elastic và password lưu ở trên III.
Cấu hình logstash và project Spring Boot
Tạo file logstash config trong /bin của thư mục cài logstash 8 lOMoAR cPSD| 48704538 9 lOMoAR cPSD| 48704538
Tạo một project spring boot với log trả về vị trí mình muốn
Cấu hình cho file config logstash gồm 3 đối tượng input, filter, output
Mở folder /bin trong thư mục cài logstash chạy lệnh logstash -f logstash.conf 10 lOMoAR cPSD| 48704538 Chạy project spring boot
Sau khi chạy project sẽ tự sinh file log trong đường dẫn cấu hình từ trước 11 lOMoAR cPSD| 48704538 12