Skip to main content

Command Palette

Search for a command to run...

Grafana

Updated
5 min read
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:

Download grafana

Document 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
💡
Khi bạn khởi động lại máy chủ thì Grafana sẽ không tự động khởi động lại. Để thiết lập cho nó tự khởi động lại bằng lệnh
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

💡
Nếu sử dụng Mysql 8.#.# thì tải tệp my2_80.sql, còn Mysql 5.#.# thì tải tệp my2.sql

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:

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:

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:

More from this blog

Learn DevOps

21 posts