Home » PostgreSQL – Cài đặt và sử dụng pgBadger để phân tích câu lệnh

PostgreSQL – Cài đặt và sử dụng pgBadger để phân tích câu lệnh

by tuanlp

1. Giới thiệu

pgBadger là 1 công cụ mã nguồn mở, dùng để phân tích log của PostgreSQL.

Mà các bạn biết rồi đó, log của PostgreSQL có rất nhiều thông tin quan trọng, mỗi khi cần monitor, giám sát, hay sửa lỗi, chúng ta đều cần đến nó còn gì. Tuy nhiên nó lại chỉ có định dạng text thôi, nên khá khó đọc và bất tiện. pgBadger sẽ giúp bạn đọc nó 1 cách tối ưu hơn.

Tham khảo về pgBadger ngay trên trang chính thức của PostgreSQL

https://www.postgresql.org/about/news/pgbadger-v114-released-2120/

Một số đặc điểm chính của pgBadger như sau:

  • Cách sử dụng rất đơn giản, bạn chỉ cần chỉ ra cho pgBadger file log, nó sẽ phân tích và xuất ra báo cáo cho bạn.
  • Báo cáo của nó có định dạng HTML5 và có nhiều thông tin, chart (biểu đồ) trực quan.
  • pgBadger tự động phát hiện định dạng file log của PostgreSQL (syslog, stderr, csvlog hay jsonlog), thậm chí cả log của pgbouncer
 

Sau đây tôi sẽ hướng dẫn các bạn các bước để cài đặt pgbadger trên Postgres

2. Download pgBadger

Trang chủ: https://pgbadger.darold.net/

Trang Github: https://github.com/darold/pgbadger/releases

File bạn tải về là file mã nguồn, bạn cần phải biên dịch nó trước khi sử dụng.

# tar -xvf pgbadger-11.5.tar.gz
# cd pgbadger-11.5/
# perl Makefile.PL

Chú ý: Nếu ở bước perl Makefile.PL bị lỗi, có thể bạn chưa cài đặt gói perl-devel. Bạn cài đặt gói này bằng lệnh sau:

# yum install perl-devel

Kết quả khi makefile thành công sẽ như sau:

# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for pgBadger

Sau đó, bạn gõ tiêp lệnh make và make install để compile và cài đặt

# make
# make install

Các bước cài đặt như vậy là đã xong

3. Cấu hình tham số trong PostgreSQL

Bây giờ tôi sẽ cấu hình 1 số tham số trong PostgreSQL để phục vụ cho hoạt động của pgBadger

1. Ghi vào log file

Đầu tiên là các tham số để PostgreSQL ghi lại nhiều thông tin hơn vào log file

alter system set log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h ';
alter system set log_min_duration_statement = 0;
alter system set log_checkpoints = on;
alter system set log_connections = on;
alter system set log_disconnections = on;
alter system set log_lock_waits = on;
alter system set log_temp_files = 0;
alter system set log_autovacuum_min_duration = 0;
alter system set log_error_verbosity = default;

2. Ghi lại câu lệnh đầy đủ

Mặc định, với giá trị log_min_duration_statement = -1, bạn chỉ có thể xem báo cáo thống kê câu lệnh với thời gian chạy và số lần chạy.
Nếu bạn muốn báo cáo thống kê câu lệnh có câu lệnh đầy đủ, bạn phải set log_min_duration_statement >= 0. Tham số này cũng thêm vào report các câu lệnh chậm nhất.

alter system set log_min_duration_statement = 0;

Như vậy là tôi đã cài đặt xong pgbadger trên Postgres rồi đó.

4. Hướng dẫn sử dụng:

1. Phân tích bằng cách chỉ định file log cụ thể

pgbadger /var/lib/pgsql/13/data/log/postgresql-Sat.log
LOG: Ok, generating html report... 6163 bytes of 6163 (100.00%), queries: 0, events: 27

Sau khi phân tích xong, nó sẽ tạo ra 1 file báo cáo có tên là out.html

Đó, cơ chế đơn giản chỉ có như vậy. Nếu các bạn muốn tùy biến nhiều hơn nữa có thể tham khảo các option hay gặp sau:

2. Chỉ định đường dẫn và tên file lưu báo cáo

pgbadger /var/lib/pgsql/13/data/log/postgresql-Sat.log -O /var/lib/pgsql

3. Chỉ lấy ra các thông tin trong khoảng thời gian nhất định

pgbadger -b "2021-06-25 10:56:11" -e "2021-06-25 10:59:11" /var/lib/pgsql/13/data/log/postgresql-Sat.log

4. Phân tích nhiều log file 1 lúc

pgbadger /var/lib/pgsql/13/data/log/postgresql-*.log

5. Incremental report

pgBadger cho phép tạo các báo cáo tích lũy với option -I hay –incremental.
Khi chạy ở option này, pgBadger sẽ sinh ra 1 báo cáo 1 ngày và 1 báo cáo tổng hợp mỗi tuần. Để làm được điều này bạn cần cho pgBadger chạy định kỳ hàng ngày bằng crontab.

0 4 * * * /usr/local/bin/pgbadger -I -q /var/lib/pgsql/13/data/log/postgresql-*.log -O /var/www/pg_reports/

5. Một mẫu báo cáo pgBadger

Xin lỗi anh em là server test của mình thì ko có tải gì, nên báo cáo pgBadger chả có thông tin gì. Mình lấy 1 báo cáo mẫu trên mạng cho anh em dễ hình dung vậy

pgbadger1

pgbadger2

pgbadger3

pgbadger5

pgbadger 6

 

Chúc các bạn thành công

You may also like