李 浩
(北京全路通信信號研究設計院集團有限公司,北京 100070)
實驗室環(huán)境監(jiān)控系統(tǒng)的研究及實現(xiàn)
李 浩
(北京全路通信信號研究設計院集團有限公司,北京 100070)
介紹一種適用于分散在不同地點的眾多實驗室(機房)的環(huán)境監(jiān)控系統(tǒng)的研究、設計和實現(xiàn)過程,并對該系統(tǒng)未來兩個可能的改進方向作出探索。
環(huán)境監(jiān)控;SNMP協(xié)議;Cacti;樹莓派
北京全路通信信號研究設計院集團有限公司作為一家集研發(fā)、設計、集成于一體的科技企業(yè),擁有幾十個實驗室(機房)。這些實驗室分布在9個樓層、34個房間,實驗室都配備機房精密空調(diào),但安全方面存在一定隱患,如電源、空調(diào)故障導致設備過熱。為了降低風險,測試中心每兩周安排一次全樓巡檢,物業(yè)公司每天安排兩次空調(diào)巡檢,受限于人力資源,無法提高巡檢頻率,安全性方面存在隱患。
為了解決這個長期存在的問題,測試中心在2013年獨立開展實驗室環(huán)境監(jiān)控系統(tǒng)的研究。環(huán)境監(jiān)控系統(tǒng)定義非常寬泛,包括空調(diào)監(jiān)控、視頻監(jiān)控、溫濕度監(jiān)控、門禁監(jiān)控、瓦斯監(jiān)控、電氣火災監(jiān)控、水災監(jiān)控和入侵監(jiān)控等,根據(jù)實驗室的應用特點,我們優(yōu)先實現(xiàn)溫濕度監(jiān)控功能,并預留接入其他各類傳感器的能力。測試中心在摸索中不斷完善設計,最終自主建設了該系統(tǒng)。從2014年初開始試運行,驗證了該系統(tǒng)的實用價值。經(jīng)過對4個實驗室歷時兩年的試運行,對系統(tǒng)進行了多項改進最終定型,即將規(guī)?;瘜嵤?,覆蓋34個實驗室上線運行。
2.1常見環(huán)境監(jiān)控系統(tǒng)的優(yōu)缺點分析
市場上傳統(tǒng)環(huán)境監(jiān)控系統(tǒng),多采用封閉設計,即傳感器采用專用硬件、服務器采用專用軟件甚至硬件的方案。業(yè)內(nèi)主流傳感器絕大多數(shù)采用RS-485總線進行傳輸,優(yōu)點是技術成熟、產(chǎn)品選擇多、傳輸介質(zhì)成本低(總線型拓撲,一對雙絞線即可傳輸);但總線型拓撲更適合單個大開間機房或直線分布的多間機房,對實驗樓這類地點分散的大量中小型實驗室,超長布線抵消了雙線傳輸?shù)牡统杀緝?yōu)勢。
2.2拓撲結構
在研究之初,力求選擇一種適合地點分散的大量實驗室的系統(tǒng)結構。為此,該系統(tǒng)最早采用星形拓撲,服務器位于中心。為提高靈活性,希望進一步降低系統(tǒng)對拓撲的依賴,做到“拓撲無關”。因?qū)嶒灅且丫邆錁怯罹C合布線系統(tǒng),利用其資源能夠極大降低布線成本。
2.3接口協(xié)議
為了實現(xiàn)拓撲無關,系統(tǒng)采用IP協(xié)議。只要保證服務器到該傳感器之間IP可達,該系統(tǒng)的服務器或傳感器可以通過互聯(lián)網(wǎng)VPN,部署在全球任意地點。
為了進一步提高系統(tǒng)的開放性和傳感器的通用性,選擇開放的簡單網(wǎng)絡管理協(xié)議(SNMP)進行傳感器溫濕度數(shù)據(jù)的傳輸,這樣就能使服務器能夠適配多種品牌的溫濕度傳感器。
2.4傳感器
2.4.1傳感器選型
基于上述的拓撲結構和接口協(xié)議的選擇,同時支持以太網(wǎng)接口、IP協(xié)議、SNMP協(xié)議的傳感器,能夠最大限度保證系統(tǒng)的開放性和靈活性。并且要求傳感器帶有液晶屏,供巡檢時查看。因此,選擇TH-5829型溫濕度傳感器,其指標如表1所示。
表1 TH-5829傳感器指標
從表1中可以看到,該傳感器支持2路外部模擬量/開關量的采集,今后可以利用這些接口增加門禁、水災監(jiān)控等功能。
2.4.2溫濕度數(shù)據(jù)讀取方法的研究及試驗
盡管TH-5829傳感器采用IP協(xié)議和SNMP協(xié)議,但按照廠家的設計,需要使用專用的服務器端軟件,所以其SNMP的私有MIB庫(管理信息庫)不公開,傳感器并不真正具備開放性。所以,需要通過試驗摸索,得到溫濕度等測量值在其MIB庫中位置,該位置使用對象標識符(OID)來標識。
在此介紹SNMP、MIB和OID的關系。在SNMP協(xié)議中,為了確保通用性,定義了唯一的樹狀結構即MIB樹來組織數(shù)據(jù)。為此,ISO和國際電報電話咨詢委員會(CCITT,國際電信聯(lián)盟(ITU)的前身)共同規(guī)定MIB樹的基本結構,如圖1所示。
除了基本結構,協(xié)議還對一些常見、通用的數(shù)據(jù)存儲格式和在樹中的位置進行規(guī)定,如接口、速率、吞吐率等。該位置使用OID這樣的以點劃分的多段數(shù)字來定位數(shù)據(jù)節(jié)點位置,如接口(interface)節(jié)點在MIB樹中的位置(OID)就是.1.3.6.1.2.1.2,enterprises節(jié)點的OID是.1.3.6.1.4.1。
為了使用SNMP協(xié)議讀取TH-5829傳感器的溫濕度,需要通過試驗找到溫濕度數(shù)據(jù)在MIB樹中的位置。首先按照傳感器說明書配置其IP地址(本例中為192.168.1.2)。試驗用PC機使用Linux系統(tǒng),經(jīng)配置可ping通傳感器,安裝NET-SNMP軟件包。我們使用SNMPWALK(SNMP遍歷)命令讀取傳感器私有MIB庫中的數(shù)據(jù)。在試驗PC中執(zhí)行snmpwalk -c public -v 2c 192.168.1.2 .1(public是SNMP中常用community名,傳感器的IP地址后面的.1表示MIB樹的ISO分支),輸入和輸出結果(部分摘錄)如下:
[root@TEST~]# snmpwalk -c public -v 2c 192.168.1.2 .1
SNMPv2-MIB::sysDescr.0 = STRING: TH-JGPOES-LCD
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.34672
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8144) 0:01:21.44
SNMPv2-MIB::sysContact.0 = STRING: jamesyangbaron@hotmail.com
SNMPv2-MIB::sysName.0 = STRING: NetWork System
SNMPv2-MIB::sysLocation.0 = STRING: Temp/ Hum Series
SNMPv2-MIB::sysServices.0=INTEGER: 5
SNMPv2-SMI::enterprises.34672.1.0= STRING: "22.2"
SNMPv2-SMI::enterprises.34672.2.0= STRING: "43.9"
SNMPv2-SMI::enterprises.34672.3.0= STRING: "9.3"
SNMPv2-SMI::enterprises.34672.4.0= INTEGER: 0
SNMPv2-SMI::enterprises.34672.5.0= INTEGER: 0
…
End of MIB
輸出結果中的“22.2”、“43.9”分別與傳感器屏幕上顯示的溫度、濕度值相同,“9.3”、0、0分別是露點值(當前絕對濕度下低于此溫度將結露)、外部采集1、外部采集2。這些OID中的“enterprises.34672.1.0”是相對地址,查詢圖1可知,其絕對地址是“.1.3.6.1.4.1.34672.1.0”。進一步驗證,執(zhí)行SNMPGET命令單獨讀取單獨OID里存放的數(shù)據(jù),以溫度為例,輸入和輸出結果如下:
[root@TEST~]# snmpget -c public -v 2c 192.168.1.2 .1.3.6.1.4.1.34672.1.0
SNMPv2-SMI::enterprises.34672.1.0 = STRING: "22.2"
至此,獲得了TH-5829傳感器的數(shù)據(jù)存儲位置,使其具備了開放性。
2.5服務器端
受益于傳感器的開放性,服務器端只需要支持SNMP協(xié)議采集數(shù)據(jù)即可。但僅讀取溫濕度數(shù)值還不能成為溫濕度監(jiān)控系統(tǒng),還需要圖形化展現(xiàn)、分組管理、數(shù)據(jù)導出、閾值報警、賬戶分級等功能,另外需要B-S結構以方便用戶在不同操作系統(tǒng)下的訪問,這樣才算是比較完整、易用的環(huán)境監(jiān)控系統(tǒng)。為此,選擇了Cacti網(wǎng)管系統(tǒng)作為服務器端軟件。
Cacti是遵循GPL協(xié)議的自由軟件。作為一個網(wǎng)管系統(tǒng),Cacti可通過SNMP協(xié)議獲取數(shù)據(jù),數(shù)據(jù)通過RRDtool(Round Robin Database Tool)存入RRD數(shù)據(jù)庫,當用戶訪問時,RRDtool從RRD數(shù)據(jù)庫中讀取數(shù)據(jù)并實時繪圖,再由Cacti調(diào)用PHP語言動態(tài)生成網(wǎng)頁。RRD數(shù)據(jù)庫使用循環(huán)隊列存儲,文件大小不隨時間增長,不會耗盡硬盤空間,但最早的數(shù)據(jù),會被新數(shù)據(jù)覆蓋。
Cacti基于PHP語言開發(fā),實現(xiàn)了平臺無關。試驗了Linux(Linux+Apache+MySQL+PHP,簡稱LAMP)環(huán)境和Windows(Win Server2003+IIS+MySQL+PHP)環(huán)境下的架設。除了x86硬件平臺,還試驗了ARM硬件平臺下的LAMP環(huán)境,也可正常運行。
3.1服務器端的安裝
首先試驗手動分步安裝配置LAMP環(huán)境和Cacti并獲成功,為簡化部署過程,最終選用Cacti的快速部署方案CactiEZ中文版v10.1。這是一套基于CentOS 6.0(一種基于Redhat源代碼的Linux發(fā)行版本)的LAMP集成環(huán)境,特點是全自動安裝、配置。在試驗中,為降低成本,服務器安裝在ESXi虛擬機中。物理機配置:CPU Xeon E7-4807@1.87 GHz×12核;內(nèi)存16 GB;硬盤800 GB。該虛擬機配置:CPU使用2核;內(nèi)存2 GB;硬盤60 GB,可見Cacti對硬件資源的要求較低。CactiEZ套件安裝后,LAMP和Cacti已配置好。最后,在客戶機瀏覽器中輸入服務器地址開始使用Cacti。
3.2溫濕度數(shù)據(jù)的讀取
在Cacti中,繪圖需要經(jīng)過數(shù)據(jù)讀取和圖形繪制這兩個步驟,所以需要編制數(shù)據(jù)模板和圖形模板。
3.2.1數(shù)據(jù)模板的編制
在Cacti控制臺中,選擇“模板”—“數(shù)據(jù)模板”—“添加”進入添加數(shù)據(jù)模板的界面。為溫度和濕度自行定義不重復的模板名稱和數(shù)據(jù)源內(nèi)部名稱并記錄好,編制圖形模板和閾值模板時還會用到。OID欄填入2.4.2節(jié)得到溫度和濕度的OID值。
3.2.2圖形模板的編制
在Cacti控制臺中,選擇“模板”—“圖形模板”—“添加”進入添加圖形模板的界面。創(chuàng)建一個溫濕度合一的圖形模板,將3.2.1節(jié)中創(chuàng)建的溫度和濕度的數(shù)據(jù)源加入,以CF類型“AVERAGE”就可以繪制溫濕度折線圖。為了使折線圖更加直觀,還可為其增加文字標簽,圖形對象類型選擇“GPRINT”,CF類型中“LAST”、“MAX”、“MIN”、“AVERAGE”,分別在圖形下方顯示溫度或濕度的最新值、最高值、最低值、平均值。
3.2.3將傳感器加入監(jiān)控系統(tǒng)
在Cacti控制臺中選擇“管理”—“主機”—“添加”進入添加主機的界面。主機段:描述填入“5-1_設備區(qū)_配線柜”(例子),主機名填入傳感器的IP地址192.168.67.240(例子),保存。點擊上方“為這個主機添加圖形”,在圖形模板段:圖形模板名稱中選擇3.2.2節(jié)中創(chuàng)建的圖形模板,添加,保存。按此方法將全部傳感器加入系統(tǒng),還可以用圖形樹功能將多臺設備或一臺設備的多張圖編入樹形結構,使結構更清晰。按上述方法生成的實驗室溫濕度折線圖,如圖2所示。
3.3閾值告警功能
按照GB50174-2008對C類機房的溫度要求,機房溫度應在18 ℃~28 ℃范圍內(nèi)。而出于實驗室安全考慮,溫度超出10 ℃~40 ℃范圍時,應有緊急告警。為此,需要在Cacti系統(tǒng)中增加兩個閾值模板。在Cacti控制臺中選擇“模板”—“閾值模板”—“添加”進入添加閾值模板的界面。數(shù)據(jù)模板和數(shù)據(jù)源選擇之前編制好的溫度模板,兩組模板中的下限、上限值分別設置為18、28 ℃和10、40 ℃。在控制臺中設置系統(tǒng)發(fā)送郵件時使用的郵箱賬號后,可以在閾值模板中設置告警接收人郵箱。有了閾值模板,可以很方便地為每臺設備按需增加不同的閾值,當溫度超限時,系統(tǒng)會自動向預定的接收人發(fā)送告警郵件。
實驗室環(huán)境監(jiān)控系統(tǒng)經(jīng)過兩年的試運行,穩(wěn)定性良好未發(fā)生宕機,數(shù)據(jù)記錄連續(xù)可靠。在試運行中,發(fā)生過4次空調(diào)故障導致的實驗室溫度超限、以及1次實驗室意外停電,系統(tǒng)均立即發(fā)出告警郵件,經(jīng)及時處置避免了設備損失和安全事故的發(fā)生。
本系統(tǒng)采用全IP化的服務器-傳感器結構,相比市場同類產(chǎn)品,成本更低,開放性和靈活性領先??紤]繼續(xù)降低成本、增強其靈活性。本文分別提出兩種改進思路,即:服務器低成本化方案、增強系統(tǒng)靈活性的分布化方案。
5.1服務器低成本化方案
實驗室環(huán)境監(jiān)控系統(tǒng)成本分為兩部分,服務器和傳感器。當傳感器數(shù)量較少時,服務器在總成本中占比較高。在傳感器大于等于100臺時,建議使用物理機作為服務器;當傳感器大于10臺小于100臺時,可以采用虛擬機作為服務器;當傳感器小于等于10臺時,可以采用樹莓派主機作為系統(tǒng)服務器。高中低3種方案的服務器硬件成本約為6萬元、1萬元、400元;TH-5829傳感器硬件成本約1 200元。
樹莓派2 model B型ARM主機配置:CPU博通BCM2836@1 GHz×4核;內(nèi)存1 GB;硬盤32 GB(MicroSD閃存卡)。操作系統(tǒng)選用Raspbian,使用APT工具安裝LAMP和Cacti,由于版本的關系,Raspbian上的Cacti只有英文版,且需手動安裝配置LAMP環(huán)境。安裝、設置過程和功能與x86平臺CentOS系統(tǒng)下幾乎完全相同。在4個傳感器的環(huán)境中經(jīng)6個月測試,運行穩(wěn)定,CPU占用率峰值60%、平均15%;內(nèi)存使用400 MB、空閑600 MB;硬盤已用3 GB、空閑29 GB。樹莓派系統(tǒng)下生成的溫濕度折線如圖3所示。
5.2分布化方案
對于5臺以下傳感器的小規(guī)模應用,還可以使用樹莓派作為傳感器以降低成本。樹莓派作為嵌入式主機,提供GPIO口。在Raspbian中可通過Python或C程序直接讀取GPIO口上連接的DHT-11溫濕度傳感模塊,讀取的溫濕度數(shù)據(jù)直接上傳到物聯(lián)網(wǎng)平臺中,繪制出溫濕度折線圖。在此方案下,不再需要采購服務器(使用免費物聯(lián)網(wǎng)平臺),每臺傳感器的硬件成本約600元。
[1] The Cacti Group. The Cacti Manual [EB/OL].[2015-12-28] http://docs.cacti.net/wiki:documentation.
[2] Raspberry Pi Foundation. Raspberry Pi Documentation [EB/ OL]. [2015-12-28] https://www.raspberrypi.org/documentation/.
The paper introduces the research, design and implementation of an environment monitoring system applicable to labs (computer rooms) separated atdifferent locations, and discusses two possible ways of improving the system.
environment monitoring; SNMP protocol; Cacti; Raspberry Pi
10.3969/j.issn.1673-4440.2016.03.012
2015-12-29)