Pertanyaannya mendasar seperti sederhana ... Bagaimana Anda mencatat semua pertanyaan dalam file log "tail" di mongodb?
Saya telah mencoba:
- mengatur level profiling
- mengatur mulai lambatnya parameter ms
- mongod dengan opsi -vv
/Var/log/mongodb/mongodb.log terus menunjukkan jumlah koneksi aktif saat ini ...
mongod -vv
bekerja untuk sayaJawaban:
Anda dapat mencatat semua pertanyaan:
Sumber: http://docs.mongodb.org/manual/reference/method/db.setProfilingLevel/
db.setProfilingLevel(2)
berarti "catat semua operasi".sumber
db.setProfilingLevel(2,-1)
system.profile
koleksi.db.system.profile.find().pretty()
tidak memberikan apa pun untuk sayaSaya akhirnya menyelesaikan ini dengan memulai mongod seperti ini (dipalu dan jelek, ya ... tetapi bekerja untuk lingkungan pengembangan):
Ini memungkinkan pembuatan profil dan menetapkan ambang untuk "permintaan lambat" sebagai 1 ms, menyebabkan semua permintaan dicatat sebagai "permintaan lambat" ke file:
Sekarang saya mendapatkan keluaran log kontinu menggunakan perintah:
Contoh log:
sumber
profile=1
danslowms=1
baris dalam/etc/mongodb.conf
?--profile=2
untuk/etc/mongodb.conf
sesuai dengan dokumen Mongo resmi, setiap semua operasi akan login.db.setProfilingLevel(level,slowms)
. Untuk misalnya:db.setProfilingLevel(2,1)
akan menetapkan level menjadi 2 dan memperlambat ambang kueri menjadi 1ms.Karena jawabannya google pertama ...
Untuk versi 3
http://docs.mongodb.org/manual/reference/method/db.setLogLevel/
sumber
MongoDB
memiliki fitur profil yang canggih. Pencatatan terjadi dalamsystem.profile
koleksi. Log dapat dilihat dari:Ada 3 level logging ( sumber ):
Untuk melihat tingkat profil yang digunakan basis data, gunakan
dan untuk melihat statusnya
Untuk mengubah status pembuatan profil, gunakan perintah
Di mana
level
mengacu pada tingkat profil danmilliseconds
merupakan ms yang durasi kueri perlu dicatat. Untuk mematikan pencatatan, gunakanKueri untuk melihat dalam kumpulan profil sistem untuk semua kueri yang membutuhkan waktu lebih dari satu detik, dipesan oleh timestamp turun akan menjadi
sumber
Saya membuat alat baris perintah untuk mengaktifkan aktivitas profiler dan melihat log dengan cara "tail" : "mongotail" .
Tetapi fitur yang lebih menarik (juga suka
tail
) adalah untuk melihat perubahan "real time" dengan-f
opsi, dan sesekali menyaring hasilnya dengangrep
untuk menemukan operasi tertentu.Lihat dokumentasi dan petunjuk pemasangan di: https://github.com/mrsarm/mongotail
sumber
Setelah tingkat pembuatan profil diatur menggunakan
db.setProfilingLevel(2)
.Perintah di bawah ini akan mencetak kueri yang dieksekusi terakhir.
Anda dapat mengubah batas (5) juga untuk melihat kueri lebih sedikit / lebih.
$ nin - akan memfilter profil dan kueri indeks
Juga, gunakan proyeksi kueri {'kueri': 1} untuk hanya melihat bidang permintaan
Log dengan proyeksi permintaan saja
sumber
Jika Anda ingin kueri dicatat ke file log mongodb, Anda harus mengatur level log dan profil, seperti misalnya:
(lihat https://docs.mongodb.com/manual/reference/method/db.setLogLevel )
Pengaturan hanya profiling tidak akan memiliki kueri login ke file, jadi Anda hanya bisa mendapatkannya dari
sumber
Data profiler ditulis ke kumpulan di DB Anda, bukan ke file. Lihat http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/
Saya akan merekomendasikan menggunakan layanan MMS 10gen , dan memberi makan data profiler pengembangan di sana, di mana Anda dapat memfilter dan mengurutkannya di UI.
sumber
Saya pikir walaupun tidak elegan, oplog dapat digunakan sebagian untuk tujuan ini: ia mencatat semua penulisan - tetapi bukan bacaan ...
Anda harus mengaktifkan replika, jika saya benar. Informasi ini berasal dari jawaban dari pertanyaan ini: Bagaimana cara mendengarkan perubahan pada koleksi MongoDB?
sumber
Menetapkan profilinglevel ke 2 adalah opsi lain untuk mencatat semua permintaan.
sumber
Saya sarankan memeriksa mongosniff. Alat kaleng ini dapat melakukan semua yang Anda inginkan dan banyak lagi. Terutama itu dapat membantu mendiagnosis masalah dengan sistem mongo skala yang lebih besar dan bagaimana pertanyaan dialihkan dan dari mana mereka berasal karena ia bekerja dengan mendengarkan antarmuka jaringan Anda untuk semua komunikasi terkait mongo.
http://docs.mongodb.org/v2.2/reference/mongosniff/
sumber
Saya menulis sebuah skrip yang akan mencetak log system.profile secara real time ketika queri masuk. Anda harus mengaktifkan logging terlebih dahulu seperti yang dinyatakan dalam jawaban lain. Saya membutuhkan ini karena saya menggunakan Windows Subsystem untuk Linux, yang ekornya masih tidak berfungsi.
https://github.com/dtruel/mongo-live-logger
sumber
Kemudian
sumber
Ini sudah lama ditanyakan tetapi ini mungkin masih membantu seseorang:
Profiler MongoDB mencatat semua kueri dalam sistem pengumpulan capped.profile . Lihat ini: profiler basis data
--profile=2
opsi yang memungkinkan logging semua permintaan ATAU jika instance mongod sudah berjalan, dari mongoshell, jalankandb.setProfilingLevel(2)
setelah memilih database. (dapat diverifikasi olehdb.getProfilingLevel()
, yang harus dikembalikan2
)tail -f ../logs/mongologs.txt
. Skrip ini dapat dimulai di latar belakang dan akan mencatat semua operasi pada db dalam file.Kode saya untuk kursor yang tersedia untuk koleksi system.profile ada di nodejs; itu mencatat semua operasi bersama dengan kueri yang terjadi di setiap koleksi MyDb:
Untuk kursor yang tersedia di python menggunakan pymongo, lihat kode berikut yang memfilter untuk MyCollection dan hanya memasukkan operasi:
Catatan: Kursor yang tersedia hanya berfungsi dengan koleksi yang dibatasi. Itu tidak dapat digunakan untuk mencatat operasi pada koleksi secara langsung, sebagai gantinya gunakan filter:
'ns': 'MyDb.MyCollection'
Catatan: Saya mengerti bahwa nodejs dan kode python di atas mungkin tidak banyak membantu bagi sebagian orang. Saya baru saja memberikan kode untuk referensi.
Gunakan tautan ini untuk menemukan dokumentasi untuk kursor yang tersedia di Bahasa / Driver pilihan Mongodb Drivers Anda
Fitur lain yang saya tambahkan setelah logrotate ini .
sumber
Cobalah paket ini untuk mengikuti semua pertanyaan (tanpa operasi oplog): https://www.npmjs.com/package/mongo-tail-queries
(Penafian: Saya menulis paket ini persis untuk kebutuhan ini)
sumber