如何在nagios中执行像hdparm -t这样的磁盘性能testing?

通常的插件都是关于系统的已知统计数据,但是我们在使用hdparm -t的一些vmware实例上看到了非常奇怪的结果。

任何人都知道一个testing实际上做了一个磁盘写入/读取或nagios nfs挂载?

我会select另一种方法(如果你使用的是ESX)

  • 下载ESX Nagios插件并将其保存在您的Nagios插件文件夹中
  • 使用perl -MCPAN -e 'install <pluginname>'安装所需的Perl模块perl -MCPAN -e 'install <pluginname>'
    • Nagios的::插件
    • PARAMS ::validation
    • math::计算器::单位
    • 类::访问器::快速
    • configuration::微小
  • 下载名为“Perl xx的vSphere SDK”的最新SDK(需要注册): http : //www.vmware.com/support/developer/viperltoolkit/
  • 安装所需的库: aptitude install libxml-libxml-perl libclass-methodmaker-perl libcrypt-ssleay-perl libsoap-lite-perl libuuid-perl
  • 编辑Makefile.PL并将'UUID' => '0.03',改为'UUID' => '0.02',
  • 编译它:
  perl Makefile.PL
    使
    做testing
    进行安装 

创build这个新的命令:

 define command { command_name check_esx command_line $USER1$/check_esx3 -H $HOSTADDRESS$ $ARG1$ -u $ARG2$ -p $ARG3$ -w $ARG4$ -c $ARG5$ $ARG6$ } 

现在添加一个新的服务,fe:

 define service { name esx-io use generic-service service_description ESX I/O check_command check_esx!-l io!$_SERVICEESX_USER$!$_SERVICEESX_PW$!$_SERVICEIO_WARNING$!$_SERVICEIO_CRITICAL$!$_SERVICEESX_VM$ } 

然后在主机上使用这个检查:

 define service { use esx-io host_name <hostname> servicegroups foo _ESX_USER <ESX-api check user> _ESX_PW a-password _IO_WARNING 70 _IO_CRITICAL 80 } 

也许这不是你想要的,但我想我会分享它。

没有testing过这个,但是如果你想要做的就是写一个然后看一个文件尝试一下shell脚本

 #!/bin/bash DATE=`date` #Write echo $DATE > /drive/mount/point/testfile if [ $? -eq 0 ]; then echo "Write Successful" else echo "Cound not write file" exit 2 fi #Read cat /drive/mount/point/testfile > /dev/null if [ $? -eq 0 ]; then echo " - Read Successful" else echo " - Cound not read file" exit 2 fi exit 0 

该脚本可以大大改善,并可能有一些错误,但它写入一个文件,然后读回来,如果以太的失败它将返回关键。 你也许可以修改它,所以它使用文件path的argv,它可能会抛出一些不必要的错误到控制台,但这是一个开始

编写自己的testing是微不足道的。 写一个脚本,做你想testing和评估可能的结果。

在你的情况下,你可以在nfs-share或disk上尝试dd来testing写操作,然后打开一个文件来testing读操作。 然后可以使用dd的结果返回三分之一的状态:

  • 危急
  • 警告

您可以在状态之后在string中添加额外的信息。 例如:

 OK - Everything went better then expected. Writespeed > 2500kbps WARNING - Write speed is below treshold: < 500kbps. CRITICAL - Write Failed! 

在你的check_nrpe-config(或者你用来运行远程脚本的任何东西)中添加这个脚本,你就可以开始了。

监视磁盘性能可能比编写文件和查看需要多长时间要困难得多。 与阅读相同的东西。 你怎么知道在写/读过程中发生了什么? 可能会有CPU的负载尖峰,networkingstream量问题(特别是如果NFS),总之各种事情。 至less在一个窗口中运行collectl,同时在另一个窗口中写入文件。 下面是安装RPM并简单运行“collectl”命令后显示的一个简单示例:

 [root@poker ~]# collectl #<--------CPU--------><----------Disks-----------><----------Network----------> #cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut 0 0 1103 171 0 0 0 0 0 1 0 0 0 0 1120 265 0 0 0 0 0 1 0 1 

更多的开关和选项。 它甚至可以显示在同一行上的nfs统计信息,如果你有兴趣。