设为首页 收藏本站
查看: 1270|回复: 0

[经验分享] 如何利用Cacti监控机房温度

[复制链接]

尚未签到

发表于 2019-1-9 12:28:50 | 显示全部楼层 |阅读模式
  本文基于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 off  
  cd H:\temper
  
  dir/B/OD>H:\filelist.txt
  
  setlocal enabledelayedexpansion
  
  for/f“delims=”%%i in(H:\filelist.txt)do(
  
  seta=%%i
  
  )
  
  cd H:\temper
  
  @copy“%a%”H:\temp.txt
  
  set d=H:\temp.txt
  
  for/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/bash  
  ftp-i222.201.131.230 2121>/dev/null 2>&1
  
  errorline=‘0’
  
  prevtemper=`tail-n1/home/zqliu/temper/temper_
  
  log`
  
  lastline=`tail-n1/lastline.txt`
  
  if[“$prevtemper”=“$errorline”];then
  
  prevtemper=`tail-n1/home/zqliu/temper/errorline`
  
  fi
  
  if[“$prevtemper”=“$lastline”];then
  
  echo $errorline>>/home/zqliu/temper/temper_log
  
  tail-n1
  
  else
  
  tail-n1/lastline.txt>>/home/zqliu/temper/temper_
  
  log
  
  awk-F“,”‘{print$2}’/lastline.txt
  
  fi
  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-v2c  
  localhost.1.3.6.1.4.1.2021.54
  
  UCD-SNMP-MIB::ucdavis.54.1.1=INTEGER:1
  
  UCD-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:0
  
  UCD-SNMP-MIB::ucdavis.54.101.1=STRING:
  
  “31.5”
  
  UCD-SNMP-MIB::ucdavis.54.102.1=INTEGER:0
  
  UCD-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所示。
DSC0000.jpg

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

  3.创建图形添加完数据和图形模板后,我们就可以在本地服务器上添加新的图形了。
  在New Graphs中选择主机然后在GraphTemplates中的下拉表拉选我们添加的模板,点击create就完成了。最后的监控图形,如图3所示。
DSC0002.jpg

  短信报警
  首先安装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”]
  
  then
  
  cat/usr/local/apache/htdocs/Cacti/log/changed.log|/
  
  usr/bin/gnokii--sendsms188xxx>/dev/null2>&1
  
  rm-f/usr/local/apache/htdocs/Cacti/log/changed.
  
  log>/dev/null2>&1
  
  fi
  至此,机房温度监控和短信报警设置完成。
  (作者单位为华南理工大学信息网络工程研究中心)
  原文链接http://www.edu.cn/xxh/ji_shu_ju_le_bu/201507/t20150727_1294165.shtml



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-661233-1-1.html 上篇帖子: cacti排错 下篇帖子: linux环境中cacti安装:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表