Thu thập và truy vấn logs Kubernetes với Grafana Loki, Grafana và Grafana Agent (phần 2)
Mở đầu
Trong phần trước ta đã nói về cách triển khai Grafana, Loki và Grafana Agent
Phần này ta sẽ tiếp tục nói về:
- Truy vấn và xem dữ liệu log Kubernetes bằng Grafana
- Sử dụng truy vấn số liệu để tạo số liệu từ log
- Thiết lập cảnh báo từ log
Quản lý log trong Grafana
Trong phần này sẽ hướng dẫn sử dụng Grafana để truy vấn logs, tạo ra các metrics từ log và tạo các cảnh báo từ metrics đó.
How to query logs in Grafana
Loki sử dụng LogQL một ngôn ngữ truy vấn lấy cảm hứng từ PromQL, để lọc các luồn logs từ Kubernetes labels. Đồng thời log querry cho phép thực hiện 2 loại query, log query và metrics query.
Bắt đầu với log query, ta sẽ truy cập Grafana Explore
bằng cách bấm vào biểu tượng la bàn ở bên trái. Ta sẽ dùng Query Builder để dựng các truy vấn nếu như chưa quen với cú pháp LogQL để dựng các truy vấn. Tuy nhiên trong bài viết sẽ sử dụng LogQL nên sẽ truy cập vào tab Code
như sau:
Ta sẽ sử dụng {label="label selector"}
trong bài viết này, ta sẽ thử lấy output từ stderr sử dụng đoạn code LogQL sau trong Label browser:
`{stream="stderr"} |= ```
Ở bảng phía trên ta có thể thấy khối lượng log được. Còn ở phía dưới là danh sách log tương đương khi dùng câu lệnh kubectl logs
.
Cách thực hiện truy vấn metrics bằng Grafana
Trong LogQL có thể pipe các regex vào log. Ví dụ như có thể lấy log chưa giá trị level=error
từ luồng stderr
như sau:
{stream="stderr"} |= `level=error`
Khả năng có thể pipe nhiều truy vấn và regex như vậy có thể tạo ra câu truy vấn phức tạp. Tuy Vậy vẫn chỉ là log query, để có được metrics query thì ta cần sử dụng các hàm phù hợp như sau:
Ví dụ:
count_over_time({stream="stderr"} |= `level=error` [5m])
Mục đích của hàm count_over_time
là để đếm lượng log truy vấn được trong 1 khoảng thời gian, như trên là mỗi 5p
Sau khi đưa vào chạy lệnh truy vấn. Kết quả có thể thấy như sau:
Ta có thể đưa lên dashboard bằng nút Add to dashboard :
Ví dụ đưa lên dashboard:
Như vậy ta đã có thể xem log và metrics 1 cách dễ dàng, nhưng làm sao để biết được khi có vấn đề xảy ra. Ta sẽ cần đặt một cảnh báo:
Cách cài đặt cánh báo từ grafana log
Cảnh báo log là một trong những tính năng hữu dụng của Grafana. Để cài đặt cảnh báo, ta bấm vào hình cái chuông ở bên trái để truy cập vào mục Alerting.
Bấm Create alert rule sẽ đưa đến Explore, ta sẽ sử dụng lệnh truy vấn LogQL như cũ để tạo cảnh báo. Một biểu đồ hiện lên nhưng lần này có 1 vạch đỏ, vạch này sẽ hiển thị mức cảnh báo
Ta sẽ đặt cảnh báo lên mức 50. Ta có thể tất cả các cảnh báo đều vượt qua ngưỡng.
Sau khi xong có thể save lại
Khi quá ngưỡng sẽ có cảnh báo
Kubernetes có một thiếu sót là hệ thống là nó không cung cấp giải pháp lưu trữ cho logs.
Bài viết này đã hướng dẫn cách triển khai giải pháp ghi logs cho Kubernetes với Grafana Loki . Đồng thời cũng hướng dẫn cách sử dụng Grafana để trực quan hóa logs mà còn hướng dẫn tạo các truy vấn để lấy thông tin logs hiệu quả hơn và thiết lập cảnh báo dựa trên metrics/ logs.
>> Có thể bạn quan tâm: Cách triển khai Nginx Ingress với Cert-Manager trên Bizfly Kubernetes Engine