PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Phân tích nhật ký PostgreSQL với pgBadger

Đôi khi nhật ký là những thứ cuối cùng được kiểm tra khi mọi thứ đang diễn ra sai lầm, nhưng chúng thường là những thứ đầu tiên kêu cứu khi có sự cố xảy ra. Việc xem qua nhật ký theo cách thủ công để tìm các vấn đề sẽ hữu ích, nhưng tại sao không sử dụng trình phân tích nhật ký để tự động tạo báo cáo nhằm cung cấp thông tin chi tiết về cơ sở dữ liệu trước khi xảy ra sự cố?

Trình phân tích nhật ký PostgreSQL “pgBadger” là một chương trình mã nguồn mở “báo cáo phân tích nhật ký PostgreSQL nhanh” được viết bằng Perl để lấy kết quả nhật ký từ một phiên bản PostgreSQL đang chạy và xử lý nó thành một tệp HTML. Báo cáo mà nó tạo ra hiển thị tất cả thông tin được tìm thấy ở định dạng báo cáo đẹp và dễ đọc. Các báo cáo này có thể giúp làm sáng tỏ các lỗi xảy ra trong hệ thống, hành vi của trạm kiểm soát, hành vi chân không, xu hướng và các thông tin cơ bản nhưng quan trọng khác đối với hệ thống PostgreSQL.

Thiết lập ghi nhật ký PostgreSQL

Để sử dụng pgBadger một cách hiệu quả, việc đăng nhập PostgreSQL nên được thiết lập để cung cấp cho pgBadger nhiều thông tin nhất có thể. Một số tùy chọn có thể được tinh chỉnh để cho phép hệ thống cơ sở dữ liệu ghi lại thông tin hữu ích cho pgBadger để tạo ra các báo cáo hữu ích. Tài liệu đầy đủ về cấu hình PostgreSQL có thể được tìm thấy trên trang github pgBadger, nhưng một số thông tin cơ bản ở bên dưới.

Khi chạy, pgBadger sẽ xử lý nhật ký từ PostgreSQL cho dù chúng là nhật ký hệ thống, stderr hay csvlog, miễn là bản thân các dòng nhật ký có đủ thông tin trong tiền tố.

Các giá trị log_line_prefix mẫu:

Nếu log_destination =‘syslog’

log_line_prefix = 'user=%u,db=%d,app=%aclient=%h '

Nếu log_destination =‘stderr’

log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

Cài đặt cấu hình cơ bản để đặt trong postgresql.conf:

log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
log_statement = off
lc_messages='C'

Log_min_duration_statement = (see below)

Một trong những phần hữu ích hơn trong các báo cáo của pgBadger là báo cáo truy vấn chậm, dựa trên các truy vấn ghi nhật ký cơ sở dữ liệu vượt quá giá trị log_min_duration_statement. Giá trị này được biểu thị bằng mili giây và bất kỳ truy vấn nào hoàn thành với thời gian lớn hơn giá trị đó sẽ được ghi lại và sau đó là các báo cáo do pgBadger tạo ra. Điều này rất hữu ích cho việc tìm kiếm và phân tích các truy vấn mất nhiều thời gian hơn mong muốn.

Mặc dù việc đặt giá trị này thành 0 để ghi nhật ký tất cả các truy vấn sẽ cung cấp nhiều thông tin nhất, điều đó có thể dễ dàng tạo ra các tệp nhật ký quá lớn và ảnh hưởng đến hiệu suất của chính cơ sở dữ liệu do việc ghi nhật ký liên tục. Giá trị lành mạnh hơn sẽ không cung cấp số lượng truy vấn hoàn hảo, nhưng vẫn sẽ tập trung báo cáo về các truy vấn chạy chậm nói chung. Nếu các truy vấn chạy một vài phút được coi là "chậm", thì việc đặt giá trị thành một phút sẽ hoạt động tốt. Nếu các truy vấn chạy hơn một vài giây được coi là "chậm", thì việc đặt giá trị thành một giá trị như 5 giây cũng sẽ hoạt động tốt.

Tạo nhật ký

Việc tạo nhật ký được thực hiện thông qua dòng lệnh sử dụng tệp thực thi pgBadger. Có một loạt các tùy chọn, nhưng cách thiết lập cơ bản nhất là cung cấp tiền tố dòng nhật ký mà cơ sở dữ liệu sử dụng, tệp nhật ký và tệp html đầu ra.

./pgbadger --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' postgresql.log -o postgresql.html
[========================>] Parsed 560607407 bytes of 560607407 (100.00%), queries: 2929645, events: 5

Để biết thêm thông tin về các tùy chọn khác nhau cho pgBadger, hãy tham khảo tài liệu hoặc thực thi mã nhị phân với tham số đầu vào --help.

Tạo nhật ký nâng cao

Vì tạo báo cáo trên nhật ký là một thực thi dòng lệnh đơn giản, các tập lệnh và chương trình tùy chỉnh có thể được thiết lập để tạo báo cáo tự động, theo giai đoạn trên máy chủ web, được gửi qua email hoặc được lưu trữ trong bộ nhớ lâu dài. Khám phá các tùy chọn khác nhau có sẵn để tạo báo cáo và sáng tạo với các hệ thống tự động hóa để tạo và gửi báo cáo.

Xem lại nhật ký

Xem lại nhật ký là nơi mang lại niềm vui. Báo cáo đã được tạo hiện có thể được mở trong trình duyệt web và xem lại.

Thống kê toàn cầu

Phần thống kê chung chứa một số thông tin cơ bản được tìm thấy trong nhật ký PostgreSQL, bao gồm:

  • Truy vấn:Số lượng truy vấn được tìm thấy, thời lượng, số lượng truy vấn chuẩn hóa, v.v.
  • Sự kiện:Tổng số sự kiện, sự kiện chuẩn hóa, v.v.
  • Máy hút:Tổng số máy hút tự động và phân tích tự động được tìm thấy.
  • Tệp Tạm thời:Tổng số tệp tạm thời được tìm thấy, kích thước tối đa và kích thước trung bình.
  • Phiên:Tổng số phiên, thời gian của các phiên cao điểm, tổng thời lượng của các phiên, thời lượng trung bình của các phiên, các truy vấn trung bình được tìm thấy trên mỗi phiên, thời lượng truy vấn trung bình trên mỗi phiên.
  • Kết nối:Tổng số kết nối, kết nối cao nhất và tổng số cơ sở dữ liệu được kết nối.

Lưu ý: Các kết quả liên quan đến truy vấn, số lượng truy vấn hoặc thời lượng truy vấn sẽ không chính xác với các giá trị của log_min_duration_statement lớn hơn 0.

Ví dụ:

Ví dụ về số liệu thống kê toàn cầu pgBadger

Kết nối

Trang kết nối hiển thị đồ thị chi tiết thông tin kết nối được tìm thấy trong nhật ký. Miễn là log_connections và log_disconnections đều được bật, các giá trị ở đây sẽ chính xác. Các biểu đồ có sẵn là:

  • Kết nối được thiết lập:Hiển thị số lượng kết nối tối đa, tối thiểu và trung bình theo thời gian.
  • Kết nối trên mỗi cơ sở dữ liệu:Biểu đồ hình tròn và chế độ xem bảng hiển thị số lượng kết nối cho mỗi cơ sở dữ liệu được tìm thấy.
  • Kết nối trên mỗi người dùng:Biểu đồ hình tròn và chế độ xem bảng hiển thị số lượng kết nối cho mỗi người dùng được tìm thấy.
  • Kết nối trên mỗi máy chủ:Biểu đồ hình tròn và chế độ xem bảng hiển thị số lượng kết nối cho mỗi máy chủ nguồn được tìm thấy.

Ví dụ:

ví dụ về biểu đồ hình tròn pgBadger Connections

Phiên

Trang phiên tương tự như trang kết nối, nhưng chứa thêm một số thông tin liên quan đến chính phiên.

  • Số phiên đồng thời:Biểu đồ đường hiển thị số lượng phiên theo thời gian.
  • Biểu đồ thời gian của phiên:Biểu đồ thanh và bảng hiển thị thời gian của phiên.
  • Số phiên trên mỗi cơ sở dữ liệu:Biểu đồ hình tròn và chế độ xem bảng hiển thị số phiên cho mỗi cơ sở dữ liệu được tìm thấy.
  • Số phiên trên mỗi người dùng:Biểu đồ hình tròn và chế độ xem bảng hiển thị số phiên cho mỗi người dùng được tìm thấy.
  • Số phiên trên mỗi máy chủ lưu trữ:Biểu đồ hình tròn và chế độ xem bảng hiển thị số phiên cho mỗi máy chủ lưu trữ nguồn được tìm thấy.
  • Số phiên trên mỗi ứng dụng:Số phiên được kết nối trên mỗi ứng dụng.
pgBadger Sessions trên biểu đồ tròn Cơ sở dữ liệu

Trạm kiểm soát

Trang điểm kiểm tra cung cấp thông tin về quy trình điểm kiểm tra, bao gồm số lượng bộ đệm được ghi, tệp WAL và thông tin chung khác.

  • Bộ đệm điểm kiểm tra:Biểu đồ đường hiển thị số bộ đệm được ghi bởi quy trình điểm kiểm tra theo thời gian.
  • Tệp WAL của trạm kiểm soát:Biểu đồ đường thể hiện số lượng tệp WAL được người kiểm tra thêm, xóa hoặc tái chế theo thời gian.
  • Khoảng cách điểm kiểm tra:Biểu đồ đường hiển thị khoảng cách và ước tính cho các điểm kiểm tra.
  • Hoạt động của các điểm kiểm tra:Một bảng hiển thị bốn điểm dữ liệu trước đó ở dạng bảng.
pgBadger Checkpoints Buffers chartTải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát , quản lý và mở rộng quy mô PostgreSQLTải xuống Báo cáo chính thức

Tệp tạm thời

Trang tệp tạm thời chứa thông tin về tệp tạm thời, được tạo khi truy vấn hết work_mem và cần sử dụng đĩa để sắp xếp hoặc lọc kết quả trước khi trả lại cho ứng dụng. Các tệp này sẽ tự động bị xóa khi truy vấn hoàn tất và việc biết hoạt động của tệp tạm thời sẽ giúp quản trị viên điều chỉnh tham số work_mem.

  • Kích thước của các tệp tạm thời:Biểu đồ dạng đường hiển thị dung lượng mà các tệp tạm thời sử dụng theo thời gian.
  • Số lượng tệp tạm thời:Biểu đồ đường hiển thị số lượng tệp tạm thời được sử dụng theo thời gian.
  • Hoạt động Tệp Tạm thời:Một bảng hiển thị thông tin được cung cấp trong các biểu đồ trước đó nhưng ở dạng bảng.
pgBadger Kích thước của biểu đồ Tệp tạm thời

Máy hút

Trang này hiển thị thông tin về VACUUM và PHÂN TÍCH xảy ra trong cơ sở dữ liệu. Thông tin này rất hữu ích để biết liệu quá trình autovacuum có hoạt động tốt hay không, hay quá trình này đang bị sa lầy và cần thêm tài nguyên.

  • Phân phối chân không / phân tích:Một biểu đồ đường hiển thị KHỐI LƯỢNG và PHÂN TÍCH theo thời gian, cũng như thông tin trên bảng tiêu thụ nhiều năng lượng xử lý nhất của CPU.
  • Phân tích trên mỗi bảng:Biểu đồ tròn và bảng hiển thị các bảng có nhiều phân tích nhất, cho thấy các bảng này đang ở trạng thái thay đổi cao.
  • Số chân không trên mỗi bảng:Biểu đồ hình tròn và bảng hiển thị các bảng có nhiều chân không nhất, cho thấy các bảng này đang ở trạng thái thay đổi cao.
  • Bộ dữ liệu bị xóa trên mỗi bảng:Biểu đồ hình tròn và bảng hiển thị số lượng bộ dữ liệu và số trang được loại bỏ trong quy trình hút chân không cho bảng.
  • Số trang bị xóa trên mỗi bảng:Biểu đồ hình tròn và bảng hiển thị số lượng trang và số lượng trang bị xóa trong quy trình hút chân không cho bảng.
  • Hoạt động hút chân không tự động:Một bảng hiển thị VACUUM và PHÂN TÍCH theo thời gian mỗi giờ.
pgBadger Vacuums / Phân tích đồ thị phân phối

Khóa

Trang khóa chỉ chứa một vài phần dữ liệu, nhưng đó là thông tin hữu ích để biết khi nào có các quy trình có thể giữ các truy vấn khác trong một khoảng thời gian dài.

  • Các loại khóa
  • Truy vấn chờ đợi thường xuyên nhất:Danh sách các truy vấn được tìm thấy là đang chờ, được xếp hạng thường xuyên nhất đến ít nhất.
  • Các truy vấn được chờ đợi nhiều nhất:Danh sách các truy vấn và khoảng thời gian chúng đã đợi, được sắp xếp từ lâu nhất đến ngắn nhất.
pgBadger Truy vấn chờ báo cáo nhiều nhất

Truy vấn

Trang Truy vấn đôi khi thú vị nhất vì nó hiển thị thông tin về các loại truy vấn đến từ ứng dụng và người dùng. Thông tin này có thể giúp hiểu thêm về loại cơ sở dữ liệu nào khuấy động một ứng dụng hoặc người dùng đặt trên hệ thống cơ sở dữ liệu, điều này có thể giúp điều chỉnh trong tương lai. Giống như trước đây, độ chính xác của những con số này phụ thuộc vào giá trị của log_min_duration_statement, vì bất kỳ giá trị nào trên 0 sẽ không ghi lại các truy vấn.

  • Truy vấn theo loại:Biểu đồ hình tròn và bảng hiển thị số lượng các loại truy vấn khác nhau, chẳng hạn như CHÈN, CẬP NHẬT, XÓA, CHỌN, v.v.
  • Truy vấn theo cơ sở dữ liệu:Biểu đồ hình tròn và bảng hiển thị số lượng truy vấn được tìm thấy trên mỗi cơ sở dữ liệu.
  • Truy vấn theo ứng dụng:Biểu đồ hình tròn và bảng hiển thị số lượng truy vấn được tìm thấy trên mỗi ứng dụng.
  • Số lượng truy vấn đã bị hủy:Thông tin về bất kỳ truy vấn nào đã bị hủy.
pgBadger Truy vấn theo Biểu đồ hình tròn

Trên cùng

Trang trên cùng có thông tin về thời gian truy vấn, tổng thể các truy vấn chậm nhất, tần suất truy vấn và hơn thế nữa. Các truy vấn có vấn đề cụ thể có thể được tìm thấy ở đây:

  • Biểu đồ thời gian truy vấn:Biểu đồ biểu thị số lượng truy vấn thuộc mỗi nhóm thời gian.
  • Các truy vấn riêng lẻ chậm nhất:Danh sách các truy vấn chậm nhất được tìm thấy, được sắp xếp theo thứ tự dài nhất đến ngắn nhất.
  • Truy vấn tiêu tốn thời gian:Danh sách các truy vấn chuẩn hóa và tổng thời lượng của chúng, được sắp xếp theo thời gian tiêu tốn lớn nhất đến ít nhất.
  • Các truy vấn thường xuyên nhất:Danh sách các truy vấn chuẩn hóa và số lần chúng được thực thi, được sắp xếp từ nhiều nhất đến ít nhất.
  • Các truy vấn chậm nhất được chuẩn hóa:Danh sách các truy vấn chuẩn hóa và thời lượng trung bình của chúng, được sắp xếp theo thứ tự từ dài nhất đến ngắn nhất.
pgBadger Báo cáo truy vấn tốn thời gian

Sự kiện

Trang cuối cùng là các sự kiện, có thông tin về các bản ghi và bất kỳ thứ gì không phải là truy vấn, chân không hoặc trạm kiểm soát.

  • Các cấp độ nhật ký:Các cấp độ nhật ký khác nhau xuất hiện theo dòng, chẳng hạn như CONTEXT, LOG, STATEMENT, GINTs, WARNINGs và các cấp độ khác.
  • Phân phối sự kiện:Biểu đồ đường biểu thị sự kiện theo thời gian cho các sự kiện PANIC, FATAL, ERROR và WARNING.
  • Các Lỗi / Sự kiện Thường gặp nhất:Danh sách các SỰ KIỆN và tần suất của chúng, được sắp xếp theo thứ tự từ phổ biến nhất đến ít nhất.
pgBadger Log Levels Biểu đồ hình tròn

Đóng góp

Dự án pgBadger là miễn phí và tồn tại theo Giấy phép PostgreSQL. Nó hiện được duy trì và cập nhật tốt để hoạt động với các phiên bản PostgreSQL mới hơn khi nó được phát triển. Bạn có ý tưởng để cải thiện pgBadger? Chuyển sang dự án và cho cộng đồng thấy những cải tiến của bạn.

Để gửi lỗi, hãy truy cập trang sự cố github.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thử nhiều lần CHỌN cho đến khi có kết quả?

  2. Truy vấn phụ SQL trong kiểm tra ràng buộc

  3. di chuyển dữ liệu từ bảng này sang bảng khác, ấn bản postgresql

  4. Cách thiết lập cơ sở dữ liệu PostgreSQL trong Django

  5. Ranh giới từ PostgreSQL Regex?