Tải bản đầy đủ - 0 (trang)
1 Giới thiệu về ElasticSearch

1 Giới thiệu về ElasticSearch

Tải bản đầy đủ - 0trang

Chương 3. Hệ thống phân tích Log Elastic Stack



ElastichSearch được phát triển bởi Shay Banon và dựa trên Apache Lucene,

ElasticSearch là một bản phân phối mã nguồn mở cho việc tìm kiếm dữ liệu trên máy

chủ. Đây là một giải pháp mở rộng. hỗ trợ tìm kiếm thời gian thực mà khơng cần có

một cấu hình. Nó đã được áp dụng bởi một số công ty bao gồm cả StumbleUpon và

Mozilla.

3.1.1 Một số khái niệm cơ bản trong ElasticSearch

3.1.1.1 Cluster

Là một tập hợp của một hay nhiều máy chủ liên kết với nhau để chứa toàn bộ dữ

liệu, cung cấp khả năng lập chỉ mục và khả năng tìm kiếm trên tất cả các máy chủ

trong một cụm. Một cluster được xác định bởi một tên duy nhất ở trong tâp tin

elasticsearch.yml mà giá trị mặc định là Elasticsearch. Tên này rất quan trọng vì một

máy chủ chỉ có thể là một phần của Cluster nếu máy chủ đó được thiết lập để kết nối

với cluster thông qua tên của cluster được định nghĩa trong tập tin cấu hình

elasticsearch.yml.

3.1.1.2 Node

Một node là một máy chủ đơn được cài đặt ElasticSearch. Đây là một phần của

Cluster dùng để chứa dữ liệu, lập chỉ mục và tìm kiếm. Giống như Cluster, một node

được xác định bởi một tên của nó, mặc định là một UUID ngẫu nhiên được gán vào

node khi khởi động. Người quản trị có thể định nghĩa bất kỳ tên nào nếu khơng muốn

để mặc định. Một node có thể được cấu hình để tham gia vào một cluster thông qua tên

cluster. Mặc định mỗi node được thiết lập để tham gia cluster có tên là Elasticsearch.

Một node sẽ biết thông tin về tất cả các node khác trong cùng một cluster và có thể

chuyển tiếp yêu cầu từ phía client đến node thích hợp. Bên cạnh đó, mỗi node có một

hoặc nhiều mục đích khác nhau. Trong ElasticSearch thường sử dụng Master Eligible

node và Data node thể thực hiện việc điều khiển cluster và xử lý dữ liệu.



T r a n g 26



Chương 3. Hệ thống phân tích Log Elastic Stack



-



Master Eligible node: Một node gọi là master nếu như giá trị node.master trong

tập tin elasticsearch.yml được thiết lập là true. Đây là điều kiện cần để một node

được bầu là master điều khiển cluster. Khi một node master bị sự cố, Những

node trong cluster sẽ bắt đầu bầu chọn lại node làm master.



-



Data node: Là node có thông số node.data được thiết lập true. Data node chứa

dữ liệu và thực hiện các hoạt động liên quan đến dữ liệu như CRUD, tìm kiếm

và tổng hợp dữ liệu.



3.1.1.3 Chỉ mục (Index)

Một chỉ mục là tập hợp các tài liệu có đặc điểm tương tự nhau. Ví dụ: bạn có thể có

một chỉ mục cho dữ liệu khách hàng, một chỉ mục khác cho danh mục sản phẩm, và

một chỉ mục khác cho dữ liệu đặt hàng. Một chỉ mục được xác định bởi tên và tên này

được sử dụng để chỉ vào chỉ mục khi thực hiện các thao tác lập chỉ mục, tìm kiếm, cập

nhật, xóa đối với các tài liệu trong đó.

3.1.1.4 Shard

Mỗi node sẽ có một hoặc nhiều shard. Shard hoạt động ở mức thấp có vai trò lưu

trữ dữ liệu. Elasticsearch quản lý tồn bộ giao tiếp với shard, tự động thay đổi khi cần

thiết. Shard có hai loại là primary shard và replica shard. Khi một index được tạo thì thì

số lượng primary và replica shard được thiết lập.



Hình 3.1. Minh họa việc lưu trữ dữ liệu trên ElasticSearch. [2]

T r a n g 27



Chương 3. Hệ thống phân tích Log Elastic Stack



Như hình trên chúng ta thấy dữ liệu được lưu trữ ở cluster với 4 node, dữ liệu có 2

Priamry Shard là P0 và P1. Mỗi Primary shard có 1 Replica shard là R0 và R1. Việc

sắp đặt vị trí primary shards là ngẫu nhiên, còn các replica ln được đảm bảo là nó

khơng nằm cùng node với primary shard.

3.1.2 Kiến trúc ElasticSearch



Hình 3.2. Kiến trúc ElasticSearch. [3]



Như đã thấy trong hình trên, một chỉ mục có thể chứa một hoặc nhiều loại tài liệu

khác nhau. Một loại tài liệu có thể được hình dung như là một bảng trong cơ sở dữ liệu

quan hệ. Mỗi loại tài liệu có một hoặc nhiều tài liệu. Có một hoặc nhiều trường trong

một tài liệu. Các trường là các cặp giá trị bao gồm tên trường và giá trị của trường.

Một Cluster là tập hợp một hoặc nhiều máy chủ cùng chạy ElasticSearch. Mỗi

Cluster được phân biệt với nhau bởi giá trị cluster.name trong tập tin cấu hình

ElasticSearch. Tương tự như Cluster, các máy chủ ElasticSearch bên trong cũng có một

cái tên để định danh cho máy chủ đó trong hệ thống mạng. Giá trị này được khai báo

trong tham số node.name của tập tin cấu hình. Khi các máy chủ cùng nằm trong một



T r a n g 28



Chương 3. Hệ thống phân tích Log Elastic Stack



cụm ElasticSearch thì việc tính tốn và lưu trữ được phân phối đến tất cả các máy chủ

ở trong cụm.

Khi một chỉ mục có kích thước dữ liệu lớn và vượt qua khả năng lưu trữ của phần

cứng một máy chủ ElasticSearch thì người quản trị chia chỉ mục thành các mảnh

(shard) để phân phối dữ liệu trên các máy chủ ElasticSearch khác ở trong một cluster.

Trong ElasticSearch có 2 loại shard – Primary shard và Replica shard. Mỗi tài liệu

khi được đánh chỉ mục, đầu tiên nó thêm vào primary shard rồi sau đó nhân bản đến

một hoặc nhiều replica shard. Nếu cụm ElasticSearch có nhiều hơn một máy chủ thì

replica shard sẽ ở trên một máy chủ khác. Mặc định khi một chỉ mục được tạo ra,

ElasticSearch tạo ra 5 primary shard và một replica shard cho mỗi primary shard.

Người quản trị có thể thay đổi số lượng replica shard sau khi một chỉ mục được tạo,

nhưng không thể thay đổi số lượng primary shards.

3.1.3 Quá trình lưu trữ, truy xuất dữ liệu trong ElasticSearch

3.1.3.1 Quá trình lưu trữ dữ liệu

Khi một tài liệu được đánh chỉ mục vào lưu trữ vào ElasticSearch, Elasticsearch sẽ

sử dụng công thức sau để chọn shard cho việc lưu trữ dữ liệu

Shard = hash( routing) % number_of_primary_shards [2]

Trong đó

-



Hash: là một hàm tính tốn cố định của Elasticsearch.



-



Routing: là một chuỗi tùy ý, mặc định là _id của tài liệu đó, tuy nhiên giá trị

routing có thể thay đổi được.



-



Number_of_primary_shard: Đây là giá trị primary của cluster.



Giá trị shard này sẽ dùng để xác định shard nào lưu tài liệu nào và cũng dùng để xác

định khi tìm kiếm tài liệu.

T r a n g 29



Chương 3. Hệ thống phân tích Log Elastic Stack



Hình 3.3. Mơ tả q trình lữu trữ dữ liệu trên ElasticSearch [2]



Trong hình trên, khi một yêu cầu được gửi đến node 1 (node master). Lúc này node

1 sẽ thực hiện tính tốn với cơng thức ở trên để tìm ra primary shards của tài liệu sẽ là

0. Sau khi xác định primary shard là 0, yêu cầu sẽ được gửi đến node 3 nơi chứa

Primary shard 0. Node 3 thực hiện xử lý dữ liệu. Sau khi thành cơng, nó sẽ gửi u cầu

đến node 1 và node 2 để đảm bảo dữ liệu thống nhất giữa các node trong cluster.

3.1.3.2 Quá trình truy xuất dữ liệu



Hình 3.4. Mơ tả q trình truy xuất dữ liệu.[2]



T r a n g 30



Chương 3. Hệ thống phân tích Log Elastic Stack



Khi có một truy xuất dữ liệu đến ElasticSearch. Node master sẽ tiếp nhận yêu cầu

gửi đến. Tại node master sẽ xác định các primary shard là 0. Do tất cả ba node đều

chứa dữ liệu nên node master sẽ chọn ra 1 node và lấy dữ liệu ở shard số 0. Thuật toán

Roud-robin được sử dụng để các node được chọn xoay vòng khi nhận yêu cầu xử lý.

Trong trường hợp này node 2 được chọn, replica shard 0 ở node 2 trả về kết quả cho

master node.

3.2 Giới thiệu về Logstash

Logstash được bắt đầu như một sản phẩm trí tuệ của Jordan Sissel, người có kinh

nghiệm nhiều năm trong lĩnh vực vận hành và quản trị hệ thống. Ơng ln gặp những

thách thức khi tìm hiểu sâu về những tập tin log. Một lần ông ta muốn xử lý một số

lượng lớn log, tuy nhiên ơng ta khơng tìm thấy một cơng cụ miễn phí thích hợp nào với

trường hợp này. Vào thời điểm đó, ơng đã bắt tay xây dựng logstash để cung cấp một

cơng cụ cho người dùng có thể xử lý một số lượng lớn các log tại một thời điểm.

Logstash bắt đầu như một sản phẩm riêng lẻ nhưng sau đó ElasticSearch phát triển,

Jordan Sissel gia nhập Elastic để phát triển Logstash mạnh mẽ hơn. Logstash có một số

chức năng mạnh mẽ và khả năng thu thập thời gian thực làm cho nó trở thành cơng cụ

tồn diện để xử lý các bản ghi.

Logstash chủ yếu bắt đầu như một dự án để quản lý các tập tin log nhưng sau đó nó

được mở rộng để phân tích bất kỳ loại dữ liệu nào ví dụ dữ liệu sự kiện, dữ liệu được

đánh dấu thời gian, log của ứng dụng, các dữ liệu giao dịch, dữ liệu CSV… Dữ liệu có

cấu trúc, khơng có cấu trúc hoặc bán cấu trục làm cho nó khó khăn để chuyển đổi dữ

liệu vào một định dạng thích hợp. Logstash giúp chúng ta thu thập dữ liệu từ nhiều hệ

thống vào một hệ thống trung tâm, trong đó dữ liệu có thể được phân tích cú pháp và

xử lý theo u cầu. Ngồi ra Logstash còn giúp thu thập dữ liệu từ nhiều hệ thống và

lưu trữ dữ liệu theo một định dạng phổ biến, dễ dàng sử dụng với ElasticSearch và

Kibana.



T r a n g 31



Chương 3. Hệ thống phân tích Log Elastic Stack



Logstash cho phép người dùng trích xuất, xóa, chuyển đổi và nạp để có được những

thơng tin có giá trị từ dữ liệu. Logstash trích xuất dữ liệu từ nhiều hệ thống, thực hiện

một số thao tác để xử lý hoặc chuyển đổi log, chẳng hạn như lọc dữ liệu, xóa các

trường, thêm các trường, grokking dữ liệu, v.v.. tiếp theo là nạp dữ liệu đã được xử

lý....

Logstash nó có thể xử lý bất kỳ loại dữ liệu nào, nhận dữ liệu từ nhiều nguồn khác

nhau, sau đó sử dụng bộ lọc để chuyển đổi dữ liệu và xuất ra để lưu.

3.2.1 Tính năng của Logstash

-



Mã nguồn mở: Logstash hồn tồn miễn phí và là một cơng cụ mã nguồn mở, có

mã nguồn được cung cấp miễn phí trên GitHub.



-



Tích hợp liền mạch với Elasticsearch, Beats và Kibana.



-



Khả năng mở rộng: Logstash cung cấp nhiều đầu vào, bộ lọc và đầu ra để sử

dụng cho việc xử lý các loại bản ghi khác nhau. Nó cung cấp sự linh hoạt để tạo

ra và phát triển đầu vào, bộ lọc, hoặc kết quả đầu ra cho Logstash.



-



Khả năng tương tác: Logstash cung cấp khả năng tương tác để sử dụng nó với

các thành phần và cơng cụ khác nhau. Logstash có thể lấy dữ liệu từ các cơng cụ

khác nhau và xuất dữ liệu vào các công cụ khác nhau, làm cho nó dễ dàng hơn

để sử dụng.



Đây là mấu chốt và trái tim đằng sau kiến trúc của Logstash vì nó cung cấp sự linh

hoạt hơn. Để hiểu nó tốt hơn, chúng ta hãy xem ví dụ sau: Giả sử có một cơng cụ hoặc

phần mềm mới mà bạn sử dụng để lưu trữ dữ liệu. Logstash hiện không hỗ trợ kết nối

đầu ra để lưu trữ dữ liệu của bạn trong đó. Bạn có thể dễ dàng phát triển một plugin

trong đó bạn viết một đoạn mã để lưu trữ dữ liệu trong công cụ yêu cầu bằng cách sử

dụng một tập hợp các tham số. Sau khi tạo một plugin, bạn có thể sử dụng plugin trực

tiếp trong Logstash. Không cần phải đi qua mã nguồn của Logstash, bạn đã dễ dàng



T r a n g 32



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

1 Giới thiệu về ElasticSearch

Tải bản đầy đủ ngay(0 tr)

×