本文基于Cacti监控软件,针对在无人值守的情况下,对机房的温度进行实时的监控和图形显示,并容许设定报警温度,机房超温发送给机房管理人员。

  系统原理

  为了实时监控机房的温度,本文基于Cacti监控软件,对机房的温度进行实时的监控和图形显示,并容许设定报警温度,机房超温则发送报警信息至机房管理人员。

  Cacti是一套基于php、mysql、snmp及rrdtool开发的网络流量监测图形分析工具,利用Cacti的SNMP信息轮询机制,实时获取各种信息,并显示在Cacti监控界面。Cacti同时具有强大的插件功能,比如具备阈值报警功能的thold插件,可以发送邮件,还可以后台编程发送短信至网络管理人员的手机终端。

  系统在一台服务器上采集温度,在Cacti服务器上使用ftp获取到该数据,Cacti使用snmp获取到该数据放入rrd数据库,最后在Web上图形显示。

  系统实现

  温度采集

  购买一款USB接口的温度计,该温度计必须支持将温度记录保存至文本文件的功能。

  系统每次重启温度计监控软件都会新建一个以创建时间为文件名的日志文件,温度计监控软件还会每天新建一个日志文件。日志文件以如下的格式为记录,每行一条:

  1,35.63,2012-4-2 16:13:39

  为了使Cacti服务器读取到最后的温度记录,将在Windows服务器上编写一个计划任务,该任务定时执行,将日志文件的最后一条温度记录读取到特定的文本文件,以供Cacti服务器采集。该批处理的脚本如下:  

@echo offcd H:\temperdir/B/OD>H:\filelist.txtsetlocal enabledelayedexpansionfor/f“delims=”%%i in(H:\filelist.txt)do(seta=%%i)cd H:\temper@copy“%a%”H:\temp.txtset d=H:\temp.txtfor/f“usebackq delims=”%%i in(%d%)do(set d=%%i)if NOT“%d%”==“H:\temp.txt”(@echo %d%>H:\ftpfortemper\lastline.txt)

  上述脚本的功能大概描述如下:读取日志文件所在目录的所有文件,按照日期排序写入filelist.txt文件,然后读取filelist.txt文件最后一条记录,该记录为温度计软件目前在读写的日志文件,赋值给变量a,然后读取该日志文件copy给temp.txt以供读取(防止文件读取的时候温度计软件需要进行访问),最后读取temp.txt,如果temp.txt文件为空,则将最后一条记录即温度计最后读取到的温度写入到lastline.txt。

  添加计划任务,每4分钟运行一次:

  

schtasks /create /sc minute/mo 4 /tn “temper”/tr H:\ftpfortemper\filelist.bat

  最后,在Windows服务器上开启ftp服务,设置账号和密码,访问目录为拥有lastline.txt文件的文件夹。

Cacti监控的实现

  1.编写脚本ftp.sh以便snmp读取温度信息。

#!/bin/bashftp-i222.201.131.230 2121>/dev/null 2>&1errorline=‘0’prevtemper=`tail-n1/home/zqliu/temper/temper_log`lastline=`tail-n1/lastline.txt`if[“$prevtemper”=“$errorline”];thenprevtemper=`tail-n1/home/zqliu/temper/errorline`fiif[“$prevtemper”=“$lastline”];thenecho $errorline>>/home/zqliu/temper/temper_logtail-n1elsetail-n1/lastline.txt>>/home/zqliu/temper/temper_logawk-F“,”‘{print$2}’/lastline.txtfi

  2.设定.netrc文件,使服务器可以不用密码从温度采集服务器下载lastline.txt文件。

  3.修改snmp配置文件#vi/etc/snmp/snmpd.conf,增加如下一行:

  exec.1.3.6.1.4.1.2021.54ftp.sh/bin/bash/root/ftp.sh

  重启snmpd服务。

  4.测试新的oid:  

#snmpwalk-cpublic-v2clocalhost.1.3.6.1.4.1.2021.54UCD-SNMP-MIB::ucdavis.54.1.1=INTEGER:1UCD-SNMP-MIB::ucdavis.54.2.1=STRING:“ftp.sh”UCD-SNMP-MIB::ucdavis.54.3.1=STRING:“/bin/bash/root/ftp.sh”UCD-SNMP-MIB::ucdavis.54.100.1=INTEGER:0UCD-SNMP-MIB::ucdavis.54.101.1=STRING:“31.5”UCD-SNMP-MIB::ucdavis.54.102.1=INTEGER:0UCD-SNMP-MIB::ucdavis.54.103.1=““

  那么OID.1.3.6.1.4.1.2021.54.101.1,

  即为所需要的获取到的温度数据。

图形监控

  1.增加数据模板

  在Cacti界面中console->Templates->Data Templates,按照步骤逐一添加数据模板。设置完毕以后点击create,然后下面会多出一些选项,我们只需填写一项就可以,就是OID那一项,把上面记下来的OID填写进去,如图1所示。

  2.增加图形模板在Cacti界面中console->Templates->GraphTemplates,按照步骤逐一添加设置,添加完成后结果,如图2所示。

  3.创建图形添加完数据和图形模板后,我们就可以在本地服务器上添加新的图形了。

  在New Graphs中选择主机然后在GraphTemplates中的下拉表拉选我们添加的模板,点击create就完成了。最后的监控图形,如图3所示。

  短信报警

  首先安装thold插件,Cacti插件可以在http://docs.Cacti.net/plugins这个网站下载。并且在Cacti界面中console->Management->Thresholds,按照步骤设置监控图的上下阈值,

  然后找到thold目录下的thold_functions.php文件,在function thold_mail函数下添加:

  file_put_contents(‘/usr/local/apache/htdocs/Cacti/log/changed.log’,$subject);exec(”/usr/local/apache/htdocs/Cacti/plugins/thold/sendsms.sh“);

  该代码的意思是将告警变量(标题)$subject写入changed.log,然后执行sendsms.sh脚本。sendsms.sh为发短信的脚本。

  在这里我们采取两种方式进行短信报警,一个是使用飞信报警,二是使用短信猫报警。

  飞信报警我们使用PHP飞信发送类(PHPFetion)发送短信。按照如下代码发信:

require‘PHPFetion.php’;$fetion=new PHPFetion(‘136xx’,‘密码’);$fetion->send(‘135xx’,‘Hello Fetion1!’);

  使用短信猫报警的时候,需要购置一款usb短信猫,然后在服务器上安装gnokii.gnokii提供了在不同操作系统下移动电话使用的工具和用户空间的驱动程序,支持以命令行形式直接向手机发送短信。  

if[-s“/usr/local/apache/htdocs/Cacti/log/changed.log”]thencat/usr/local/apache/htdocs/Cacti/log/changed.log|/usr/bin/gnokii--sendsms188xxx>/dev/null2>&1rm-f/usr/local/apache/htdocs/Cacti/log/changed.log>/dev/null2>&1fi

  至此,机房温度监控和短信报警设置完成。

  (作者单位为华南理工大学信息网络工程研究中心)

原文链接http://www.edu.cn/xxh/ji_shu_ju_le_bu/201507/t20150727_1294165.shtml

转载于:https://blog.51cto.com/babyfenei/1770053

如何利用Cacti监控机房温度相关推荐

  1. 巧用WhatsUp监控机房温度

    要随时随地了解机房的温度是否正常,一种及时,高效的监控方法是必不可少的.我使用的是APC温度探针,不过它仅支持邮件,SNMP Trap和Syslog三种方法报警.如果手边没有电脑或网络的话,那么就会错 ...

  2. 巧用WhatsUp监控机房温度 1

    要随时随地了解机房的温度是否正常,一种及时,高效的监控方法是必不可少的.我使用的是APC温度探针,不过它仅支持邮件,SNMP Trap和Syslog三种方法报警.如果手边没有电脑或网络的话,那么就会错 ...

  3. 机房温度远程监控方案

    企业环境中对机房温度要求很高,特别是现代企业中分布在全球各个地方的办公室及工厂,服务器24小时都要提供服务,所以远程能自动监控机房的温度是很有必要的,当监控到机房温度高于设定的警报值时,温度计上面的工 ...

  4. Hyper-V 2016 系列教程30 机房温度远程监控方案

    企业环境中对机房温度要求很严格,特别是现代企业中分布在全球各个地方的办公室及工厂,服务器24小时都要提供服务,所以远程能自动监控机房的温度是很有必要的,当监控到机房温度高于设定的警报值时,温度计上面的 ...

  5. 嵌入式实践项目(二)——机房温度监控系统

    文章目录 项目环境 IDE 其他 项目效果 源码结构 Qt back-end 阅读代码的Tips Qt界面 back-end Tisp 源码下载地址 项目环境 IDE qt-opensource-wi ...

  6. 基于BOA的嵌入式Web项目【机房温度监控】

    文章目录 一.需求分析 二.项目结构 三.效果图 四.数据传输 4.1 采集端数据传输到CGI进程 4.2 CGI进程数据传输到Web服务器 4.3 Web服务器传输给浏览器 五. 采集端 5.1 思 ...

  7. 利用cacti实现监控

    Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRD ...

  8. 基于 HTML5 的工业互联网云平台监控机房 U 位

    前言 机柜 U 位管理是一项突破性创新技术--继承了 RFID 标签(电子标签)的优点的同时,完全解决了 RFID 技术(非接触式的自动识别技术)在机房 U 位资产监控场应用景中的四大缺陷,采用工业互 ...

  9. 计算机网络设备的运行温度,什么是机房温度、湿度标准?

    原标题:什么是机房温度.湿度标准? 随着信息技术的不断发展,计算机机房成了各大企业不可缺少的重要组成部分,计算机设备尤其是交换机等设备对机房的温度.湿度有着较高的要求.一旦机房环境设备出现故障,就会影 ...

最新文章

  1. 某程序员吐槽:分手一个月,发现前女友和一个已婚男人在一起,愤而向他们公司举报,该男已被开除!网友:举报别人不道德!...
  2. 启动物料帐后不可更改物料价格的处理方法
  3. 星星评价控件android开发_android自定义星级评分控件,可实现只显示实心星星
  4. apk转换ipa在线转换工具_PDF 格式转换在线网站
  5. 函数重载 覆盖 隐藏
  6. 阿里巴巴云原生大数据运维平台 SREWorks 正式开源
  7. 笨方法学python(本文为阅读时从此书摘录的笔记) 第四天
  8. html页面的ajax请求,【提问】ajax请求返回整个html页面
  9. oracle文件名乱码,如何rename datafile name中存在乱码的数据文件
  10. 微信小程序商城模板平台分享
  11. 传奇服务器怎么修改升级武器成功,传奇服务端中设置装备元素升级不会破碎教程...
  12. Gitee使用(详细idea关联git)
  13. 90后最流行的英文名
  14. python里的平方_python中的平方
  15. 使用LL库开发STM32:UART基础使用
  16. 数字化时代,如何做好用户体验与应用性能管理
  17. 统计年龄分布情况(5岁的间隔统计),绘制出年龄分布图。
  18. 经典怀旧FCgame红白机小游戏在线网页合集版畅玩HTML网站源码
  19. substratum android8,substratumlite主题管理
  20. UEStudio09.20.0.1007 注册码

热门文章

  1. 吞吐量、带宽、bps、pps、转发能力、线速转发、交换带宽
  2. Activity界面的加载和绘制
  3. 前端 Switch 开关功能
  4. Android使用HereMap教程
  5. 高难度c语言编程题,高难度脑筋急转弯题目合集带答案
  6. 高德地图和百度地图数据下载
  7. python金融数据分析及可视化
  8. windows7 中pkeyconfig.xrm-ms文件无法删除解决办法
  9. 原生js绑定事件的三种方法
  10. 将C语言的字符串转为OC的字符串