1. Cài đặt và khởi động Grafana trên Ubuntu 24.04
1.1. Cài đặt package và cấu hình khởi động
Cần thêm repository chính thức của Grafana để lấy bản mới nhất, sau đó cài đặt package và kích hoạt service để chạy tự động khi khởi động hệ thống.
Lý do: Sử dụng repository chính thức đảm bảo tính tương thích và nhận bản vá bảo mật nhanh nhất. Khởi động qua systemd giúp quản lý vòng đời service chuẩn trên Ubuntu.
Kết quả mong đợi: Grafana chạy trên cổng 3000 và hiển thị trang đăng nhập mặc định.
sudo apt-get update
sudo apt-get install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install -y grafana
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
Kiểm tra trạng thái service sau khi cài đặt:
sudo systemctl status grafana-server
Kết quả mong đợi: Dòng trạng thái hiển thị active (running). Truy cập trình duyệt địa chỉ http://your-server-ip:3000 để thấy trang login. Account mặc định là admin / admin.
2. Cấu hình Data Source kết nối InfluxDB 2.x
2.1. Chuẩn bị thông số kết nối
Trước khi cấu hình trong Grafana, cần xác định rõ thông số từ bước cấu hình InfluxDB (Phần 2 và 3): URL endpoint, Organization, Bucket, Token truy cập và Version (v2).
Lý do: InfluxDB 2.x sử dụng cơ chế xác thực khác biệt so với v1, cần khai báo đúng version và token để Flux query hoạt động.
2.2. Thêm Data Source trong giao diện Grafana
Đăng nhập vào Grafana, vào menu Configuration (biểu tượng bánh răng) -> chọn Data Sources -> nhấn nút Add data source.
Tìm và chọn InfluxDB trong danh sách.
Kết quả mong đợi: Giao diện cấu hình Data Source hiện ra.
Điền thông số vào form như sau (giả định bạn đã có Token từ phần trước):
- Name:
InfluxDB-Prod (Tên tùy ý để nhận diện)
- URL:
http://localhost:8086 (hoặc IP server InfluxDB)
- Version: Chọn 2.x (Quan trọng)
- Auth: Tích vào ô Use Access Token
- Token: Dán chuỗi Token API đã tạo (bắt đầu bằng x-...)
- Default Database: Bỏ trống (Vì InfluxDB 2 dùng Bucket, không dùng DB mặc định)
- Organization: Nhập tên Organization của bạn (ví dụ:
my-org)
- Default Bucket: Nhập tên Bucket chứa dữ liệu (ví dụ:
telegraf-metrics)
Sau khi điền xong, cuộn xuống dưới cùng và nhấn nút Save & Test.
Kết quả mong đợi: Thông báo Data source is working hiện ra màu xanh lá cây.
3. Tạo Dashboard và Panel hiển thị đồ thị
3.1. Tạo Dashboard mới
Vào menu Dashboards -> New dashboard -> chọn Add visualization.
Lý do: Tạo không gian làm việc mới để chứa các panel biểu đồ.
3.2. Cấu hình Panel đầu tiên (Gauge)
Chọn Data Source là InfluxDB-Prod đã tạo ở mục 2. Chuyển sang tab Query.
Cần viết câu lệnh Flux để lấy dữ liệu CPU usage trung bình.
Kết quả mong đợi: Biểu đồ Gauge hiển thị % CPU thực tế.
Trong phần Query Editor của Flux, dán nội dung sau:
from(bucket: "telegraf-metrics")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._field == "usage_idle")
|> filter(fn: (r) => r._measurement == "cpu")
|> filter(fn: (r) => r._host == "my-ubuntu-server")
|> aggregateWindow(every: v.windowPeriod, fn: mean)
|> map(fn: (r) => ({ _value: 100 - r._value }))
Giải thích câu lệnh:
from(bucket): Chỉ định bucket dữ liệu.
range: Lấy dữ liệu trong khoảng thời gian hiển thị của dashboard.
filter: Lọc theo trường usage_idle (CPU nhàn rỗi).
aggregateWindow: Tính giá trị trung bình (mean).
map: Đảo ngược giá trị (100 - idle) để hiển thị % CPU đang hoạt động.
Trong tab Visualization (bên phải):
- Chọn biểu đồ dạng Gauge (Đồng hồ).
- Cột Value: Chọn
Current (Hiển thị giá trị mới nhất).
- Cột Unit: Chọn
Percent (0-100).
- Cột Min/Max: Đặt
0 và 100.
Trong tab Settings:
- Đổi Title thành
CPU Usage.
- Bấm Apply để lưu panel.
Kiểm tra: Biểu đồ Gauge phải nhảy số theo thời gian thực.
4. Cấu hình Variables (Biến) để lọc dữ liệu động
4.1. Tạo biến động cho Hostname
Vào menu Dashboards -> chọn Dashboard vừa tạo -> nhấn nút Edit.
Ở góc trên bên phải, nhấn vào biểu tượng bánh răng Settings -> chọn tab Variables.
Click Add variable.
Kết quả mong đợi: Một dropdown menu hiện ra trên dashboard cho phép chọn Hostname để lọc toàn bộ dashboard.
Cấu hình biến như sau:
- Name:
Host (Tên biến, hiển thị trên UI)
- Type: Chọn Query
- DS: Chọn
InfluxDB-Prod
- Query: Dán đoạn code Flux dưới đây:
from(bucket: "telegraf-metrics")
|> range(start: v.timeRangeStart)
|> filter(fn: (r) => r._measurement == "cpu")
|> distinct(column: "_host")
|> keep(columns: ["_host"])
|> rename(columns: { _host: "value" })
|> map(fn: (r) => ({ _value: r.value, text: r.value }))
Giải thích biến:
distinct: Lấy danh sách các host duy nhất.
keep: Giữ lại cột _host.
rename: Đổi tên cột thành value (yêu cầu của Grafana để hiển thị giá trị).
map: Tạo đối tượng có value (giá trị lọc) và text (giao diện hiển thị).
Trong phần Refresh của biến:
- Chọn On Dashboard Load (Tự động tải danh sách host khi mở dashboard).
- Chọn On Time Range Change (Cập nhật lại khi đổi khoảng thời gian).
Bấm Add để lưu biến.
4.2. Áp dụng biến vào Panel
Vẫn ở chế độ Edit Dashboard, click vào panel CPU Usage đã tạo ở mục 3.
Vào tab Query của panel đó.
Tìm dòng filter(fn: (r) => r._host == "my-ubuntu-server").
Thay đổi thành:
filter(fn: (r) => r._host == "$Host")
Lý do: Ký hiệu $ báo cho Grafana biết đây là một biến động, giá trị sẽ thay đổi tùy theo lựa chọn của người dùng.
Nhấn Apply để lưu panel, sau đó nhấn Save dashboard (biểu tượng đĩa mềm) ở góc trên phải để lưu toàn bộ dashboard.
Kiểm tra kết quả:
Tắt chế độ Edit. Trên dashboard sẽ xuất hiện một thanh dropdown có tên Host. Khi bạn chọn một host khác trong danh sách, biểu đồ CPU sẽ tự động cập nhật để hiển thị dữ liệu của host mới chọn.
Điều hướng series:
Mục lục: Series: Triển khai Database Time-Series với InfluxDB trên Ubuntu 24.04
« Phần 6: Truy vấn và phân tích dữ liệu với Flux
Phần 8: Cấu hình cảnh báo (Alerting) và tự động hóa »