avatar

Ngày 80 - ELK Stack

Giới thiệu về ELK Stack và cách sử dụng Elasticsearch, Logstash, và Kibana để thu thập, phân tích, và trực quan hóa log từ nhiều nguồn khác nhau một cách hiệu quả

Đăng vào
10 phút

Nội dung

title

Mục lục

ELK Stack

Trong buổi này, chúng ta sẽ thực hành với một số tùy chọn mà chúng ta đã đề cập.

ELK Stack là sự kết hợp của 3 công cụ riêng biệt:

  • Elasticsearch là một công cụ tìm kiếm và phân tích miễn phí và mở rộng cho mọi loại dữ liệu, bao gồm dữ liệu văn bản, số, địa lý, cấu trúc và phi cấu trúc.

  • Logstash là một đường dẫn xử lý dữ liệu phía máy chủ miễn phí mã nguồn mở, nhận dữ liệu từ nhiều nguồn, chuyển đổi dữ liệu, và sau đó gửi nó đến nơi lưu trữ phù hợp.

  • Kibana là một giao diện người dùng miễn phí mã nguồn mở cho phép bạn trực quan hóa dữ liệu từ Elasticsearch và điều hướng trong Elastic Stack. Bạn có thể làm mọi thứ từ theo dõi tải truy vấn đến hiểu cách các yêu cầu luân chuyển qua các ứng dụng của bạn.

ELK stack cho phép chúng ta thu thập dữ liệu từ bất kỳ nguồn nào, ở bất kỳ định dạng nào, sau đó tìm kiếm, phân tích và trực quan hóa nó trong thời gian thực.

Ngoài các thành phần đã đề cập, bạn cũng có thể thấy Beats, là những tác nhân nhẹ được cài đặt trên các máy chủ biên để thu thập các loại dữ liệu khác nhau và chuyển tiếp vào stack.

  • Logs: Log máy chủ cần được phân tích được xác định.

  • Logstash: Thu thập log và dữ liệu sự kiện. Nó thậm chí còn phân tích và chuyển đổi dữ liệu.

  • Elasticsearch: Dữ liệu đã được chuyển đổi từ Logstash được lưu trữ, tìm kiếm và lập chỉ mục.

  • Kibana sử dụng cơ sở dữ liệu Elasticsearch để khám phá, trực quan hóa và chia sẻ.

Hình ảnh từ Guru99

Một tài nguyên tốt giải thích về Hướng dẫn hoàn chỉnh về ELK Stack

Với sự bổ sung của Beats, ELK Stack cũng được gọi là Elastic Stack.

Trong kịch bản thực hành, có nhiều nơi bạn có thể triển khai Elastic Stack nhưng chúng ta sẽ sử dụng docker-compose để triển khai cục bộ trên hệ thống của mình.

Bắt đầu Elastic Stack với Docker Compose

Bạn sẽ tìm thấy các tệp gốc và hướng dẫn mà tôi đã sử dụng tại đây deviantony/docker-elk

Bây giờ chúng ta có thể chạy docker-compose up -d, lần chạy đầu tiên sẽ yêu cầu tải các images.

Nếu bạn theo dõi repository này hoặc repository mà tôi đã sử dụng, bạn sẽ có mật khẩu là "changeme" hoặc trong repository của tôi là "90DaysOfDevOps". Tên người dùng là "elastic".

Sau vài phút, chúng ta có thể truy cập http://localhost:5601/ là máy chủ Kibana / container Docker của chúng ta.

Màn hình chính ban đầu của bạn sẽ trông giống như thế này.

Dưới phần "Get started by adding integrations", có một phần "try sample data", nhấp vào đây và chúng ta có thể thêm một trong những dữ liệu mẫu bên dưới.

Tôi sẽ chọn "Sample weblogs" nhưng điều này thực sự chỉ để có cái nhìn và cảm nhận về các tập dữ liệu bạn có thể nhập vào ELK stack.

Khi bạn đã chọn "Add Data", việc này sẽ mất một thời gian để nhập một số dữ liệu đó và sau đó bạn sẽ có tùy chọn "View Data" và danh sách các cách xem dữ liệu có sẵn trong dropdown.

Như được ghi trên bảng điều khiển:

Dữ liệu Log Mẫu

Bảng điều khiển này chứa dữ liệu mẫu để bạn khám phá. Bạn có thể xem, tìm kiếm và tương tác với các trực quan hóa. Để biết thêm thông tin về Kibana, hãy kiểm tra tài liệu của chúng tôi.

Đây là việc sử dụng Kibana để trực quan hóa dữ liệu đã được thêm vào Elasticsearch thông qua Logstash. Đây không phải là tùy chọn duy nhất nhưng tôi muốn triển khai và xem qua nó.

Chúng ta sẽ đề cập đến Grafana vào lúc nào đó và bạn sẽ thấy một số điểm tương đồng trong việc trực quan hóa dữ liệu giữa hai công cụ này, bạn cũng đã thấy Prometheus.

Điểm mấu chốt mà tôi nhận thấy giữa Elastic Stack và Prometheus + Grafana là Elastic Stack hoặc ELK Stack tập trung vào log, còn Prometheus tập trung vào metrics.

Tôi đã đọc bài viết này từ MetricFire Prometheus vs. ELK để hiểu rõ hơn về các dịch vụ khác nhau.

Tài liệu tham khảo

Hẹn gặp lại vào ngày 81.

Các bài viết là bản tiếng Việt của tài liệu 90DaysOfDevOps của Micheal Cade và có qua sửa đổi, bổ sung. Tất cả đều có license [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].