- vừa được xem lúc

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

0 0 40

Người đăng: Hoang

Theo Viblo Asia

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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Index trong Mysql và cách sử dụng

Một số database là một cấu trúc dữ liệu để cải thiện tốc độ của các hoạt động trong một bảng. Trong khi tạo index, nó cần được xem xét rằng các cột đó sẽ được sử dụng để thực hiện các truy vấn SQL và tạo ra một hoặc nhiều chỉ số trên các cột đó là gì.

0 0 43

- vừa được xem lúc

Tạo ER Diagram của một Database bằng MySQL Workbench

Trong số chúng ta ai cũng đều đã từng trải qua một thời sinh viên tràn ngập đồ án này, đồ án kia đúng không? Mình cũng đã từng có một thời như thế Mà chuyên ngành chúng ta là công nghệ thông tin thì làm việc với Database trong mỗi đồ án là điều không thể thiếu rồi. Chuyện sẽ chẳng có gì to tát cho đ

0 0 65

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 110

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 969

- vừa được xem lúc

Mysql index strategy

Trong Mysql, index hỗ trợ việc tìm kiếm các rows theo từng giá trị của các columns trong bảng trở nên nhanh chóng. Việc tìm kiếm sẽ phải scan toàn bộ table nếu các column trong câu query không được đánh index một cách thích hợp. . .

0 0 65

- vừa được xem lúc

CRUD Nodejs với mysql

Mở Đầu. Xin chào các bạn tiếp tục với series Nodejs cơ bản, bài hôm nay mình sẽ tiếp tục làm thêm các chức năng xem chi tiết và sửa và xóa sản phẩm.

0 0 77