Bagaimana memonitor dan mencatat penggunaan proses memori / cpu dari waktu ke waktu? [Tutup]

30

Saya mencari cara untuk mendiagnosis masalah, seperti swap kematian, di mana proses memori baloon mengisi swap dan membunuh seluruh mesin (seperti apache).

Saya sudah menggunakan kaktus dan saya dapat mengatur nagios (meskipun lebih suka tidak) atau munin tetapi sejauh yang saya tahu mereka tidak dapat merekam penggunaan program individu - hanya status keseluruhan.

Saya tahu saya bisa menggulung skrip yang >> ke beberapa file setiap 30-an tapi saya ingin melihat apakah solusi matang yang sudah ada.

Sekali lagi, idealnya akan:

  • merekam penggunaan memori proses setiap N detik
  • merekam proses penggunaan CPU setiap N detik
  • grafik dan riwayat dukungan
  • rata-rata dukungan - seperti mysqld telah menggunakan CPU 43% pada hari terakhir dan rata-rata memori 400MB
  • menjadi sumber bebas dan terbuka

Nama-nama proses tidak dan tidak harus diketahui sebelumnya - idenya adalah membiarkannya memantau dan kemudian melihat pelanggar atas.

Sistem saya adalah Linux (OpenSUSE).

Artem Russakovskii
sumber
Apakah Anda ingin memantau proses apa pun yang mungkin memiliki kebocoran memori (babi memori N teratas) atau Anda ingin memantau serangkaian proses yang ditentukan (misalnya server web Apache dan proses Tomcat)? Yang terakhir ini bisa dilakukan dengan beberapa plugin Nagios atau Cacti sederhana. Yang pertama lebih sulit. Anda harus mengklarifikasi ini.
Stefan Lasiewski
Saya sudah mengklarifikasi di pos tetapi untuk mengklarifikasi lagi: Saya ingin tahu keadaan sistem ketika turun karena swap kematian. Saya ingin tahu siapa pelanggar terburuk. Dan btw, itu tidak harus menjadi kebocoran memori - hanya masuknya lalu lintas, atau apa pun yang menyebabkan penggunaan memori tinggi. Jadi, sekali lagi, tidak ada pengetahuan lanjutan tentang nama-nama biner yang harus dikonfigurasi.
Artem Russakovskii
kemungkinan rangkap - serverfault.com/questions/67234/…
warren 3-10
Warren, itu pertanyaan yang sama sekali berbeda.
Artem Russakovskii
8
Menutup pos kualitas yang baik seperti itu adalah hal yang buruk, terutama setelah 4 tahun surut.
peterh mengatakan mengembalikan Monica

Jawaban:

16

Jika Anda hanya menginginkan pelaku teratas, pertimbangkan untuk berlari topdengan interval yang relatif lama (60 detik plus) dalam mode batch. Anda mungkin perlu lebih dari satu topberlari untuk menangkap pelanggar utama pada banyak sumber. Saya telah mengkonfigurasi sistem untuk berjalan topselama beberapa siklus ketika sumber daya sedang digunakan.

Pertimbangkan berjalan sardalam mode batch untuk menangkap pemanfaatan sumber daya. Saya menyadari ini berbasis server, tetapi berguna untuk menentukan waktu ketika masalah terjadi.

Jalankan munindan aktifkan notifikasi. Ini mungkin memberi Anda kesempatan untuk masuk dan menyaksikan server turun. Anda mungkin dapat memperbaiki masalah sebelum turun.

Untuk kebocoran memori, peningkatan penggunaan swap yang stabil mengindikasikan adanya masalah. Saya pernah melihat server yang perlahan mati selama beberapa hari. Layanan masalah adalah program memantau proses lain untuk kebocoran memori. Admin sistem terus bersikeras bahwa peningkatan penggunaan swap tidak menjadi masalah, sampai server berhenti merespons.

Anda mungkin menemukan bahwa cfenginedeteksi anomali dapat digunakan untuk memicu skrip untuk menangkap status sistem ketika ada masalah. Anda mungkin menginginkan banyak informasi selain hanya proses menggunakan sumber daya terbanyak. Untuk arus penggunaan yang tiba-tiba, Anda mungkin menginginkan daftar koneksi jaringan (berdasarkan alamat bukan nama). Penggunaan memori juga bermanfaat.

BillThor
sumber
12

sysstat dibuat cukup persis untuk tujuan Anda.

Peter Eisentraut
sumber
Di sinilah Anda harus mulai. Anda tidak bisa tahu di mana harus memulai ujian sampai Anda tahu di mana Anda memiliki peluang terbaik. Sysstat adalah apa yang Anda cari (juga memiliki grafik cantik). Setelah Anda tahu lebih banyak gunakan systemtap.
Allen
9

Saya telah menggunakan di atas sebelumnya:

http://freshmeat.net/projects/atop/

"Di atas adalah monitor kinerja layar penuh ASCII yang mampu melaporkan aktivitas semua proses (bahkan jika proses telah selesai selama interval), pencatatan harian sistem dan aktivitas proses untuk analisis jangka panjang, menyoroti sumber daya sistem yang berlebihan dengan menggunakan warna, dll. Secara berkala, ini menunjukkan aktivitas tingkat sistem yang terkait dengan CPU, memori, swap, disk, dan lapisan jaringan, dan untuk setiap proses aktif itu menunjukkan pemanfaatan CPU, pertumbuhan memori, prioritas, nama pengguna, status, dan keluar dari kode. "

NinjaCat
sumber
di atas tampaknya tidak memiliki laporan yang akan memberi saya apa yang saya inginkan. Harap perbaiki saya jika saya salah.
Artem Russakovskii
Ini menangani dua poin peluru pertama Anda (memori / CPU dengan proses). Anda dapat menggunakan perpustakaan untuk mengumpulkan statistik ini dan kemudian melakukan histori / grafik Anda berdasarkan data.
NinjaCat
4
@ artem-russakovskii - Secara default di atas data log ke file setiap sepuluh menit. Jika server Anda mogok pada jam 3:45 Anda bisa mulai dengan atop -r log_filename, tekan muntuk beralih ke tampilan penggunaan memori per-proses, dan kemudian tekan tuntuk bergerak maju dalam peningkatan 10 menit hingga jam 3:40. Anda dapat membaca lebih lanjut tentang dasar-dasar penggunaan di atas di lwn.net/Articles/387202 dan lihat contoh mengidentifikasi kebocoran memori di atoptool.nl/download/case_leakage.pdf
sciurus
6

Sudahkah Anda mencoba collectd?
Ini sangat kuat dan dapat disesuaikan.
Memiliki banyak plugin dan dapat diintegrasikan dengan nagios.

http://collectd.org/features.shtml

PiL
sumber
Collectd sangat ringan, tidak terlalu sulit untuk diatur, dan akan membiarkan Anda melihat pertumbuhan memori / swap dari waktu ke waktu. Meskipun demikian, ini tidak akan menunjukkan proses yang menyinggung - tetapi mungkin Anda akan dapat melihat dan menangkap pertumbuhan memori dalam waktu dan memeriksa situasi secara manual top.
Marius Gedminas
1
Saya harus mengatakan bahwa saya tidak mencoba plugin itu, tetapi membaca dari manual plugin proses colld: "Jika proses dipilih informasi berikut ini dikumpulkan. Semua informasi ini dikumpulkan oleh nama proses. Ukuran Segmen Penduduknya, Digunakan waktu pengguna dan sistem, Jumlah proses dengan nama itu, Jumlah utas (diringkas di atas semua proses), Jumlah kesalahan halaman utama dan kecil. Angka I / O kasar (byte ditulis dan dibaca karena untuk syscalls oleh proses)
PiL
Anda dapat memilih proses atau nama atau regex.
PiL
2

Centreon di atas Nagios, Nagios ditambah dengan NRPE. Anda kemudian dapat menulis skrip khusus untuk melaporkan data dalam format APAPUN yang Anda inginkan ke NRPE. Nagios kemudian melakukan polling data dari server jarak jauh dengan NRPE dan Centreon membuat grafik yang cantik dan menambahkan satu ton fleksibilitas pengguna. Kami menggunakannya di http://beyondhosting.net. Saya memiliki template VZ Container dengan pengaturan centreon + nagios jika Anda menginginkannya.

Grafik centreon membangun hostthenpost.org/tyler/2010-07-23_1719.png

VisBits
sumber
Saya ingin solusi siap untuk melaporkan hal-hal yang saya sebutkan, yang paling penting adalah proses yang menghabiskan paling banyak memori. Saya juga tidak yakin apa itu VZ.
Artem Russakovskii
2

nmon adalah alat hebat yang melakukan apa yang Anda cari. Dikembangkan untuk AIX dan Linux. Menghasilkan satu ton detail output dan mudah dimasukkan ke dalam laporan. Jika Anda google, ada wiki IBM yang memiliki banyak dokumentasi dan utilitas tambahan untuk mengurai data.

mattcaffeine
sumber
2

Server Density melakukan persis apa yang Anda gambarkan.

Saya menggunakannya di salah satu server produksi kami dan saya sangat senang karenanya. Fitur utamanya adalah kemampuan untuk melihat grafik, klik pada suatu puncak dan melihat konsumsi CPU / Memori server pada saat itu, termasuk semua proses yang berjalan. Mereka menyebutnya snapshots .

Terus membaik. Salah satu fitur terbaru adalah deteksi anomali , yang memungkinkan Anda mendeteksi anomali dengan mudah. Anda juga dapat mengatur berbagai treshold

Aron Rotteveel
sumber
1
Ah, saya lupa menyebutkan bagian kecil di mana saya lebih suka itu gratis, dan open source, jika mungkin. Lebih dari $ 100 per server sebenarnya bukan yang ingin saya belanjakan (dan saya hanya punya 1 server, bukan 5). serverdensity.com/pricing
Artem Russakovskii
2

Jawabannya disarankan ketika saya mengajukan pertanyaan serupa :

Icapan berkata :

Munin adalah cara termudah untuk mendapatkan grafik uptime dengan upaya minimal dalam menginstal dan mengkonfigurasi. Saya juga menggunakan atas untuk penggunaan cpu agregat dengan beberapa proses, tapi bukan itu yang Anda minta.

David Spillet berkata :

Saya menggunakan collectd untuk merekam beban sistem di antara sejumlah parameter lainnya. Ini menyimpan data di toko RRD yang dapat dibuat grafik dan dianalisis menggunakan banyak alat dan skrip yang tersedia. Saya menggunakan versi modifikasi dari skrip ini untuk grafik saya ( sampel output ).

Collectd memiliki plugins untuk memantau banyak hal (semuanya biasa diminta dan beberapa hal di atas), dan membuat sendiri tidak akan sulit jika Anda membutuhkan sesuatu yang khusus, jadi buatlah alat yang sangat fleksibel. Mengkonfigurasi grafik di rrd.cgi adalah proses yang sangat manual, meskipun tidak sulit, meskipun Anda mungkin menemukan alat yang lebih nyaman untuk bekerja dengan file RRD yang dikelola oleh collectd.

Anda juga dapat memeriksa Nagios atau OpenNMS .

warren
sumber
1

Munin akan melakukan semua yang Anda butuhkan di luar kotak tanpa memerlukan nagios atau alat lainnya. Ada RPM yang tersedia untuk OpenSUSE.

gareth_bowles
sumber
Apakah itu melakukannya dengan plugin. Jika demikian, yang mana? Saya belum dapat menemukan satu yang tidak memerlukan daftar proses yang telah dikonfigurasi untuk memantau.
Artem Russakovskii
Tidak jelas dari pertanyaan awal Anda bahwa Anda tidak ingin memantau daftar proses yang telah dikonfigurasikan sebelumnya - dapatkah Anda memberikan detail lebih lanjut tentang persyaratan Anda?
gareth_bowles
Klarifikasi: Nama proses tidak dan tidak boleh diketahui sebelumnya - idenya adalah membiarkannya memantau dan kemudian melihat pelanggar teratas.
Artem Russakovskii
1

Mungkin OProfile tua yang baik melakukan apa yang Anda butuhkan? Ini adalah profiler tingkat sistem berbasis kernel dengan hanya sedikit (beberapa persen) overhead.

Lalu ada skrip Perl yang sangat bagus, PSMon , yang memungkinkan Anda mengatur semua jenis batas CPU / memori. Jika itu terlampaui, psmon akan mencatat kesalahan dan / atau membunuh proses yang menyinggung.

Yang terakhir tidak akan menghasilkan laporan profiling kepada Anda, tetapi jika memutuskan untuk membunuh proses yang sama berulang-ulang, Anda mungkin telah menemukan bajingan jahat yang Anda cari. :-)

Janne Pikkarainen
sumber