Skrip pemantauan kinerja di linux

Saya mencoba membuat skrip yang memungkinkan saya memantau Pemanfaatan CPU, Pemanfaatan Memori, Pemanfaatan I/O, dan Pemanfaatan Jaringan. Saat ini, saya memiliki skrip yang harus menjalankan perintah yang diperlukan di linux. Mudah-mudahan pada akhirnya, saya dapat menjalankan ini setiap 15 menit atau lebih dan kemudian menggunakan informasi spesifik untuk menganalisis data. Di bawah ini skripnya:

#!/bin/sh
########################################################
OUTPUT="ServerPerf`date '+%d%m%y'`.out"
(
echo "=================================================="
echo " Script Starting Time : `date` "
echo "================================================="
echo " Disk I/O Status "
echo "================================================="
echo
iostat
echo
echo "================================================="

echo "##################################################"
echo " NETWORK TCP PARAMETERS STATUS "
echo "##################################################"
echo
echo
netstat -sp tcp
echo
echo " Processes List "
echo
ps -elf
echo
echo " END "
echo
echo "##################################################"
echo "##################################################"
echo " NETWORK CONNECTION PARAMETER "
echo "##################################################"
echo
echo
netstat -an
echo
echo
echo "##################################################"
echo " NETWORK TRAFFIC STATUS ON INTERFACES "
echo "##################################################"
echo
echo
netstat -i
echo
echo
echo "##################################################"
echo " SERVER MEMORY/CPU Utilization Report "
echo "##################################################"
echo
top -d1 -n 5
echo "=================================================="
echo " VMSTAT INFO "
echo "=================================================="
echo
vmstat 5 5
echo
echo "=================================================="
echo " Script Ending Time : `date` "
echo
echo "=================================================="
) >> $OUTPUT

Sekarang, saya ingin mengambil data berguna dari file yang dibuat ini. Ada beberapa kategori di mana data dapat diurutkan:

  1. Rata-rata Beban
  2. Persentase CPU Menganggur
  3. Pemanfaatan Kernel
  4. Pemanfaatan Memori
  5. Aktivitas bertukar

Saya mencoba menggunakan perintah ini untuk menghasilkan 5 file ini dan sepertinya mengalami kesulitan.

grep "load avg" /home/test/logs/ServerPerf180610.out | awk '{ print $6 }' | awk -F, '{ print $1 }' > load_avg.txt
grep "CPU states" /home/test/logs/ServerPerf180610.out | awk '{ print $3 }' | awk -F% '{ print $1 }' > cpu_idle.txt
grep "CPU states" /home/test/logs/ServerPerf180610.out | awk '{ print $7 }' | awk -F% '{ print $1 }' > cpu_kernel.txt
grep "Memory" /home/test/logs/ServerPerf180610.out | awk '{ print $5 }' | awk -FG '{ print $1 }' > memory_util.txt
grep "Memory" /home/test/logs/ServerPerf180610.out | awk '{ print $11 }' | awk -FG '{ print $1 }' > swap_util.txt

Saat perintah ini dijalankan, file keluarannya kosong. Adakah yang tahu mengapa saya tidak dapat membuat file-file ini?

Saya sangat menghargai bantuan Anda.

Terima kasih, Harun

UDPATE: Berikut ini salinan file keluaran: http://www.queencitytech.com/ServerPerfRepo180610.out


person Aaron    schedule 18.06.2010    source sumber
comment
Saya tidak bisa memastikannya karena saya punya versi yang berbeda. Tetapi apakah Anda sudah mencoba menghapus bagian awk untuk pemecahan masalah? Artinya, gunakan grep... › load_avg.txt alih-alih dua perintah awk yang mengintervensi?   -  person MJB    schedule 18.06.2010
comment
perintah teratas sedang digunakan dalam skrip ini. saya sudah mencoba menghapus awk tetapi tidak ingin menghasilkan apa pun juga   -  person Aaron    schedule 18.06.2010
comment
Apakah ada sesuatu di file /home/test/logs/ServerPerf...?   -  person MJB    schedule 18.06.2010
comment
Saya tidak dapat membantu mengatasi masalah yang ada, tetapi apakah Anda mengetahui tentang Cacti? cacti.net (mungkin bukan yang Anda butuhkan selain menghapus namanya.)   -  person Pekka    schedule 18.06.2010
comment
Dan apakah perintahnya pernah selesai? Perintah top saja memerlukan waktu setidaknya 5 detik.   -  person MJB    schedule 18.06.2010
comment
Saya telah menambahkan tautan ke postingan asli sehingga Anda dapat melihat file ServerPerf...dan isinya.   -  person Aaron    schedule 19.06.2010
comment
Ya, perintah teratas selesai. Anda dapat melihatnya dari file keluaran.   -  person Aaron    schedule 19.06.2010
comment
Maaf -- Saya tidak melihat file tersebut sebelumnya ketika saya merespons.   -  person MJB    schedule 19.06.2010
comment
Oh, tidak apa-apa. Saya baru saja menambahkannya setelah Anda menyebutkannya :)   -  person Aaron    schedule 19.06.2010
comment
Anda harus mempertimbangkan untuk menggunakan paket sysstat karena paket tersebut mencakup sar untuk mengumpulkan data kinerja dari waktu ke waktu dan melaporkannya. Ini mencakup sebagian besar data kinerja yang sama dengan yang Anda cari. github.com/sysstat/sysstat   -  person Andrew Yochum    schedule 24.04.2019


Jawaban (1)


Mungkin salah ketik, namun file yang Anda cari dan file yang Anda buat berbeda.

Artinya, baris OUTPUT=... menyatakan DAY-MONTH-YEAR, namun baris grep menyatakan MONTH-DAY-YEAR

EDIT: Oke, Anda memposting file keluaran. Ada berbagai macam karakter khusus di sana, dari perintah top. Bisakah Anda menambahkan argumen batch (top -d1 -n1 -b) ke top untuk menyembunyikannya?

EDIT LAINNYA: Perintah grep Anda tampaknya spesifik untuk kasus tertentu. Apakah itu disengaja? Hasilnya tidak cocok untuk beberapa filter grep Anda. Coba tambahkan abaikan huruf besar-kecil (grep -i) ke perintah. Selain itu, Anda mencari "rata-rata beban" tetapi hasilnya mengatakan "rata-rata beban" sehingga Anda tidak akan pernah menemukannya.

person MJB    schedule 18.06.2010
comment
Sebenarnya, saya minta maaf karena ada kesalahan ketik dari saya. Ketika saya menjalankan perintah itu mengikuti hal yang sama seperti file. - person Aaron; 18.06.2010
comment
itu masuk akal. ketika saya menambahkan kasus abaikan dan pencarian rata-rata beban yang tepat, semua yang saya dapatkan di file adalah hari dengan 4 angka nol di bawahnya? - person Aaron; 19.06.2010
comment
Apakah Anda juga menambahkan opsi batch ke atas? Saya pikir top menghasilkan kode kontrol layar untuk menyorot, berkedip, beranda, dll, dan itu mungkin mengacaukan keluaran Anda. - person MJB; 19.06.2010
comment
Juga, tidak ada data memori. Ada bagian yang disebut Memori, tetapi jika Anda hanya mengembalikan baris tersebut, Anda tidak mendapatkan data. Selain itu, tidak ada baris yang disebut Status CPU. Di mana Anda mendapatkan filter Anda? Mereka tidak ada dalam data. - person MJB; 19.06.2010
comment
Saya tidak begitu yakin tentang opsi batch. Saya sebenarnya telah menemukan ini di blog dan telah mencoba membuatnya berfungsi untuk sementara waktu sekarang. Berikut halamannya (bagian 2) kumudunix.blogspot.com/ 01/2010/ Awalnya ditulis untuk Solaris dan saya memodifikasi beberapa perintah agar dapat berfungsi di linux. Saya kira mungkin saja dengan mengubahnya saya merusak skrip. - person Aaron; 19.06.2010
comment
Dari blog tersebut Anda bisa menuju ke Part 1 yang script aslinya. Namun saya menemukan beberapa kesalahan seperti | sebelum masing-masing awk. Saya mengerti apa yang Anda maksud dengan data memori. - person Aaron; 19.06.2010
comment
Baiklah, menurut saya Anda bisa membuatnya berhasil, tetapi menurut saya lebih baik Anda memulainya kembali. Mungkin ada perintah dan utilitas linux yang memberikan apa yang Anda inginkan. Namun, jika tujuannya adalah untuk mengembangkan kemampuan Anda sendiri dalam upaya untuk belajar, menurut saya, teruslah melakukannya. Namun periksalah masukan dan langkah-langkah Anda, daripada menunggu sampai akhir. - person MJB; 19.06.2010