8.1 Thiết lập index cho log Docker
Để demo, mình đã tạo một Docker image chứa ELK và Filebeat, cùng một chương trình test để generate log. Trong ví dụ này, tụi mình sẽ tập trung vào thiết lập index cho log Docker trong Kibana.
Bước 1: Clone repo và chạy ELK stack
Tải repo chứa cấu hình Docker Compose cho ELK stack và chạy nó:
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker compose up
Để tiện hơn, flag -d
được bỏ qua, để bạn có thể xem quá trình khởi chạy ELK stack. Việc khởi chạy có thể mất vài phút. Sau khi thành công, log sẽ có dòng thông báo:
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],
"pid":6,"message":"http server running at http://0:5601"}
Bước 2: Truy cập vào Kibana
Mở trình duyệt web và truy cập vào địa chỉ http://localhost:5601.

Bước 3: Thiết lập index cho log
Chọn menu bên trái của Kibana mục Discover để vào trang tạo index.

Bước 4: Tạo index mới
Nhấn nút Create index pattern để mở form cấu hình. Trong ô Index pattern name, nhập logstash-*
. Nếu đúng, Kibana sẽ hiển thị các index phù hợp với quy tắc này.

Bước 5: Chọn trường thời gian
Ở trang tiếp theo, chọn trường chứa timestamp — @timestamp
.

Bước 6: Kiểm tra index
Sau khi hoàn tất cấu hình, bạn sẽ thấy trang thiết lập index. Hiện tại không cần làm gì thêm.

Bước 7: Xem log
Quay lại mục Discover, nơi sẽ hiển thị các bản ghi log từ Docker container.

8.2 Tạo dashboard để visual hóa logs
Bước 1. Tạo các dashboard để visual hóa logs
Ở menu bên trái, nhấn vào mục "Dashboard" — nó sẽ đưa tụi mình đến trang nơi tạo dashboard.

Bước 2. Tap vào «Create new dashboard», sẽ dẫn tụi mình đến màn hình để thêm các object vào Dashboard đó luôn.

Bước 3. Nhấn nút «Create new», và Kibana sẽ gợi ý cách để hiển thị dữ liệu. Có nhiều lựa chọn ở đó, nhưng ví dụ sẽ chỉ hai cái — biểu đồ kiểu «Vertical Bar» và dạng bảng «Data Table». Mấy thứ khác thì configurate tương tự nhau thôi.

8.3 Biểu đồ histogram cho logs
Nào, chúng ta hãy thử làm một biểu đồ dạng “Vertical Bar” để hiển thị tỷ lệ giữa các request thành công và không thành công của service. Sau khi cấu hình, chúng ta sẽ có cái gì đó như thế này:

Request thành công là những request có mã phản hồi < 400, còn tất cả >= 400 được coi là lỗi.
Đầu tiên chúng ta cần chọn nguồn dữ liệu cho biểu đồ. Sử dụng Index Pattern đã tạo trước đó.

Sau khi chọn nguồn dữ liệu, mặc định sẽ xuất hiện một biểu đồ tổng quát. Hãy cấu hình lại nó.

Trong phần «Buckets» bấm «Add», chọn «X-axis» và cấu hình trục X. Trục này sẽ hiển thị dấu thời gian. Trong ô «Aggregation» chọn «Date Histogram», và trong «Field» chỉ định «@timestamp». Ô «Minimum interval» có thể để «Auto».

Nhấn «Update», và biểu đồ sẽ hiển thị số lượng request mỗi 30 giây.

Bây giờ chúng ta sẽ cấu hình các cột trên trục Y. Hiện tại đang hiển thị tổng số request trong khoảng thời gian. Hãy thay đổi phần aggregation thành «Sum Bucket» để bổ sung cả request thành công và lỗi. Trong phần Bucket → Aggregation chọn «Filters» và đặt filter: «statusCode >= 400». Trong ô «Custom label» viết tên dễ hiểu cho metric.

Nhấn «Update», và biểu đồ sẽ chỉ hiển thị những request lỗi.

Bạn muốn thay đổi màu cột không? Nhấn vào vòng tròn trong phần legend của biểu đồ, một cửa sổ chọn màu sẽ hiện ra.

Bây giờ thêm dữ liệu về các request thành công. Trong phần «Metrics» nhấn «Add» và chọn «Y-axis». Cấu hình tương tự, nhưng trong filter chỉ định «statusCode < 400».

Thay đổi màu cho cột mới, và chúng ta sẽ có trực quan hóa tỷ lệ giữa request thành công và lỗi.

Đừng quên lưu biểu đồ bằng cách nhấn «Save» ở phần trên của màn hình. Đặt tên cho nó, và nó sẽ xuất hiện trên Dashboard.

8.4 Bảng logs
Hãy tạo bảng «Data Table» để thấy danh sách tất cả các URL đã được yêu cầu và số lượng yêu cầu tương ứng. Bắt đầu, giống như khi làm với Vertical Bar, với việc chọn nguồn dữ liệu.

Sau khi chọn nguồn dữ liệu, trên màn hình sẽ xuất hiện bảng với một cột, nơi hiển thị tổng số lượng yêu cầu trong khoảng thời gian được chọn.

Bây giờ hãy cấu hình bảng. Đi đến phần «Buckets», nhấn «Add» và chọn «Split rows».

Trong trường «Aggregation», chọn «Terms», và trong «Field», chọn «url.keyword».

Trong trường «Custom label», nhập một cái tên dễ hiểu, ví dụ như «Url». Sau đó nhấn «Update» — và bảng của chúng ta đã sẵn sàng. Trong bảng hiển thị số lượng yêu cầu cho mỗi URL trong khoảng thời gian được chọn.

Để lưu bảng, nhấn «Save» ở phần trên màn hình, đặt tên (ví dụ như «Urls»), và quay trở lại Dashboard. Bây giờ chúng ta thấy cả hai hình ảnh mà mình đã tạo.

GO TO FULL VERSION