diff --git a/lib/Site/Megaraid.pm b/lib/Site/Megaraid.pm deleted file mode 100644 index 77ad0e758816c890eef3229d8026987e8ce76e35..0000000000000000000000000000000000000000 --- a/lib/Site/Megaraid.pm +++ /dev/null @@ -1,133 +0,0 @@ -package Site::Megaraid; - -use strict; -use warnings; - -use base 'Resmon::Module'; - -use Resmon::ExtComm qw(run_command cache_command); - -=pod - -=head1 NAME - -Site::Megaraid - pulls SMART values from disk drives - -=head1 SYNOPSIS - - Site::Megaraid { - sda/2 : smartctl_cmd => /usr/sbin/smartctl - } - -=head1 DESCRIPTION - -Self-Monitoring, Analysis and Reporting Technology (SMART) allows for detecting -errors and reporting on reliability indicators on hard disk drives. - -This module pulls the specified values from the output of the smartctl utility. -For more information on smartctl, see http://smartmontools.sourceforge.net/ - -=head1 CONFIGURATION - -=over - -=item check_name - -This indicates the disk argument to be given to smartctl. Expects the basename -of the device, not the full path, e.g. "sda" not "/dev/sda". - -=item smartctl_cmd - -The full path of the smartctl command. Defaults to /usr/sbin/smartctl. - -=item smartctl_args - -Optional list of additional arguments that will be passed to smartctl. -The default arguments are "-i -A". Any arguments specified here will be -added to this list. - -If the argument contains a comma, it must be escaped with a backslash. - -=back - -=head1 METRICS - -The SMART attribute data is highly vendor-specific. Each attribute will produce -two metrics, one with the normalized value and one with the raw value. - -Post-processing may be desirable in specific cases, such as when the value as -hex has special meaning. - -=over - -=item model - -Device model as reported in the information section. - -=item serial - -Device serial number as reported in the information section. - -=item fw - -Device firmware version as reported in the information section. - -=item (attribute) - -The normalized value of the attribute, expected to be an integer. - -=item (attribute)_raw - -The raw value of the attribute, expected to be an integer. - -=back - -=cut - -sub handler { - my $self = shift; - my $config = $self->{config}; - my ($disk_name,$megaraid_number) = split('/',$self->{check_name}), - my $disk; - $disk = "/dev/$disk_name" if ($^O eq "linux") || ($^O =~ /bsd/) ; - $disk = "/dev/rdsk/$disk_name" if $^O eq "solaris"; - my $smartctl_cmd = $config->{smartctl_cmd} || "/usr/sbin/smartctl"; - my $smartctl_args = "-i -a -H -d megaraid,$megaraid_number"; - $smartctl_args = "$smartctl_args $config->{smartctl_args}" if $config->{smartctl_args}; - my $smartdata = {}; - print STDERR ("$smartctl_cmd $smartctl_args $disk\n"); - my $output = run_command("$smartctl_cmd $smartctl_args $disk"); - - foreach my $line (split(/\n/, $output)) { - if ( ($line =~ /^Device Model:\s+(.+)$/) - ||($line =~ /^Product:\s+(.+)$/) ) - { - $smartdata->{"model"} = [$1, "s"]; - } - elsif ($line =~ /^Serial Number:\s+(.+)$/i) { - $smartdata->{"serial"} = [$1, "s"]; - } - elsif ($line =~ /^SMART Health Status:\s+(.+)$/i) { - $smartdata->{"health"} = [$1, "s"]; - } - elsif ( ($line =~ /^Firmware Version:\s+(.+)$/) - ||($line =~ /^Revision:\s+(.+)$/) ) - { - $smartdata->{"firmware_version"} = [$1, "s"]; - } - elsif ($line =~ /^Elements in grown defect list:\s+(.+)$/) { - $smartdata->{"elements_in_defect_list"} = [$1, "i"]; - } - elsif ($line =~ /^(read|write|verify):\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\d+)$/) { - print STDERR "$1 $1_errors_corrected $5 $1_errors_uncorrected $8\n"; - $smartdata->{"$1_errors_corrected"} = [$5, "i"]; - $smartdata->{"$1_errors_uncorrected"} = [$8, "i"]; - } - elsif ($line =~ /^Non-medium error count:\s+(.+)$/) { - $smartdata->{"non_medium_errors"} = [$1, "i"]; - } - } - - return $smartdata; -}; -1;