Скрипт мониторинга производительности в linux - PullRequest
3 голосов
/ 18 июня 2010

Я пытаюсь создать сценарий, который позволит мне контролировать загрузку ЦП, использование памяти, использование ввода-вывода и использование сети. В настоящее время у меня есть скрипт, который должен запускать необходимые команды в Linux. Надеюсь, в конце концов, я смогу запустить это каждые 15 минут или около того, а затем использовать конкретную информацию для анализа данных. Ниже приведен скрипт:

#!/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

Теперь я бы хотел взять полезные данные из созданных файлов. Существует несколько категорий, по которым можно сортировать данные:

  1. Средняя нагрузка
  2. Процент простоя процессора
  3. Использование ядра
  4. Использование памяти
  5. Смена активности

Я пытаюсь использовать эти команды для генерации этих 5 файлов, и, похоже, возникают трудности.

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

Пока эти команды выполняются, выходные файлы просто пусты. Кто-нибудь знает, почему я не могу сгенерировать эти файлы?

Я очень ценю вашу помощь.

Спасибо, Аарон

UDPATE : Вот копия выходного файла: http://www.queencitytech.com/ServerPerfRepo180610.out

1 Ответ

1 голос
/ 18 июня 2010

Возможно, это опечатка, но файлы, которые вы ищете, и файлы, которые вы создаете, отличаются.

То есть строка OUTPUT=... показывает ДЕНЬ-МЕСЯЦ-ГОД , а строки grep говорят: МЕСЯЦ-ДЕНЬ-ГОД

РЕДАКТИРОВАТЬ : ОК, вы опубликовали выходной файл. Там есть все виды специальных символов из команды top. Можете ли вы добавить пакетный аргумент (top -d1 -n1 -b) к top, чтобы скрыть это?

ДРУГОЕ РЕДАКТИРОВАНИЕ : Ваши команды grep зависят от конкретного случая. Это намеренно? Результат не имеет совпадений для нескольких ваших фильтров grep. Попробуйте добавить в команды регистр игнорирования (grep -i). Кроме того, вы ищете "load avg", но в выводе указано "load средняя", поэтому вы никогда не найдете его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...