Khái niệm:
Percona Monitoring and Management (PMM) là 1 opensource tốt nhất dùng để monitoring database. Nó giúp giảm độ phức tạp, tăng hiệu suất và cải thiện tính bảo mật của các môi trường cơ sở dữ liệu quan trọng đối với doanh nghiệp. Trong bài này, mình sẽ hướng dẫn cách ddeeer dùng PMM monitor database MySQL.
Cài đặt:
MySQL:
Vì mình monitoring database MySQL nên việc đầu tiên là cần phải cài MySQL
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
Hoặc bạn cũng có thể cài thông qua docker:
mkdir /var/lib/mysql -p
docker run -d --name mysql-server -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e "MYSQL_ROOT_PASSWORD=123456" mysql
ls -la /var/lib/mysql
Check lại MySQL đã được cài đặt
docker ps
=>
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77c780489e92 mysql:5.7 "docker-entrypoint.s…" 10 months ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp db
PMM:
Ok, bây giờ mặc định là MySQL đã được cài đặt, giờ mình đi vào phần chính: Cài đặt PPM:
docker pull percona/pmm-server:2
=> Result:
2d473b07cdd5: Downloading [============================> ] 43.5MB/76.1MB
2d473b07cdd5: Downloading [========================================> ] 62.24MB/76.1MB
2d473b07cdd5: Extracting [=======================================> ] 60.72MB/76.1MB
2d473b07cdd5: Pull complete 4ef6c10fab0b: Pull complete Digest: sha256:21d6600806da899a459ec31173f7072dd1bfd12bf5774c4b233020f028506e65
Status: Downloaded newer image for percona/pmm-server:2
Create volume:
=> Result:
2224301684e1d99f845794363b63e702841db700fd7dda34184e2829acfcf004
Run:
docker run --detach --restart always --name pmm-server --publish 9090:80 --volumes-from pmm-data percona/pmm-server:2
=> Result:
7ab49eadee87d078d3bd430b738c4aecd770b5bbceee632f4ec72bd48fbd0b59
OK, bây giờ check lại xem thế nào
docker ps
=> Result:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ab49eadee87 percona/pmm-server:2 "/opt/entrypoint.sh" 15 seconds ago Up 12 seconds (healthy) 443/tcp, 0.0.0.0:9090->80/tcp pmm-server
docker ps -a
=> Result:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ab49eadee87 percona/pmm-server:2 "/opt/entrypoint.sh" About a minute ago Up About a minute (healthy) 443/tcp, 0.0.0.0:9090->80/tcp pmm-server
2224301684e1 percona/pmm-server:2 "/bin/true" 2 minutes ago Exited (0) 17 seconds ago
Ok, giờ vào url để check, lần đầu access bạn phải tạo password
http://localhost:9090/graph
được kết quả như trong hình
Config PMM
Ở các bước trên giờ mình đã có 1 hệ thống PMM và MySQL rồi, giờ mình sẽ config để PPM connect đến MySQL để monitoring các SQL được thực hiện trên SQL.
Access vào url http://localhost:9090/graph/d/pmm-add-instance/pmm-add-instance?orgId=1&instance_type=
để tạo instance, hoặc có thể search PMM Add Instance
để vào màn hình này. Nó có dạng như bên dưới
Ok, giờ mình sẽ add remote instance MySQL, vì ở đây mình connect đến database MySQL. Ở màn hình tiếp theo, input các thông tin connect cần thiết để connect đến database MySQL của mình.
Sau khi create instance thành công, vào màn hình dashboard sẽ có dạng như thế này
Ok, giờ để monitoring được các SQL trong database, mình vào màn hình http://localhost:9090/graph/d/pmm-qan/pmm-query-analytics
để xem các query được execute.
Màn hình có dạng như bên dưới:
Demo:
Ok, giờ mình đã setup xong PMM, giờ access vào DB để create 1 table person_test_query
có cấu trúc như bên dưới.
Create table person_test_query
DDL:
CREATE TABLE `person_test_query` ( `id` varchar(50) NOT NULL, `name` varchar(50) CHARACTER SET utf8mb4 NOT NULL, `age` int null, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `deleted_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Insert 1 ít record vào table và thực hiện câu lệnh count như bên dưới: Count data:
mysql> select count(*) from person_test_query;
+----------+
| count(*) |
+----------+
| 1997 |
+----------+
1 row in set (0.00 sec)
Ok, giờ mình check monitoring mình sẽ thấy log như bên dưới:
Câu SQL create table ở trên được execute mất 40.44ms Câu SQL count thực hiện mất 3.23ms
Conclusion:
Như vậy ở trên mình đã hướng dẫn cách config PMM để monitoring cho database, từ đây mình có thể check được những câu SQL không được tối ưu, performance kém để khắc phục, hy vọng bài viết này hữu ích với bạn