Đã bao giờ bạn ngồi trước màn hình, tim đập thình thình vì một alert đỏ lòm từ Grafana báo "API 500 Internal Server Error" lúc 3 giờ sáng không? Cá nhân tôi thì quá quen với cảm giác này rồi. Hôm qua mình cũng gặp trường hợp tương tự khi đang ngủ mê thì chuông điện thoại reo. Mở máy lên là thấy dashboard của Prometheus đang vẽ biểu đồ tăng vọt một cách kinh hoàng, CPU server chạy full 100%.
Thật ra, hồi mới làm dev, mình nghĩ Monitoring và Logging là hai thứ xa xỉ. Code chạy được là tốt, làm gì phải setup cả Prometheus hay Loki phức tạp vậy? Nhưng sau vài lần "đốt cháy" production vì không biết lỗi ở đâu, mình nhận ra mình đã sai lầm. Khi hệ thống nhỏ thì còn chịu được, nhưng khi scale lên vài container, hàng trăm request mỗi giây, nếu không có dữ liệu thì bạn như đi trong sương mù vậy.
Gần đây mình đang thử nghiệm combo Prometheus + Grafana cho metrics và Loki cho logging. Cảm giác như được mở mắt nhìn thấy toàn bộ hệ thống. Cái hay nhất của Loki là nó không parse toàn bộ log như Elasticsearch (ELK stack) nên nhẹ hơn rất nhiều, chi phí server cũng rẻ hơn. Thay vì crawl toàn bộ log, nó chỉ lưu các metadata và chỉ khi bạn query mới parse content ra. Ví dụ mình muốn tìm log lỗi của service A trong 1 giờ qua, mình sẽ dùng lệnh query kiểu như này:
{app="payment-service", env="prod"} | json | _level_="error"
Chỉ với một dòng query đơn giản như thế, Grafana lập tức vẽ ra biểu đồ tần suất lỗi theo thời gian kèm danh sách log chi tiết. Cảm giác như có phép màu vậy. Trước đây mình phải login SSH vào từng server, dùng grep "error" *.log | tail -n 50 để mò mẫm, tốn cả tiếng đồng hồ mà vẫn chưa chắc tìm ra nguyên nhân gốc rễ.
Tuy nhiên, cũng có một chút "ganh tị" với các đồng nghiệp dùng ELK. ELK mạnh về phân tích sâu, full-text search cực xịn, nhưng cái giá phải trả là nặng nề và phức tạp khi maintain. Đối với một team nhỏ hay project vừa và nhỏ, mình nghĩ combo Prometheus-Grafana-Loki mới là lựa chọn hợp lý nhất (best balance). Đừng để công nghệ làm bạn mệt, hãy để nó phục vụ bạn. Nếu bạn đang đau đầu vì không biết debug cái gì khi server sập, hãy thử setup Prometheus và Loki đi, tin mình, trải nghiệm debug sẽ thay đổi hoàn toàn!