Linux 宝库 - 用MRTG监控CPU温度

来源:百度文库 编辑:神马文学网 时间:2024/05/05 10:00:12
夏天又到噜~相信很多人都粉关心自己的CPU会不会因为过热而罢工呢?那Linux底下有没有可以监测温度的软件哩?
有滴,那就是lm-sensor。那该如何安装呢?
我在google找到的文章,用我破破的英文为大家翻译一下吧。
关于lm-sensor最新的软件可以在http://www2.lm-sensors.nu/~lm78/找到。
如果你的核心版本是2.2.X
请下载i2c和lm-sensor二个套件
如果你的核心版本是2.4.X
只需要下载lm-sensor就可以了
为了套件管理的方便我把这二个档案都放在/usr/local/src底下
注:如果要让i2c也可以在其它核心版本执行行,要把它编成模块,后面会有解说。
root# cd /usr/local/src
root# tar zxvfp lm_sensors-2.8.0.tar.gz
root# tar zxvfp i2c-2.8.0.tar.gz
root# cd /usr/local/src/i2c-2.8.0
root# make clean <<<--- 很重要,这样才不会有编译不完全
root# make dep
root# make all
root# make install
这样就把ic2给装好啦接着装lm-sensor吧
root#cd /usr/local/src/lm_sensors-2.8.0
root#make clean 和上面一样,一定要做这个步骤喔
root#make dep
root#make all
root#make install
这样连lm-sensor都装好啦简单吧
root# /sbin/depmod -a
修改底下这个档案把函数库加载
root# vi /etc/ld.so.conf
/usr/local/lib 加入这一行
root# ldconfig
root#./prog/mkdev/mkdev.sh 产生驱动程序以支持要侦测的东西
root#sensors-detect 扫瞄你的主机使用那些芯片组
只要一直按Enter就好了,照它的默认值就好等到底下的东西跑出来
To make the sensors modules behave correctly, add these lines to
/etc/modules.conf:
#----cut here----
# I2C module options
alias char-major-89 i2c-dev
#----cut here----
To load everything that is needed, add this to some /etc/rc* file:
#----cut here----
# I2C adapter drivers
modprobe i2c-i801
modprobe i2c-isa
# I2C chip drivers
modprobe eeprom
modprobe w83627hf
# sleep 2 # optional
/usr/local/bin/sensors -s # recommended
#----cut here----
root#vi /etc/modules.conf
alias char-major-89 i2c-dev 把这行加进去,开机就会加载了
同时需要加载上面出现的四个模块
modprobe i2c-i801
modprobe i2c-isa
modprobe eeprom
modprobe w83627hf
接下来运行sensors就可以看到信息了:
root#sensors
w83627thf-isa-0290
Adapter: ISA adapter
VCore:     +1.34 V  (min =  +1.94 V, max =  +0.73 V)       ALARM
+12V:     +12.28 V  (min = +10.82 V, max = +13.19 V)
+3.3V:     +1.78 V  (min =  +3.14 V, max =  +3.47 V)       ALARM
+5V:       +4.91 V  (min =  +4.75 V, max =  +5.25 V)
-12V:      +0.88 V  (min = -10.80 V, max = -13.18 V)       ALARM
V5SB:      +4.89 V  (min =  +4.76 V, max =  +5.24 V)
VBat:      +3.10 V  (min =  +2.40 V, max =  +3.60 V)
fan1:     8437 RPM  (min =  998 RPM, div = 8)
CPU Fan:  3668 RPM  (min =  998 RPM, div = 8)
fan3:     15340 RPM  (min =  998 RPM, div = 8)
M/B Temp:    +37掳C  (high =   -75掳C, hyst =   -94掳C)   sensor = thermistor   ALARM
CPU Temp:  +40.5掳C  (high =  +120掳C, hyst =  +115掳C)   sensor = diode           (beep)
temp3:     +37.5掳C  (high =   +80掳C, hyst =   +75掳C)   sensor = thermistor
vid:      +0.700 V  (VRM Version 1.3)
alarms:   Chassis intrusion detection                      ALARM
beep_enable:
Sound alarm enabled
eeprom-i2c-0-51
Adapter: SMBus I801 adapter at 0500
Memory type:            DDR2 SDRAM DIMM
Memory size (MB):       512
eeprom-i2c-0-50
Adapter: SMBus I801 adapter at 0500
Memory type:            DDR2 SDRAM DIMM
Memory size (MB):       512如果不想每次重开机都要重新加载一次,可以把以上那些写进/etc/rc.d/rc.local里面喔
看到上面的东东跑出来之后就成功一半啰,接下来让它和MRTG整合在一起吧
root#cd /var/www/html/mrtg
root#mkdir temp
root#cd temp
root#vi mrtg.temp
档案内容如下
#!/bin/bash
cputemp=`sensors | grep temp1 |awk ‘{print $2}‘|cut -c 2-4` 这句是说找出有temp1那一行,印出第二个列的2-4个字
systemp =`sensors | grep temp2 |awk ‘{print $2}‘|cut -c 2-4` 不用解释了吧
UPtime=`/usr/bin/uptime | awk ‘{print $3 " " $4 " " $5}‘`
echo $cputemp
echo $systemp
echo $UPtime
echo dc.blue-moon.idv.tw (改成你的主机名称)
root#chmod 755 mrtg.temp 改成可执行
root#./mrtg.temp 试试看有没有问题
40
37
18:52, 2 users,
dc.blue-moon.idv.tw
再来写下面的档案
root#vi mrtg.cfg.temp
WorkDir: /var/www/html/mrtg/temp/
Language: big5
Target[index]: `/var/www/html/mrtg/temp/mrtg.temp`
MaxBytes[index]:60
Options[index]: gauge, nopercent, growright
YLegend[index]: Temp (度)
ShortLegend[index]: 度
LegendO[index]: 系统温度;
LegendI[index]: CPU温度;
Title[index]: Blue-Moon City 系统温度表
PageTop[index]:

Blue-Moon City 主机温度表




系统: RedHat 9.0+Apache 2.0.40

这样只要连到http://yourhost.yourdomain/mrtg/temp就可以连到,不用再打檔名了
root#/usr/bin/mrtg /var/www/html/mrtg/temp/mrtg.cfg.temp
执行三次
再把它放入排程
root#vi /etc/crontab
*/5 * * * * root /usr/bin/mrtg /var/www/html/mrtg/temp/mrtg.cfg.temp > /dev/null 2>&1
这样就大功告成啦
我的范例
http://www.blue-moon.idv.tw/mrtg/temp