Grafana

Install and Start Grafana
Tại đây, tôi đang sử dụng Ubuntu 24.04 LTS, chúng ta SSH vào máy chủ.
Sau khi đã kết nối, đảm bảo các package đã được cập nhật:
sudo apt update
Sau đó chọn phiên bản Grafana:
sudo apt-get install -y adduser libfontconfig1 musl
sudo wget https://dl.grafana.com/oss/release/grafana_11.2.0_amd64.deb
sudo dpkg -i grafana_11.2.0_amd64.deb
Quá trình cài đặt đã hoàn tất. Bây giờ, thực hiện chạy và kiểm tra trạng thái dịch vụ Grafana:
sudo service grafana-server start
sudo service grafana-server status
sudo systemctl enable grafana-server.service
Để có thể truy cập ở bên ngoài internet thì cần phải đảm bảo tường lửa cho phép truy cập vào địa chỉ IP của máy chủ Grafana trên cổng 3000.
Truy cập Grafana với url: <ip_public>:3000 với tài khoản admin:admin:

Màn hình Dashboard Grafana:

Create first Data Source
Goto Home → Connections → Data sources
Chọn Add data source:

Tìm kiếm và chọn TestData:

Chọn vào Dashboards:

Và chọn Import để hiện thị giao diện trên Dashboards:

Giao diện Dashboards lúc này:

Kết quả:

Create MySQL data source, Collector and Dashboard
Tạo một máy chủ mysql và mở port 3306 cho phép kết nối từ bên ngoài.
SSH vào máy chủ để cài đặt mysql:
sudo apt update
sudo apt install mysql-server
sudo service mysql status

Bây giờ chúng ta sẽ cài trình thu thập để định kỳ thu thập số liệu thống kê về máy chủ MySQL và lưu trữ chúng vào một bảng m2.status chứa value, time.
Tệp lệnh để thu thập thông tin có thể tải xuống từ https://github.com/meob/my2Collector
Tải xuống tập lệnh bằng cách sử dụng wget:
wget https://raw.githubusercontent.com/meob/my2Collector/master/my2_80.sql
Mở file và tìm đến tập lệnh:
-- Use a specific user (suggested)
-- create user my2@'%' identified by 'P1e@seCh@ngeMe';
-- grant all on my2.* to my2@'%';
-- grant select on performance_schema.* to my2@'%';
Bỏ comment và đổi mật khẩu:

Lưu các thay đổi và sau đó chạy tập lệnh SQL:
mysql < my2_80.sql
Truy cập vào mysql:
mysql -u my2 -p

Kiểm tra xem event_scheduler có được bật lên không:
show variables where variable_name = 'event_scheduler';

Nếu không bật thì các event sẽ không tự động chạy, để bật nó cần thêm dòng sau vào /etc/mysql/my.cnf:
[mysqld]
event_scheduler = on
Lưu và khởi động lại mysql:
sudo service mysql restart
Để cho phép kết nối từ xa đến mysql, mở tệp cấu hình /etc/mysql/my.cnf và thêm dòng sau:
[mysqld]
bind-address = 0.0.0.0
Lưu và khởi động lại mysql:
sudo service mysql restart
Tạo thêm user mới cho phép Grafana đọc dữ liệu trong database my2 (sử dụng public_ip của grafana):
CREATE USER 'grafana'@'18.232.148.76' IDENTIFIED BY 'grafana';
GRANT SELECT ON my2.* TO 'grafana'@'18.232.148.76';
FLUSH PRIVILEGES;
Goto Home → Connections → Data sources
Chọn Add new data source:

Tìm kiếm và chọn mysql:

Điền các thông tin Connection:

Lưu và test kết nối thành công:

Import thêm một Dashboard mới:

Load ID 7991:

Chọn Mysql sau đó Import:

Kết quả:

Graphing non time series SQL Data
Grafana có thể biểu đồ hóa dữ liệu thời gian từ nhiều nguồn dữ liệu, nhưng đôi khi chỉ cần hiện thị các số liệu thống kê đơn giản.
Chúng ta sẽ tạo một database mới:
CREATE DATABASE hoangpv_database;
Tạo một bảng simple_table:
CREATE TABLE hoangpv_database.simple_table (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(45) DEFAULT NULL,
total decimal(10,0) DEFAULT NULL,
PRIMARY KEY (id)
);
Thêm dữ liệu vào bảng:
INSERT INTO hoangpv_database.simple_table
(username, total)
VALUES
('Cat',56),
('Dog',35),
('Lizard',41),
('Crocodile',22),
('Koala',26),
('Cassowary',29),
('Peacock',19),
('Emu',10),
('Kangaroo',13);
Kiểm tra dữ liệu:
select * from hoangpv_database.simple_table;

Thêm quyền cho user grafana truy cập vào database hoangpv_database:
GRANT SELECT ON hoangpv_database.* TO 'grafana'@'18.232.148.76';
FLUSH PRIVILEGES;
Goto Grafana.
Chọn New dashboard:

Chọn Add visualization sau đó chọn Mysql:

Chọn vào Code và thêm đoạn code sau:
select username, total from hoangpv_database.simple_table;

Nhận được dạng biểu đồ dạng Table:

Thực hiện chọn các dạng biểu đồ cho phù hợp:

Bây giờ hãy update 1 giá trị, xem grafana có cập nhật lên không:
UPDATE hoangpv_database.simple_table SET total = 69 WHERE username = 'Dog';
Trên grafana:

Install Loki binary
Kiểm tra kiến trúc CPU:
uname -m
Kiểm tra phiên bản mới nhất của Grafana Loki:
cd /usr/local/bin
curl -O -L "https://github.com/grafana/loki/releases/download/v3.4.1/loki-linux-amd64.zip"
Cài đặt unzip:
apt install unzip
Giải nén file:
unzip loki-linux-amd64.zip
Tải file cấu hình Loki:
wget https://raw.githubusercontent.com/grafana/loki/refs/heads/main/cmd/loki/loki-local-config.yaml
Tạo user chạy service Loki:
useradd --system loki
Tạo file loki.service:
vim /etc/systemd/system/loki.service
Thêm đoạn script sau vào:
[Unit]
Description=Loki service
After=network.target
[Service]
Type=simple
User=loki
ExecStart=/usr/local/bin/loki-linux-amd64 -config.file /usr/local/bin/loki-local-config.yaml
[Install]
WantedBy=multi-user.target
Start và kiểm tra trạng thái service Loki:
service loki start
service loki status
systemctl enable loki.service

Install Promtail Binary
Kiểm tra phiên bản mới nhất của Grafana Loki:
cd /usr/local/bin
curl -O -L "https://github.com/grafana/loki/releases/download/v3.4.1/promtail-linux-amd64.zip"
Giải nén file zip:
unzip "promtail-linux-amd64.zip"
Tải cấu hình Promtail:
wget https://raw.githubusercontent.com/grafana/loki/refs/heads/main/clients/cmd/promtail/promtail-local-config.yaml
Tạo user chạy service Promtail:
useradd --system promtail
Tạo file promtail.service:
vim /etc/systemd/system/promtail.service
Thêm đoạn script sau vào:
[Unit]
Description=Promtail service
After=network.target
[Service]
Type=simple
User=promtail
ExecStart=/usr/local/bin/promtail-linux-amd64 -config.file /usr/local/bin/promtail-local-config.yaml
[Install]
WantedBy=multi-user.target
Start và kiểm tra trạng thái service Loki:
service promtail start
service promtail status
systemctl enable promtail.service

Hiện tại thì user promtail đang thuộc group promtail vì thế sẽ không có quyền đọc các logs của hệ thống.
Thêm user promtail vào group adm:
usermod -a -G adm promtail
Khởi động lại Promtail và kiểm tra trạng thái:
service promtail restart
service promtail status
Create Dashboard Loki
Thêm data source loki:

Nhập connection:

Test kết nối:

Explore Loki:

Xem logs file cloud-init.log:





