第一時間要得知,可能需要增加設備,或是改良電路,上面許多網友都提出很好的建議.
除了這些以外,也有網友提出一些程式可以提供警報.但是多為Windows方面的.
敝人在此提供一個在Linux上的Python模組.然後再搭配後續發送email的程式,
可以作簡易的系統溫度警報.Linux要先安裝lm_sensors模組,就可以讀取溫度資訊.
lm_sensors官網: http://lm-sensors.org/
以下為溫度模組程式碼:
<pre class="c" name="code">#!/usr/bin/env python
# ---------------------------
# Linux Temperature Utility
# coordinate with lm_sensors
# by Bunko
# ---------------------------
from subprocess import Popen, PIPE, STDOUT
def get_sensors():
"""Get Core Temperature, FAN Speed and MB Temperature"""
result_sensor = Popen("sensors", stdout=PIPE, stderr=STDOUT).communicate()[0]
results = result_sensor.split('\n')
cores = {}
fans = {}
boards = {}
for line in results:
data = line.split()
if len(data) > 0:
# Core Temp
if data[0].startswith('Core'):
corevar = data[0] + data[1][:-1]
coretemp = data[2][:-3]
coretemp = coretemp[1:]
cores[corevar] = coretemp
# -----------------
if data[0].startswith('CPU'):
if data[1] == 'FAN':
# CPU FAN Speed
fans[data[0]] = data[3]
if data[1] == 'Temperature:':
# CPU Temperature
ctemp = data[2][:-3]
ctemp = ctemp[1:]
boards[data[0]] = ctemp
# ----------------
if data[0].startswith('CHASSIS'):
# CHASSIS FAN Speed
speed = data[2][5:]
fans[data[0]] = speed
#
if data[0].startswith('MB'):
# MB Temperature
mtemp = data[2][:-3]
mtemp = mtemp[1:]
boards[data[0]] = mtemp
#
# -------------------------
return cores, boards, fans
# ------------------------------------------
if __name__ == '__main__':
cores,boards,fans = get_sensors()
print 'Cores:', cores
print 'Boards:', boards
print 'FAN Speeds:', fans
執行情形:
Cores: {'Core0': '41.0', 'Core1': '25.0'}
Boards: {'CPU': '25.0', 'MB': '22.0'}
FAN Speeds: {'CHASSIS': ':1341', 'CPU': '816'}
將前面的程式碼存為temputil.py,置於相同目錄.
再來是簡易系統溫度報警程式程式碼:
程式碼放不下....
先放一部分:
<pre class="c" name="code">#!/usr/bin/env python
# encoding: utf-8
# --------------------------------
# Simple System Temperature Alert
# by Bunko
# --------------------------------
import temputil
import smtplib
from email import utils
from email.mime.text import MIMEText
# ----- 發送用的帳號 ------
MAIL_USER = 'test1@gmail.com'
MAIL_PASS = 'testpass'
# ----- 通知郵箱 可以輸入多個 ------
ALERT_MAILS = ['test1@gmail.com','test2@gmail.com']
# ----- 溫度報警值 -----
CORE0 = 40
MB = 26
CPU = 30
<pre class="c" name="code">def send_gmail(fromaddr, passwd, toaddrs, subject, tranmsg):
server = 'smtp.gmail.com'
to = ', '.join(toaddrs)
msg = MIMEText(tranmsg, _subtype='plain', _charset='utf-8')
msg['To'] = to
msg['From'] = fromaddr
msg['Subject'] = subject
msg['Date'] = utils.formatdate(localtime=1)
msg['Message-ID'] = utils.make_msgid()
# ---- login smtp server ----
smtpserver = smtplib.SMTP(server, 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login(fromaddr, passwd)
# ---- Try to Send Mail ----
try:
smtpserver.sendmail(fromaddr, toaddrs, msg.as_string())
rtnval = True
except smtplib.SMTPException:
rtnval = False
#
smtpserver.close()
return rtnval
<pre class="c" name="code"># ----- Main() -----
def Main():
cores,boards,fans = temputil.get_sensors()
# --- 可視需要增加 ---
core0_temp = float(cores['Core0'])
cpu_temp = float(boards['CPU'])
mb_temp = float(boards['MB'])
if core0_temp > CORE0 or cpu_temp > CPU or mb_temp > MB:
# print 'Alert!'
subj = u'測試系統溫度過高'
msg = u'設定值為 CPU:%d 核心:%d 主板:%d\n' % (CPU, CORE0, MB)
msg += u'測量值為 CPU:%5.2f 核心:%5.2f 主板:%5.2f' % (cpu_temp, core0_temp, mb_temp)
send_gmail(MAIL_USER, MAIL_PASS, ALERT_MAILS, subj, msg)
# -------------------------
if __name__ == '__main__':
Main()
郵箱帳號,密碼,被通知郵箱,均需修改.報警值可自行增加,設定的數值視實際情況調整.配合Cron使用,即可排成檢查.
發送的mail大略如圖所示:
上面有錯字,修正:配合Cron使用,即可排程檢查.
模組與報警程式ssta,亦在敝人blog發布.歡迎試用與指正.
http://bunko666.wordpress.com/2012/02/17/linux%E7%B3%BB%E7%B5%B1%E6%BA%AB%E5%BA%A6%E7%9B%A3%E6%8E%A7%E5%A0%B1%E8%AD%A6%E7%A8%8B%E5%BC%8F/
可能要用類似物連網之類的溫度感測裝置與無線網路或3G的組合吧!!
希望對你有所幫助囉!!
第一時間 UPS應該會檢測到市電異常(除非冷氣與電腦設備是吃不同迴路),我是覺得市電異常就要發訊息了,不然長時間斷電單靠UPS應該也撐不了多久(就算有設定UPS多少電力以下開始自動關機,管理人員最好還是能夠知道)。
溫度通知還是必要的.... 我遇過水冷式冷氣水塔出問題。
另外,伺服器高溫運作後,小心後遺症(如我的大頭照)。
國內幾家UPS大廠都有環境控制的選購配件和解決方案, 問一問UPS的業務應該就會有答案.
對啊,高級一點的UPS,都有這種功能,
(但是話說回來,冷氣故障,室內溫度升高,但主機不故障,那就不知如何監控了,因為電腦只是當機,又不是沒有電
只能靠人工,用手機或電腦,連進公司看看囉,(像我們十台SERVER,也不能有人值班)
機器本身應該都有溫度感測器,可以從主機拿到數值才對
要監測之後觸發事件的話可以自己寫小程式或是用一下nagios來管理吧
懶得整了,隨便 po 個產品資訊網頁,參考一下吧.
http://www.yingshuo.com.tw/page22.php
http://www.black-box.com.tw/product01.php?item=1&pclass=47
http://www.raritan-ap.com/tw/environment-management/
http://www.aten.com.tw/products/productList_altusen.php?pcid=20060411153941001&psid=20060425140916003&layerid=subClass1
不過可能還是要請原廠介紹工程公司來弄比較穩當.
要由機房的全規劃談起,因為不只是你的server會過熱等問題。
冷氣是有多少台,有10多台的server,冷氣應該也要有異常通告吧。
我們公司初期未導入時,在機房門口放個溫度計,守衛尋廠時要去觀看一下溫度,有異常要馬上通報。
後續就開始做環境的一些偵測了,冷氣斷電會馬上有警告。其它的,你可以詢問一下你的代理商,server中有沒有這些異常的通告。
機房的環境控制是很重要的,如果建置時沒有環控系統做恆溫恆溼控制與異常告警
這一部分大多是請機電/冷房空調專業人員來做設計。
不過後來由IT/MIS人員接手自己用一些小工具,也是可以做得到的機房溫控告警
以小弟的經驗,提供幾個解決方案給您參考
1.透過SNMP 簡單網路管理協定來做監控程式
機房裡大多有的東西(UPS / Cisco 網路設備 / Windwos Server / HP Server),這些東西都有支援SNMP,且內部自己都有溫度的sensor,透過SNMPget 方式抓到數值以後再做發送mail或簡訊告知。
以下是之前我做過的幾個SNMP OID
UPS 電池溫度 1.3.6.1.2.1.33.1.2.7
Cisco 機箱溫度 1.3.6.1.4.1.9.5.1.2.13
chassisTempAlarm OBJECT-TYPE
SYNTAX INTEGER {
off(1), -- temperature within normal range
on(2), -- temperature too high
critical(3) -- critical temperature, system
-- shut down imminent
}
2.另外Windows 系統可以透過第三方的免費軟體,也可以得到一些主機部件(如CPU/HDD)的溫度與風扇數值
透過硬體監控溫度軟體SpeedFan,提供 .1.3.6.1.4.1.30503.1.2.x
http://www.almico.com/speedfan.php
透過磁碟溫度監控軟體 DiskTemp.exe
http://www.satsignal.eu/software/disk.html#DiskTemp
3.如果不想自己開發程式,也有很便宜的USB溫度感測器可以買,附贈的軟體就可以發 MSN & Mail
http://www.pcsensor.com/index.php?_a=viewProd&productId=6
這很簡單~
雖然大型公司可以設製溫度控制機制,
但那是高成本的一個方式,
建議冷氣可以設置兩個以上,
一台壞了,還有一台在運作~
如果是中央系統,那更不用擔心啦,
中央系統壞了一定會馬上知道~
待過銀行的OP,當時機房是24小時都有人看管,每天都要記錄冷氣溫度,一個禮拜要測試一次UPS是否有正常?有兩台冷氣,要手動切換,只要斷電,地下室的UPS就會啟動(有馬達那種)。
現在待的公司比較小,所以沒有專人看管,只有裝兩台冷氣,會自動切換,白天A冷氣,晚上B冷氣,一台壞了,還有另外一台~我每天都會去機房看一下~兩年多了還沒發生過Server當機的情形~
所以建議最好有兩台冷氣,互相切換,再加上UPS不斷電系統,一天至少一次巡視機房,也比你讓Server過熱再來補救來的重要~
之前也跟你煩惱同樣的問題~
我只是想要能在機房溫度超標時通知我而已...但台灣市面上要的溫控通知系統都不便宜...唉~~~
後來我找到這個便宜又達到功能的小東西,一端接在電話線上,當機房溫度超過設定值就會撥市話打我手機...大陸很多這種機房溫濕報警器產品,還不錯用~
一台約RMB 350左右....
小弟之前遭遇過相同慘痛經驗,後來使用了"SENSAPHONE"後就解決了此問題,當時買的機型算是一般,好像可外接8個感測器,但一般你只會用到"溫度"、"濕度"、"煙霧"、"供電"等感測器來幫你偵測是否超過你所設定之標準值,超過時它會自動撥打你所設定之聯絡人的電話,並告知聯絡人目前所偵測到之狀況為何?
細節如你有需要可聯絡:映碩科技-楊文亮先生 0925989582
"SENSAPHONE"的產品,個人使用的經驗算是很耐用並且它在國外還蠻有名的.
機電系統與設備溫度偵測解決應用方案....請各位參考http://www.chw-roc.com.tw/front/bin/home.phtml 有不懂之處歡迎請教//
USB送電,行動電源可,遠端監控、歷史數據曲線、歷史數據轉CSV
https://chenlidu.gitbook.io/eirs/