lm_sensors的軟件可以幫助我們來監(jiān)控主板,CPU的工作電壓,風扇轉速、溫度等數(shù)據(jù)。這些數(shù)據(jù)我們通常在主板的 BIOS也可以看到。當我們可以在機器運行的時候通過lm_sensors隨時來監(jiān)測著CPU的溫度變化,可以預防呵保護因為CPU過熱而會燒掉。
1. 安裝lm_sensors
現(xiàn)在基本上每個Linux都已經(jīng)有l(wèi)m_sensors包了,我們主要安裝了就可以了?;蛘呶覀円部梢酝ㄟ^源文件來自己編譯。
1)在FC,RH, CENTOS下,用rpm:
[root@securitycn ~]# rpm -ivh lm_sensors-2.10.0-3.1.i386.rpm
3)編譯源文件安裝
我們可以通過:這里下載源文件
這里我們要注意的問題是要先安裝libsysfs庫,是Sysfsutils,Sysfsutils-devel軟件
tar xzvf lm-sensors-xxx.tar.gz
make user
make user_install testing
下面我們就用一些簡單的命令來利用lm_sensors來得到CPU的數(shù)據(jù)。我們要用root的身份來:
sensors-detect,然后它會自動搜索主板上的chipset和相應的driver,我們全部答YES就可以了
[root@securitycn ~]# sensors-detect
# sensors-detect revision 1.413 (2006/01/19 20:28:00)
This program will help you determine which I2C/SMBus modules you need to
load to use lm_sensors most effectively. You need to have i2c and
lm_sensors installed before running this program.
Also, you need to be `root', or at least have access to the /dev/i2c-*
files, for most things.
If you have patched your kernel and have some drivers built in, you can
safely answer NO if asked to load some modules. In this case, things may
seem a bit confusing, but they will still work.
It is generally safe and recommended to accept the default answers to all
questions, unless you know what you're doing.
We can start with probing for (PCI) I2C or SMBus adapters.
You do not need any special privileges for this.
Do you want to probe now? (YES/no):
全部默認YES即可。
然后我們啟動lm_sensors :
/etc/init.d/lm_sensors start
Starting lm_sensors: [ OK ]
我們可以通過lsmod來確定我們需要的driver已經(jīng)加載了沒有
lsmod | grep i2c
i2c_isa 9153 2 w83627hf,w83781d
i2c_i801 11341 0
i2c_dev 12613 0
i2c_ec 9025 1 sbs
i2c_core 23745 6 w83627hf,w83781d,i2c_isa,i2c_i801,i2c_dev,i2c_ec
然后我們用sensors的命令就可以了:
[root@securitycn ~]# sensors
w83627hf-isa-0290
Adapter: ISA adapter共2頁。
VCore 1: +3.33 V (min = +0.00 V, max = +0.00 V) ALARM
VCore 2: +3.36 V (min = +0.00 V, max = +0.00 V) ALARM
+3.3V: +0.93 V (min = +3.14 V, max = +3.46 V) ALARM
+5V: +5.11 V (min = +4.73 V, max = +5.24 V)
+12V: +4.56 V (min = +10.82 V, max = +13.19 V) ALARM
-12V: -7.10 V (min = -13.18 V, max = -10.88 V) ALARM
-5V: -1.93 V (min = -5.25 V, max = -4.75 V) ALARM
V5SB: +5.51 V (min = +4.73 V, max = +5.24 V) ALARM
VBat: +0.02 V (min = +2.40 V, max = +3.60 V) ALARM
fan1: 0 RPM (min = 2732 RPM, div = 2) ALARM
fan2: 0 RPM (min = 0 RPM, div = 2)
fan3: 0 RPM (min = 0 RPM, div = 2)
temp1: +38癈 (high = +50癈, hyst = +45癈) sensor = thermistor
temp2: +33.5癈 (high = +80癈, hyst = +75癈) sensor = thermistor
temp3: +33.5癈 (high = +80癈, hyst = +75癈) sensor = thermistor
vid: +0.000 V (VRM Version 10.0)
alarms:
beep_enable:
Sound alarm enabled
這里我們可以看到溫度還沒有相對應CPU,我們主要稍微修改一下/etc/sensors.conf就可以了,不過其實都不用我們自己去動手,一般我們都可以從主板生產(chǎn)商那里下載到配置文件。通過lmsensors我們就可以得到主板溫度,CPU電壓,風扇轉速這些信息。我們可以根據(jù)這些數(shù)據(jù)來監(jiān)察系統(tǒng)的運行情況來預防系統(tǒng)的問題。
接下來讓它和MRTG整合在一起吧
[root@securitycn ~]# cd /usr/local/mrtg/bin
[root@securitycn ~]# vi temp.sh
#內容如下
#!/bin/bash
cputemp=`/usr/bin/sensors | grep temp1 |awk '{print $2}'|cut -c 2-4` #這句是說找出有temp1那一行,印出第二個列的2-4個字
systemp =`/usr/bin/sensors | grep temp2 |awk '{print $2}'|cut -c 2-5` 不用解釋了吧
echo $cputemp
echo $systemp
# the uptime
uptime | sed 's:^.* up \(.*\), [0-9][0-9]* users.*$:\1:'
# my name
uname -n
[root@securitycn ~]# chmod +x temp.sh 改成可執(zhí)行
[root@securitycn ~]# ./temp.sh 試試看有沒有問題
39
33.5
15:36:19 up 22:28, 1 user, load average: 0.04, 0.09, 0.04
securitycn
再來寫下面的文件
[root@securitycn ~]# cd ../etc/
[root@securitycn ~]# vi temp.cfg
WorkDir: /data1/usr/apache/htdocs/mrtg/temp/
Target[index]: `/usr/local/mrtg/bin/temp.sh`
MaxBytes[index]:80
Options[index]: gauge, nopercent, growright
YLegend[index]: Temp (度)
ShortLegend[index]: 度
LegendO[index]: 系統(tǒng)溫度;
LegendI[index]: CPU溫度;
Title[index]: 系統(tǒng)溫度表
PageTop[index]:
主機溫度表
[root@securitycn ~]# /usr/local/mrtg/bin/mrtg /usr/local/mrtg/etc/temp.cfg
執(zhí)行3次就不報錯了
然后加入到crontab里面
*/5 * * * * /usr/local/mrtg/bin/mrtg /usr/local/mrtg/etc/temp.cfg共2頁。