PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Analisis Log PostgreSQL Dengan pgBadger

Kadang-kadang log adalah hal terakhir yang diperiksa ketika ada yang salah, tetapi biasanya itu adalah hal pertama yang berteriak minta tolong ketika sesuatu terjadi. Mencari masalah secara manual membantu, tetapi mengapa tidak menggunakan penganalisis log untuk membuat laporan secara otomatis guna memberikan wawasan tentang database sebelum terjadi kesalahan?

Penganalisis log PostgreSQL “pgBadger” adalah program “laporan analisis log PostgreSQL cepat” open source yang ditulis dalam Perl yang mengambil output log dari instance PostgreSQL yang sedang berjalan dan memprosesnya menjadi file HTML. Laporan yang dihasilkan menunjukkan semua informasi yang ditemukan dalam format laporan yang bagus dan mudah dibaca. Laporan ini dapat membantu menjelaskan kesalahan yang terjadi dalam sistem, perilaku pos pemeriksaan, perilaku vakum, tren, dan informasi dasar namun penting lainnya untuk sistem PostgreSQL.

Pengaturan Logging PostgreSQL

Untuk menggunakan pgBadger secara efektif, masuk ke PostgreSQL harus diatur untuk memberikan pgBadger informasi sebanyak mungkin. Beberapa opsi dapat diubah untuk memungkinkan sistem basis data mencatat informasi yang berguna bagi pgBadger untuk menghasilkan laporan yang berguna. Dokumentasi lengkap untuk konfigurasi PostgreSQL dapat ditemukan di halaman github pgBadger, tetapi beberapa informasi dasar ada di bawah.

Saat dijalankan, pgBadger akan memproses log dari PostgreSQL apakah itu syslog, stderr, atau csvlog, selama baris log itu sendiri memiliki informasi yang cukup di awalan.

Contoh nilai log_line_prefix:

If log_destination =‘syslog’

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

Jika log_destination =‘stderr’

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

Pengaturan konfigurasi dasar untuk diatur di 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)

Salah satu bagian yang lebih bermanfaat dari laporan pgBadger adalah laporan kueri lambat, yang bergantung pada kueri pencatatan database yang melebihi nilai log_min_duration_statement. Nilai ini direpresentasikan dalam milidetik, dan setiap kueri yang selesai dengan waktu lebih lama dari itu akan dicatat, lalu laporan yang dihasilkan oleh pgBadger. Ini berguna untuk menemukan dan menganalisis kueri yang membutuhkan waktu lebih lama dari yang diinginkan.

Meskipun menyetel nilai ini ke 0 untuk mencatat semua kueri akan memberikan informasi paling banyak, yang dapat dengan mudah menghasilkan file log yang terlalu besar, dan memengaruhi kinerja database itu sendiri karena penulisan log yang konstan. Nilai yang lebih waras tidak akan memberikan jumlah kueri yang sempurna, namun akan tetap memfokuskan laporan pada kueri yang berjalan lambat secara umum. Jika kueri yang berjalan beberapa menit dianggap 'lambat', menyetel nilai ke satu menit akan berhasil. Jika kueri yang berjalan lebih dari beberapa detik dianggap 'lambat', maka menyetel nilainya ke sekitar 5 detik juga akan berfungsi dengan baik.

Membuat Log

Pembuatan log dilakukan melalui baris perintah menggunakan pgBadger yang dapat dieksekusi. Ada sejumlah opsi, tetapi pengaturan paling dasar adalah menyediakan awalan baris log yang digunakan database, file log, dan file html keluaran.

./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

Untuk informasi lebih lanjut tentang berbagai opsi untuk pgBadger, lihat dokumentasi atau jalankan biner dengan parameter input --help.

Pembuatan Log Lanjutan

Karena membuat laporan di log adalah eksekusi baris perintah sederhana, skrip dan program khusus dapat diatur untuk menghasilkan laporan secara otomatis, dipentaskan di server web, diemail, atau diarsipkan dalam penyimpanan jangka panjang. Jelajahi berbagai opsi yang tersedia untuk pembuatan laporan dan berkreasilah dengan sistem otomatisasi untuk pembuatan dan pengiriman laporan.

Meninjau Log

Meninjau log adalah tempat yang menyenangkan. Laporan yang dihasilkan sekarang dapat dibuka di browser web dan ditinjau.

Statistik global

Bagian statistik global berisi beberapa informasi dasar yang ditemukan di log PostgreSQL, termasuk:

  • Kueri:Jumlah kueri yang ditemukan, durasi, jumlah kueri yang dinormalisasi, dll.
  • Acara:Jumlah total acara, acara yang dinormalisasi, dll.
  • Vakum:Jumlah total penyedot debu otomatis dan analisis otomatis yang ditemukan.
  • File Sementara:Jumlah total file sementara yang ditemukan, ukuran maksimal, dan ukuran rata-rata.
  • Sesi:Jumlah total sesi, waktu sesi puncak, total durasi sesi, durasi rata-rata sesi, kueri rata-rata yang ditemukan per sesi, durasi kueri rata-rata per sesi.
  • Koneksi:Jumlah total koneksi, koneksi puncak, dan jumlah total basis data yang terhubung.

Catatan: Hasil yang melibatkan kueri, jumlah kueri, atau durasi kueri tidak akan akurat dengan nilai log_min_duration_statement lebih besar dari 0.

Contoh:

pgBadger Contoh Statistik Global

Koneksi

Halaman koneksi menunjukkan grafik yang merinci informasi koneksi yang ditemukan di log. Selama log_connections dan log_disconnections keduanya aktif, nilai di sini akan akurat. Grafik yang tersedia adalah:

  • Koneksi yang dibuat:Menampilkan jumlah koneksi maksimum, minimum, dan rata-rata dari waktu ke waktu.
  • Koneksi per database:Diagram lingkaran dan tampilan tabel yang menunjukkan jumlah koneksi untuk setiap database yang ditemukan.
  • Koneksi per pengguna:Diagram lingkaran dan tampilan tabel yang menunjukkan jumlah koneksi untuk setiap pengguna yang ditemukan.
  • Koneksi per host:Diagram lingkaran dan tampilan tabel yang menunjukkan jumlah koneksi untuk setiap host sumber yang ditemukan.

Contoh:

pgBadger Connections contoh diagram lingkaran

Sesi

Halaman sesi mirip dengan halaman koneksi, tetapi berisi beberapa informasi lebih lanjut yang berkaitan dengan sesi itu sendiri.

  • Sesi Simultan:Bagan garis yang menunjukkan jumlah sesi dari waktu ke waktu.
  • Histogram Waktu Sesi:Bagan batang dan tabel yang menunjukkan waktu sesi.
  • Sesi per database:Diagram lingkaran dan tampilan tabel yang menunjukkan jumlah sesi untuk setiap database yang ditemukan.
  • Sesi per pengguna:Diagram lingkaran dan tampilan tabel yang menunjukkan jumlah sesi untuk setiap pengguna yang ditemukan.
  • Sesi per host:Diagram lingkaran dan tampilan tabel yang menunjukkan jumlah sesi untuk setiap host sumber yang ditemukan.
  • Sesi per Aplikasi:Jumlah sesi yang terhubung per aplikasi.
pgBadger Sesi per diagram lingkaran Database

Pos pemeriksaan

Halaman pos pemeriksaan memberikan informasi tentang proses pos pemeriksaan, termasuk jumlah buffer yang ditulis, file WAL, dan informasi umum lainnya.

  • Checkpoint Buffers:Bagan garis yang menunjukkan jumlah buffer yang ditulis oleh proses checkpoint dari waktu ke waktu.
  • Checkpoints WAL Files:Bagan garis yang menunjukkan jumlah file WAL yang ditambahkan, dihapus, atau didaur ulang oleh checkpointer dari waktu ke waktu.
  • Jarak Pos Pemeriksaan:Bagan garis yang menunjukkan jarak dan perkiraan pos pemeriksaan.
  • Aktivitas Pos Pemeriksaan:Tabel yang menampilkan empat titik data sebelumnya dalam bentuk tabel.
pgBadger Checkpoints Buffer chartUnduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau , kelola dan skala PostgreSQLUnduh Whitepaper

File Sementara

Halaman file temp berisi informasi untuk file sementara, yang dibuat saat kueri kehabisan work_mem dan perlu menggunakan disk untuk mengurutkan atau memfilter hasil sebelum mengembalikannya ke aplikasi. File-file ini dihapus secara otomatis saat kueri selesai, dan mengetahui aktivitas file temp membantu administrator menyetel parameter work_mem.

  • Ukuran file sementara:Bagan garis yang menunjukkan ruang yang digunakan oleh file sementara dari waktu ke waktu.
  • Jumlah file sementara:Bagan garis yang menunjukkan jumlah file sementara yang digunakan dari waktu ke waktu.
  • Aktivitas File Sementara:Tabel yang menampilkan informasi yang diberikan dalam bagan sebelumnya tetapi dalam bentuk tabel.
pgBadger Bagan Ukuran File Sementara

Vakum

Halaman ini menunjukkan informasi tentang VAKUM dan ANALISIS yang terjadi di database. Informasi ini berguna untuk mengetahui apakah proses autovacuum melakukan tugasnya dengan cukup baik atau tidak, atau macet dan membutuhkan lebih banyak sumber daya.

  • Distribusi Vakum / Analisis:Bagan garis yang menunjukkan VAKUM dan ANALISIS dari waktu ke waktu, serta informasi di tabel yang paling banyak menghabiskan daya pemrosesan CPU.
  • Analisis per tabel:Diagram lingkaran dan tabel yang menampilkan tabel dengan analisis paling banyak, menunjukkan bahwa tabel ini berada dalam status perubahan yang tinggi.
  • Vacuum per tabel:Diagram lingkaran dan tabel yang menunjukkan tabel dengan vakum paling banyak, menunjukkan bahwa tabel ini berada dalam status perubahan yang tinggi.
  • Tupel yang dihapus per tabel:Diagram lingkaran dan tabel yang menunjukkan jumlah tupel dan halaman yang dihapus dalam proses vakum untuk tabel.
  • Halaman yang dihapus per tabel:Diagram lingkaran dan tabel yang menunjukkan jumlah halaman dan tupel yang dihapus dalam proses vakum untuk tabel.
  • Aktivitas vakum otomatis:Tabel yang menunjukkan VAKUM dan ANALISIS dari waktu ke waktu per jam.
pgBadger Vacuums / Analisis Grafik Distribusi

Kunci

Laman kunci hanya berisi beberapa bagian data, tetapi ini merupakan informasi yang berguna untuk mengetahui kapan ada proses yang mungkin menahan kueri lain untuk waktu yang lama.

  • Mengunci menurut jenis
  • Kueri yang paling sering menunggu:Daftar kueri yang ditemukan menunggu, diberi peringkat paling sering hingga paling sedikit.
  • Kueri yang paling banyak menunggu:Daftar kueri dan berapa lama mereka menunggu, diurutkan dari yang terlama hingga terpendek.
pgBadger Kueri yang paling banyak menunggu laporan

Permintaan

Halaman Query terkadang paling menarik, karena menampilkan informasi jenis query yang berasal dari aplikasi dan pengguna. Informasi ini dapat membantu memahami lebih lanjut tentang jenis churn basis data apa yang ditempatkan aplikasi atau pengguna pada sistem basis data, yang dapat membantu penyetelan di masa mendatang. Seperti sebelumnya, keakuratan angka-angka ini bergantung pada nilai log_min_duration_statement, karena nilai apa pun di atas 0 tidak akan mencatat kueri.

  • Kueri menurut jenis:Diagram lingkaran dan tabel yang menunjukkan jumlah jenis kueri yang berbeda, seperti INSERT, UPDATE, DELETE, SELECT, dll.
  • Kueri menurut basis data:Diagram lingkaran dan tabel yang menunjukkan jumlah kueri yang ditemukan per basis data.
  • Kueri menurut aplikasi:Diagram lingkaran dan tabel yang menunjukkan jumlah kueri yang ditemukan per aplikasi.
  • Jumlah kueri yang dibatalkan:Informasi tentang kueri yang dibatalkan.
pgBadger Kueri menurut Jenis Bagan Pai

Atas

Halaman teratas memiliki informasi tentang waktu kueri, kueri paling lambat secara keseluruhan, frekuensi kueri, dan lainnya. Kueri tertentu yang bermasalah mungkin ditemukan di sini:

  • Histogram waktu kueri:Histogram yang menunjukkan jumlah kueri yang termasuk dalam setiap pengelompokan waktu.
  • Kueri individual paling lambat:Daftar kueri paling lambat yang ditemukan, diurutkan dari yang terpanjang hingga terpendek.
  • Kueri yang memakan waktu:Daftar kueri yang dinormalisasi dan total durasinya, diurutkan berdasarkan waktu paling lama hingga paling sedikit.
  • Kueri yang paling sering:Daftar kueri yang dinormalisasi dan berapa kali kueri tersebut dieksekusi, diurutkan dari yang paling banyak hingga yang paling sedikit.
  • Kueri paling lambat yang dinormalisasi:Daftar kueri yang dinormalisasi dan durasi rata-ratanya, diurutkan dari yang terpanjang hingga terpendek.
pgBadger Laporan kueri yang memakan waktu

Acara

Halaman terakhir adalah peristiwa, yang memiliki informasi tentang log itu sendiri, dan apa pun yang bukan kueri, vakum, atau pos pemeriksaan.

  • Tingkat log:Berbagai tingkat log muncul menurut baris, seperti KONTEKS, LOG, PERNYATAAN, PETUNJUK, PERINGATAN, dan lainnya.
  • Distribusi peristiwa:Grafik garis peristiwa dari waktu ke waktu untuk peristiwa PANIC, FATAL, ERROR, dan WARNING.
  • Kesalahan/Peristiwa Paling Sering:Daftar ACARA dan frekuensinya, diurutkan dari yang paling umum hingga yang paling sedikit.
pgBadger Log Levels diagram lingkaran

Berkontribusi

Proyek pgBadger gratis dan ada di bawah Lisensi PostgreSQL. Saat ini terpelihara dengan baik dan diperbarui untuk bekerja dengan versi PostgreSQL yang lebih baru saat dikembangkan. Punya ide untuk meningkatkan pgBadger? Fork proyek dan tunjukkan peningkatan Anda kepada komunitas.

Untuk mengirimkan bug, kunjungi halaman masalah 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. Pembuatan urutan berurutan

  2. Memulai dan mengisi wadah Postgres di Docker

  3. Mengotomatiskan Barman dengan Wayang:it2ndq/barman (bagian dua)

  4. Tampilkan hasil pilih secara vertikal di psql, seperti yang dilakukan oleh \G . MySQL

  5. Berapa banyak ruang disk yang diperlukan untuk menyimpan nilai NULL menggunakan DB postgresql?