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
Chúc các bạn thành công