20 Mayıs 2009

Sistem sıcaklık bildirimi

Sistemlerin belli bir sıcaklığı geçtiğinde e-posta ile bildirim yapabilmesi için mbmon'dan yararlandım. Önce mbmon'un çeşitli kullanım parametrelerini görelim:

Default 5 saniyede bir çıktı verir. (Sistem 28 derece. Fan hızı 3000)
# mbmon -A

Temp.= 254.0, 28.0, 201.0; Rot.= 3000,    0,    0
Vcore = 1.18, 1.82; Volt. = 3.41, 6.85, 11.67,  -0.00, -1.69

Temp.= 254.0, 28.0, 201.0; Rot.= 3000,    0,    0
Vcore = 1.18, 1.82; Volt. = 3.41, 6.85, 11.67,  -0.00, -1.69
...
...

30 saniyede bir çıktı verir.
# mbmon 30 -A

Temp.= 254.0, 28.0, 201.0; Rot.= 3013,    0,    0
Vcore = 1.18, 1.82; Volt. = 3.41, 6.85, 11.67,  -0.00, -1.69
...
...

Sadece tek bir çıktı verir.
# mbmon -A  -c 1

Temp.= 254.0, 28.0, 201.0; Rot.= 2986,    0,    0
Vcore = 1.18, 1.82; Volt. = 3.41, 6.85, 11.67,  -0.00, -1.69

Çıktının formatı aşağıdaki gibi farklı olması için -r parametresi kullanılır.
# mbmon -A -r
TEMP0 : 254.0
TEMP1 : 28.0
TEMP2 : 201.0
FAN0  : 3000
FAN1  :    0
FAN2  :    0
VC0   :  +1.18
VC1   :  +1.82
V33   :  +3.41
V50P  :  +6.85
V12P  : +11.67
V12N  :  -0.00
V50N  :  -1.69

Sadece TEMP1 değerini almak için -T parametresi kullanılır:
# mbmon -A -c 1 -T 2
28.0

Sadece FAN0 değerini almak için -F parametresi kullanılır:
# mbmon -A -c 1 -F 1
3000

Diğer kullanım parametreleri ve ayrıntı için tabi ki:
# mbmon -h
MotherBoard Monitor, ver. 2.05 by YRS.
Usage: mbmon [options...] <seconds for sleep> (default 5 sec)
 options:
  -V|S|I: access method (using "VIA686 HWM directly"|"SMBus"|"ISA I/O port")
  -A: for probing all methods, all chips, and setting an extra sensor.
  -d/D: debug mode (any other options except (V|S|I) will be ignored)
  -e [0-2]: set extra temperature sensor to temp.[0|1|2] (need -A).
  -p chip: chip=winbond|wl784|via686|it87|gl52|lm85|lm80|lm90|lm75
            for probing chips
  -Y: for Tyan Tiger MP/MPX motherboard
  -h: print help message(this) and exit
  -f: temperature in Fahrenheit
  -c count: repeat <count> times and exit
  -P port: run in daemon mode, using given port for clients
  -T|F [1-7]: print Temperature|Fanspeed according to following styles
    style1: data1\n
    style2: data2\n
    style3: data3\n
    style4: data1\ndata2\n
    style5: data1\ndata3\n
    style6: data2\ndata3\n
    style7: data1\ndata2\ndata3\n
  -r: print TAG and Value format
  -u: print system uptime
  -t: print present time
  -n|N: print hostname(long|short style)
  -i: print integers in the summary(with -T option)

Şimdi bu bilgiler ışığında yazdığım aşağıdaki gibi bir script belirli zaman aralıklarında çalıştırılırsa, sistem ısındığında e-posta ile bize bildirim yapacaktır.

#!/bin/bash

# mbmon -c 1 : 1 kere cikti almak icin
#       -T 2 : sicakligin sadece 2. degeri almak icin
# Cikti tamsayi olmadigi icin awk ile noktadan
# onceki deger alinir.

#Sicaklik derecesine gore bildirim.
#DEGER=`mbmon -A -c 1 -T 2|awk -F. '{print $1}'`

# Fan hizina gore bildirim
DEGER=`mbmon -A -c 1 -F 1`

if [ $DEGER -gt 3850 ]
then
        echo "Sistem odasinda sicaklik artisi tespit edildi" | mail -s "Sicaklik YUKSEK" bilgiislem@abckurumu.com.tr
fi

exit

12 Mayıs 2009

Debian'a MRTG kurulumu

# apt-get install snmpd mrtg apache2

# nano /etc/snmp/snmpd.conf

----------
# sec.name source community
com2sec paranoid default public
#com2sec readonly default public

şöyle değişecek:

# sec.name source community
#com2sec paranoid default public
com2sec readonly default public
--------------

#/etc/init.d/snmpd restart


# mkdir /var/www/mrtg

# cp /etc/mrtg.cfg /etc/mrtg.cfg.yedek
# nano /etc/mrtg.cfg

içini sil ve şunu yapıştır:

WorkDir: /var/www/mrtg
Options[_]: bits,growright


# cfgmaker public@localhost >> /etc/mrtg.cfg
# indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

5 dk. bir çalışacak komut şurada:

# cat /etc/cron.d/mrtg
*/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi

Grafikleri 5 dk. beklemeden hemen görmek için :

# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1

Sayfayı görmek için:
http://mrtg_server/mrtg