Jump to content
Калькуляторы

Информация по загрузке CPU во FreeBSD

Поделитесь, как можно получить информацию по утилизации системных ресурсов, таких как память, процессор и т.п.

load average я беру из sysctl.

Загрузку процессора я хочу учитывать с разбивкой на системные и пользовательские задачи, прерывания и т.п.

Утилизацию можно посчитать из kern.cp_times, но это нужно брать дельту за период, хотя бы за минуту.

Но если запустить top, утилизация выводится сразу. Может она хранится где-то в готовом виде?

Share this post


Link to post
Share on other sites

Поделитесь, как можно получить информацию по утилизации системных ресурсов, таких как память, процессор и т.п.

load average я беру из sysctl.

Загрузку процессора я хочу учитывать с разбивкой на системные и пользовательские задачи, прерывания и т.п.

Утилизацию можно посчитать из kern.cp_times, но это нужно брать дельту за период, хотя бы за минуту.

Но если запустить top, утилизация выводится сразу. Может она хранится где-то в готовом виде?

CPU скрипт , нашел в инете , мониторю через nagios

./check_cpu_usage -w 70 -c 90

Вывод

OK - CPU usage is 29% for server dnw.xxx.ru. |cpu_usage=29%;70;90; cpu_user=20%; cpu_system=9%;

 

 

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin

ST_OK=0
ST_WR=1
ST_CR=2
ST_UN=3

# Plugin name
PROGNAME=`basename $0`

# Version
VERSION="Version 1.0"

# Author
AUTHOR="Majo Jamrich"


print_version() {
   echo "$PROGNAME $VERSION $1"
}

print_help() {
   print_version "($AUTHOR)"
   echo ""
   echo "$PROGNAME is a Nagios plugin to check CPU utilization."
   echo ""
   echo "Options:"
   echo ""
   echo "--warning | -w"
   echo "--critical | -c"
   echo "--help | --usage"
   echo ""
   echo "Usage:"
   echo "./check_cpu_usage -w 80 -c 100"
   echo ""
   exit $ST_UN
}

case "$1" in
   --help|-h|--usage|-u)
       print_help
       exit $ST_UN
       ;;
   --warning|-w)
       host=$2
       ;;
   --critical|-c)
       host=$2
       ;;
   -V)
       print_version
       exit
       ;;
   *)
       echo "Unknown argument: $1"
       echo "For more information please try -h or --help!"
       exit $ST_UN
       ;;
esac
shift

if [ `uname` != "FreeBSD" ]; then
   echo "This plugin is only for FreeBSD."
fi

if [ -z $1 ] || [ -z $3 ]; then
   print_help
   exit  $ST_UN
fi

if [ "$1" -ge "$3" ]; then
   echo "Warning value must be greater than critical value!"
   exit $ST_UN
fi

warn=$1
crit=$3

cpu_all=$( vmstat -c 2 -n 0 | tail -n 1 | awk '{print $15 " " $16 " " $17}' )
cpu_user=$( echo $cpu_all | awk '{print $1}')
cpu_sys=$(  echo $cpu_all | awk '{print $2}')
cpu_idle=$( echo $cpu_all | awk '{print $3}')
cpu_usage=$(( 100 - $cpu_idle )) 
perfdata="cpu_usage=$cpu_usage%;$warn;$crit; cpu_user=$cpu_user%; cpu_system=$cpu_sys%;"

if [ $( echo "$cpu_usage>$1" | bc ) -gt 0 ] && [ $( echo "$cpu_usage<$3" | bc ) -gt 0 ]; then
   echo "WARNING - CPU usage is $cpu_usage% for server `hostname`. |$perfdata"
   exit $ST_WR
elif [ $( echo "$cpu_usage>$3" | bc ) -gt 0 ]; then
   echo "CRITICAL - CPU usage is $cpu_usage% for server `hostname`. |$perfdata"
   exit $ST_CR
else
   echo "OK - CPU usage is $cpu_usage% for server `hostname`. |$perfdata"
   exit $ST_OK
fi

Edited by roysbike

Share this post


Link to post
Share on other sites

А вам в каком виде нужно дергать информацию и для чего??

Share this post


Link to post
Share on other sites

Скрипт (на муниновский похож) то же самое делает - берет два измерения за период (из vmstat) и считает дельту.

Мне для самодельного мониторинга надо. Примерно в том виде, как в top выводится, в процентах.

Share this post


Link to post
Share on other sites

Дабы не плодить темы.

Подскажите как написать скрипт, для нагиоса, чтобы проверять доступность сервиса на машине, путем сканирования портов через nmap?

Он ведь любой порт сканит на удаленной машине, ну чтобы не проверять сервис.

Еще вопрос, прочитал про скрипт для нагиоса в котором человек при помощи nmap пингует удаленную машину и отдает в нагиос данные(замена дефолтового пинга).

ee /usr/local/libexec/nagios/check_nmap
#!/bin/sh
NMAP="/usr/local/bin/nmap -sP"
TMP=/var/tmp/nmap_ping.$$
CHECK="Nmap Ping"

results_exit()
   {
       rm -f $TMP
       echo "$CHECK: ${2}"
       exit $1
   }
$NMAP $1 > $TMP || result_exit 255 "Could not execute $NMAP"

       grep "Host seems down" $TMP
       [ $? -eq 0 ] && results_exit 2 "CRITICAL"
       grep "Host is up" $TMP
       [ $? -eq 0 ] && results_exit 0 "Ok"
       results_exit 3 "Unknown"

Подскажите как для всех сервисов такое сделать?

Share this post


Link to post
Share on other sites

Возник еще вопрос, есть готовые плагины для нагиоса для HР,Dlink,TPlink,DSL коммутаторы Zyxel, свичей через snmp, статистика по трафику с определенного порта, поднять порт или нет, графики загрузки определенного порта?

Так же было бы интересно если есть готовые плагины для HP серверов(загрузка проца,загрузка с интерфейса,диски,пользователи и тд. Все что можно - нужно!)(важно что там крутиться? вин или unix?)

ILo не предлогать :)

Share this post


Link to post
Share on other sites

Я бы проверял работу сервисов с помощью этого.

Хотя вопрос выглядит так, будто обычного check_tcp достаточно.

Или нужно именно чтобы nmap сканировал какой именно сервис висит на порту?

Share this post


Link to post
Share on other sites

Ну да,почему бы не ограничиться Nmap, который и пинговать умеет и порты сканировать... Ну по логике.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this