Grafana là nền tảng mã nguồn mở để trực quan hoá và giám sát dữ liệu vận hành. Bài này làm rõ Grafana giải quyết vấn đề gì, ba trụ cột observability (metrics, logs, traces), các khái niệm nền tảng (Data source, Dashboard, Panel...) và luồng dữ liệu từ giao diện xuống nguồn.
Grafana là công cụ trực quan hoá & giám sát: bạn kết nối tới một hay nhiều data source (Prometheus, Loki, MySQL, PostgreSQL, Elasticsearch...), viết truy vấn, rồi dựng dashboard gồm nhiều panel để theo dõi hệ thống theo thời gian thực và nhận cảnh báo khi có bất thường.
Điểm mấu chốt: Grafana không lưu trữ dữ liệu của bạn. Nó chỉ truy vấn nguồn mỗi lần render và vẽ kết quả. Vì vậy Grafana là lớp "mặt tiền" đứng trên các hệ thống lưu trữ metrics/logs khác nhau, gom tất cả về một giao diện. Các trường hợp dùng điển hình:
Grafana thường được nhắc trong bối cảnh observability — khả năng hiểu trạng thái bên trong hệ thống qua dữ liệu nó phát ra. Có ba loại tín hiệu (signals):
| Trụ cột | Là gì | Nguồn thường dùng với Grafana |
|---|---|---|
| Metrics | Con số đo theo thời gian (time series): CPU %, request/s, độ trễ. Nhẹ, tổng hợp tốt, hợp để cảnh báo. | Prometheus, Graphite, InfluxDB |
| Logs | Bản ghi sự kiện dạng text kèm thời điểm — chi tiết, hợp để điều tra "chuyện gì đã xảy ra". | Loki, Elasticsearch |
| Traces | Vết đi của một request xuyên qua nhiều service — thấy nút thắt latency nằm ở đâu. | Tempo, Jaeger |
| Khái niệm | Ý nghĩa |
|---|---|
| Data source | Kết nối tới một hệ thống chứa dữ liệu (Prometheus, MySQL, Loki...). Mỗi data source có query editor riêng. Là gốc của mọi panel. |
| Dashboard | Một trang gồm nhiều panel được sắp xếp theo lưới. Có time range chung và có thể chứa template variables. Lưu dưới dạng một JSON model. |
| Panel | Đơn vị hiển thị nhỏ nhất — gắn với một hoặc nhiều query và một kiểu vẽ (Time series, Stat, Gauge, Table...). |
| Query | Câu truy vấn gửi tới data source: PromQL cho Prometheus, SQL cho DB, LogQL cho Loki. Trả về dữ liệu để panel vẽ. |
| Time range | Khoảng thời gian đang xem (vd "Last 6 hours"). Áp cho toàn dashboard; có thể auto-refresh 5s/30s... |
| Variable | Biến template (vd $instance) hiện thành dropdown ở đầu dashboard, cho phép lọc động mà không sửa query tay. |
| Alert rule | Quy tắc đánh giá truy vấn theo chu kỳ; khi vượt ngưỡng sẽ chuyển sang trạng thái Firing và gửi thông báo (xem Bài 4). |
| Organization / Folder | Cách nhóm và phân quyền dashboard. Folder chứa dashboard; Org tách biệt hoàn toàn dữ liệu giữa các nhóm người dùng. |
Một cài đặt Grafana khá gọn: một tiến trình Grafana Server phục vụ giao diện web và làm cầu nối tới các data source. Bản thân Grafana chỉ cần một CSDL nhỏ (mặc định SQLite, production dùng MySQL/Postgres) để lưu cấu hình của chính nó — dashboard, user, alert rule — chứ không lưu metrics.
| Thành phần | Vai trò |
|---|---|
| Grafana Server | Tiến trình chính (cổng 3000): phục vụ UI, nhận query từ trình duyệt, chuyển tiếp tới data source rồi trả kết quả về vẽ. |
| Config DB | SQLite/MySQL/Postgres lưu dashboard, users, org, data source, alert rule. Là "nguồn sự thật" về cấu hình Grafana. |
| Data source(s) | Hệ thống ngoài chứa dữ liệu thật (Prometheus, Loki, DB...). Grafana query trực tiếp mỗi lần render panel. |
| Plugins | Mở rộng Grafana: data source plugin (thêm nguồn mới), panel plugin (kiểu vẽ mới), app plugin. |
Luồng khi bạn mở một dashboard:
| Công cụ | Vai trò chính | Khác biệt |
|---|---|---|
| Prometheus | Thu thập & lưu trữ metrics, tính toán bằng PromQL. | Là nguồn dữ liệu; UI của nó rất sơ sài. Grafana thường đứng trên để vẽ đẹp. |
| Grafana | Trực quan hoá real-time nhiều nguồn, cảnh báo vận hành. | Mạnh về time series & monitoring, refresh liên tục, kéo từ nhiều nguồn cùng lúc. |
| Power BI | BI & phân tích nghiệp vụ, mô hình dữ liệu, báo cáo. | Mạnh về data modeling, DAX, drill-down nghiệp vụ; thiên về báo cáo định kỳ hơn là monitoring real-time. |