Viblo CTF
+4

Tìm hiểu về Percona Monitoring and Management

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


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.