歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

用MRTG監測Linux系統CPU溫度

在Linux下有個叫lm_sensors的軟件可以幫助我們來監控主板,CPU的工作電壓,風扇轉速、溫度等數據。這些數據我們通常在主板的 BIOS也可以看到。當我們可以在機器運行的時候通過lm_sensors隨時來監測著CPU的溫度變化,可以預防呵保護因為CPU過熱而會燒掉。
 
  1. 安裝lm_sensors
 
  現在基本上每個Linux都已經有lm_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的數據。我們要用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已經加載了沒有
 
  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
 
  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就可以了,不過其實都不用我們自己去動手,一般我們都可以從主板生產商那裡下載到配置文件。通過lmsensors我們就可以得到主板溫度,CPU電壓,風扇轉速這些信息。我們可以根據這些數據來監察系統的運行情況來預防系統的問題。
 
  接下來讓它和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 改成可執行
 
  [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]: 系統溫度;
 
  LegendI[index]: CPU溫度;
 
  Title[index]: 系統溫度表
 
  PageTop[index]:主機溫度表
 
  [root@securitycn ~]# /usr/local/mrtg/bin/mrtg /usr/local/mrtg/etc/temp.cfg
 
  執行3次就不報錯了
 
  然後加入到crontab裡面
 
  */5 * * * * /usr/local/mrtg/bin/mrtg /usr/local/mrtg/etc/temp.cfg

Copyright © Linux教程網 All Rights Reserved