Hướng Dẫn Chi Tiết Về Grafana Loki Trên Kubernetes
Phần 1: Tổng Quan và Kiến Trúc
Giới thiệu về Grafana Loki
Grafana Loki là một hệ thống quản lý và lưu trữ log mạnh mẽ dành cho các hệ thống phân tán. Nó được phát triển nhằm làm việc cùng với Grafana, một công cụ giám sát mã nguồn mở nổi tiếng, mang đến giải pháp toàn diện cho việc giám sát hệ thống.
Nói một cách đơn giản, Loki tự động thu thập log từ các pod và container trong Kubernetes, rồi hiển thị chúng trên bảng điều khiển Grafana. Điều này có nghĩa là khi bạn triển khai một pod hoặc container mới, không cần phải thực hiện bất kỳ cấu hình nào; Loki sẽ tự động nhận và hiển thị log của chúng.
Với Grafana Loki, việc xem log trở nên dễ dàng và thuận tiện như việc lướt Facebook. Đối với những người lập trình viên, log đóng vai trò rất quan trọng trong việc phát hiện lỗi và khắc phục sự cố trong quá trình phát triển phần mềm.
Kiến trúc của Grafana Loki
Loki được xây dựng trên cơ sở nhiều thành phần (hoặc module) khác nhau, trong đó có bốn thành phần chính: Distributor, Ingester, Querier và Query Frontend.
📬 Distributor
Module Distributor có nhiệm vụ xử lý và xác nhận dữ liệu từ các client. Sau khi xác thực, dữ liệu hợp lệ sẽ được phân chia và gửi đến nhiều ingester để tiến hành xử lý song song, đảm bảo tốc độ xử lý tốt nhất.
📥 Ingester
Module Ingester chịu trách nhiệm ghi lại dữ liệu vào kho lưu trữ dài hạn. Loki sử dụng một phương pháp lưu trữ hiệu quả bằng cách chỉ lưu lại siêu dữ liệu (metadata) thay vì toàn bộ nội dung log. Các loại kho lưu trữ bạn có thể sử dụng bao gồm AWS S3, Apache Cassandra, hoặc hệ thống tệp cục bộ.
🕵️♂️ Querier
Module Querier là thành phần thực hiện các truy vấn từ người dùng đến các ingester và kho lưu trữ. Các truy vấn này sẽ ưu tiên thực hiện trên lưu trữ cục bộ trước, sau đó mới đến lưu trữ dài hạn.
🔍 Query Frontend
Module Query Frontend tạo ra các điểm cuối API cho các truy vấn, giúp chia nhỏ các truy vấn lớn thành nhiều truy vấn nhỏ hơn và thực hiện đọc log một cách song song. Điều này rất hữu ích cho những ai mới bắt đầu với Loki mà không muốn phải cấu hình một querier phức tạp ngay từ đầu.
Cách Grafana Loki hoạt động
📡 Lấy Log với Promtail
Promtail là một công cụ thu thập log được phát triển dành riêng cho Loki. Nó sử dụng cơ chế khám phá dịch vụ tương tự như Prometheus, cho phép gán thẻ, biến đổi và lọc log trước khi gửi đến Loki.
🗄️ Lưu trữ log trong Loki
Loki không chỉ mục hóa nội dung log, thay vào đó, nó phân loại log thành các luồng và gán nhãn cho chúng. Điều này không chỉ tiết kiệm chi phí mà còn cho phép các log được truy vấn chỉ trong vài mili giây sau khi được nhận.
🔍 Khám Phá với LogQL
Sử dụng ngôn ngữ truy vấn LogQL của Loki để khám phá log của bạn. Bạn có thể chạy các truy vấn LogQL từ Grafana và xem log của mình bên cạnh các nguồn dữ liệu khác, hoặc sử dụng LogCLI nếu bạn ưa thích dòng lệnh.
🚨 Cảnh báo từ logs
Bạn có thể thiết lập quy tắc cảnh báo cho Loki để đánh giá dữ liệu Syslog. Việc cấu hình Loki để chuyển các cảnh báo đến Prometheus Alertmanager là cần thiết, nơi những cảnh báo này sẽ được định tuyến đến nhóm phù hợp.
Tóm lại, Grafana Loki là một công cụ cực kỳ hiệu quả cho việc lưu trữ và giám sát log trong môi trường phân tán. Với khả năng tự động hóa và tính thân thiện với người dùng, Loki là một giải pháp mà mọi lập trình viên không nên bỏ qua.
source: viblo