如何在 nagios 中执行类似 hdparm -t 的磁盘性能测试?

如何在 nagios 中执行类似 hdparm -t 的磁盘性能测试?

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

有谁知道在 nagios 中实际对磁盘或 nfs 挂载进行写入/读取的测试吗?

答案1

我会选择另一种方法(如果您使用 ESX)

  • 下载ESX Nagios 插件并将其保存到 Nagios 插件文件夹中
  • 使用以下命令安装所需的 Perl 模块perl -MCPAN -e 'install <pluginname>'
    • Nagios::插件
    • 参数::验证
    • 数学::计算::单位
    • 类::访问器::快速
    • 配置::Tiny
  • 下载最新的 SDK,名为“vSphere SDK for Perl xx”(需要注册):http://www.vmware.com/support/developer/viperltoolkit/
  • 安装所需的库:aptitude install libxml-libxml-perl libclass-methodmaker-perl libcrypt-ssleay-perl libsoap-lite-perl libuuid-perl
  • 编辑Makefile文件'UUID' => '0.03',并将行改为'UUID' => '0.02',
  • 编译它:
    perl Makefile.PL
    制作
    进行测试
    进行安装

创建这个新命令:

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
}

也许这并不是您想要的,但我想分享它。

答案2

还没有测试过,但如果你想做的只是写入然后读取文件,可以尝试一下类似的小脚本

#!/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

该脚本可以大大改进,并且可能存在一些错误,但它会写入文件然后将其读回,如果其中一个失败,它将返回严重错误。您可能需要对其进行修改,以便它使用 argv 作为文件路径,并且它可能会向控制台抛出一些不必要的错误,但这只是一个开始

答案3

编写自己的测试很简单。编写一个脚本来执行您想要测试的内容并评估可能的结果。

dd根据您的情况,您可以在 nfs 共享或磁盘上尝试来测试写入,并打开一个文件来测试读取。然后,您可以使用 的结果dd返回以下三种状态之一:

  • 批判的
  • 警告
  • 好的

您可以在状态后的字符串中添加额外信息。例如:

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

在您的 check_nrpe-config(或您用来运行远程脚本的任何脚本)中添加该脚本,就可以开始了。

答案4

监控磁盘性能可能比仅仅写入文件并查看其需要多长时间要棘手得多。读取也是一样。您如何知道写入/读取期间发生了什么?可能会出现 CPU 负载峰值、网络流量问题(尤其是 nfs),简而言之,各种各样的事情。至少在一个窗口中运行 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 统计数据。

相关内容