Мониторинг температуры CPU и MB

Status
Not open for further replies.

newby

Cadet
Joined
Nov 19, 2013
Messages
8
Всем привет! Кто нибудь задавался вопросом: Как мониторить температуру процессора и материнской платы во Freenas? Может есть какой-то плагин с веб интерфейсом, а может командой через ssh как то можно посмотреть? В интернете есть решения, но они для Linux... Не силён я в этом(((
 

Alexey

Dabbler
Joined
Dec 11, 2013
Messages
21
Если еще нужно.
Скрипт:
Code:
#! /bin/sh
# Write email header to temp file
(
  echo "To: user@email.ru"
  echo "Subject: NAS `date +%d.%m.%Y' '%H:%M`"
  echo " "
) > /var/cover
 
# Define adastat function, which writes drive activity to temp file
adastat () {
  CM=$(camcontrol cmd $1 -a "E5 00 00 00 00 00 00 00 00 00 00 00" -r - | awk '{print $10}')
  if [ "$CM" = "FF" ] ; then
  echo " SPINNING" >> /var/cover
  elif [ "$CM" = "00" ] ; then
  echo " IDLE" >> /var/cover
  else
  echo " UNKNOWN ($CM)" >> /var/cover
  fi
}
 
# Write some general information
echo Date info - `date +%d.%m.%Y' '%H:%M:%S` >> /var/cover
cat /etc/version >> /var/cover
echo >> /var/cover
 
# Write CPU temperatures
echo Processors: >> /var/cover
sysctl -a | egrep -E "cpu\.[0-9]+\.temp" >> /var/cover
echo >> /var/cover
 
# Write HDD temperatures and status
echo HDD: >> /var/cover
for i in $(sysctl -n kern.disks | awk '{for (i=NF; i!=0 ; i--) if(match($i, '/ada/')) print $i }' )
do
echo -n $i: `smartctl -a /dev/$i | awk '/Temperature_Celsius/{DevTemp=$10;} /Serial Number:/{DevSerNum=$3};
/Device Model:/{DevVendor=$3; DevName=$4} \
END {printf "%s C - %s %s (%s) - ", DevTemp,DevVendor,DevName,DevSerNum }'` >> /var/cover;
adastat $i;
done
 
# Send status email
sendmail -t < /var/cover
exit 0

Удобнее всего по ssh.
Записуешь текст выше в файл temp.sh
Делаешь его исполняемым chmod +x temp.sh
Заходишь в cron. Добавляешь задание на запуск скрипта ./temp.sh
Обязательно нужно прописать email для root
и в настройках электронной почты smtp.
И будешь получать на адрес root информацию о температуре проца и винтов.
 

djonik1562

Explorer
Joined
Feb 6, 2014
Messages
61
Если еще нужно.
Скрипт:
Code:
#! /bin/sh
# Write email header to temp file
(
  echo "To: user@email.ru"
  echo "Subject: NAS `date +%d.%m.%Y' '%H:%M`"
  echo " "
) > /var/cover

# Define adastat function, which writes drive activity to temp file
adastat () {
  CM=$(camcontrol cmd $1 -a "E5 00 00 00 00 00 00 00 00 00 00 00" -r - | awk '{print $10}')
  if [ "$CM" = "FF" ] ; then
  echo " SPINNING" >> /var/cover
  elif [ "$CM" = "00" ] ; then
  echo " IDLE" >> /var/cover
  else
  echo " UNKNOWN ($CM)" >> /var/cover
  fi
}

# Write some general information
echo Date info - `date +%d.%m.%Y' '%H:%M:%S` >> /var/cover
cat /etc/version >> /var/cover
echo >> /var/cover

# Write CPU temperatures
echo Processors: >> /var/cover
sysctl -a | egrep -E "cpu\.[0-9]+\.temp" >> /var/cover
echo >> /var/cover

# Write HDD temperatures and status
echo HDD: >> /var/cover
for i in $(sysctl -n kern.disks | awk '{for (i=NF; i!=0 ; i--) if(match($i, '/ada/')) print $i }' )
do
echo -n $i: `smartctl -a /dev/$i | awk '/Temperature_Celsius/{DevTemp=$10;} /Serial Number:/{DevSerNum=$3};
/Device Model:/{DevVendor=$3; DevName=$4} \
END {printf "%s C - %s %s (%s) - ", DevTemp,DevVendor,DevName,DevSerNum }'` >> /var/cover;
adastat $i;
done

# Send status email
sendmail -t < /var/cover
exit 0

Удобнее всего по ssh.
Записуешь текст выше в файл temp.sh
Делаешь его исполняемым chmod +x temp.sh
Заходишь в cron. Добавляешь задание на запуск скрипта ./temp.sh
Обязательно нужно прописать email для root
и в настройках электронной почты smtp.
И будешь получать на адрес root информацию о температуре проца и винтов.
Спасибо за скрипт. Поставил себе на 9.10 freenas. Только мне приходит не актуальная инфа по состоянию дисков, все диски приходят в SPINNING статусе, хотя 2 из 4 в IDLE.
 

djonik1562

Explorer
Joined
Feb 6, 2014
Messages
61
Я пару часов мучался, пытался понять почему не работает. Из отдельного файла если делать, всё показывает нормально. А если из Вашего скрипта, то все диски SPINNING.
В общем, думаю что "мешает" правильному получению значений функции camcontrol предварительный вызов smartctl. Вот мой код для меня работает как надо:
Code:
#! /bin/sh

# Write email header to temp file
(
  echo "To: user@gmail.com"
  echo "Subject: NAS `date +%d.%m.%Y' '%H:%M`"
  echo " "
) > /var/msg

# Define adastat function, which writes drive activity to temp file
adastatidle () {
  CM=$(camcontrol cmd $i -a "E5 00 00 00 00 00 00 00 00 00 00 00" -r - | awk '{print $10}')
  if [ "$CM" = "FF" ] ; then
  echo " SPINNING"
  elif [ "$CM" = "00" ] ; then
  echo " IDLE"
  else
  echo " UNKNOWN ($CM)"
  fi
}

# Write some general information
echo Date info - `date +%d.%m.%Y' '%H:%M:%S` >> /var/msg
cat /etc/version >> /var/msg
echo >> /var/msg

# Write CPU temperatures
echo Processors: >> /var/msg
sysctl -a | egrep -E "cpu\.[0-9]+\.temp" >> /var/msg
echo >> /var/msg

# Write HDD temperatures and status
echo HDD: >> /var/msg
for i in $(sysctl -n kern.disks | awk '{for (i=NF; i!=0 ; i--) if(match($i, '/ada/')) print $i }' )
do
SPIN=$(adastatidle $i;)
echo -n $i: `smartctl -a /dev/$i | awk '/Temperature_Celsius/{DevTemp=$10;} /Serial Number:/{DevSerNum=$3};
/Device Model:/{DevVendor=$3; DevName=$4} \
END {printf "%s C - %s %s (%s) - ", DevTemp,DevVendor,DevName,DevSerNum }'` >> /var/msg;
#adastatidle $i;
echo "$SPIN" >> /var/msg
done
echo >> /var/msg

# Send status email
sendmail -t < /var/msg
exit 0
 
Last edited:
Status
Not open for further replies.
Top