3ware RAID Controller mit smartctl für die Überwachung mit Nagios auslesen
24. Juni 2009 | Von Ralf Spenneberg | Kategorie: Monitoring | AvailabilityUnser neuer Server hat einen 3ware SATA-RAID Controller. Um den Status der Festplatten zu überwachen setzen wir Nagios ein. Hierbei werden die Festplatten mit smartctl ausgelesen. Bei einem einfachen Zugriff gibt es nur Fehlermeldungen:
# smartctl /dev/sda smartctl version 5.38 [i686-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ please try adding '-d 3ware,N' you may also need to change device to /dev/twaN or /dev/tweN
Allerdings gibt es bereits einige Hinweise auf die Geräte /dev/twaN und /dev/tweN. Falls diese Geräte noch nicht existieren, legen die Smartmontools diese automatisch an.
Zunächst müssen wir prüfen, welchen Controller wir verwenden:
# lsmod | grep 3w 3w_9xxx 27108 8 scsi_mod 130508 3 sd_mod,3w_9xxx,libata
Bei 3W_9xxx Controllern ist /dev/twaN das richtige Gerät. Die anderen Controller (3W_6xxx – 3W_8xxx) scheinen /dev/tweN zu verwenden. Die Nummer N gibt die Nummer des Controllers an. Wenn nur ein Controller verbaut ist, ist sie 0. Bei zwei Controllern kann man sowohl /dev/twa0 als auch /dev/twa1 ansprechen. Der Festplattenanschluss wird dann über die Option -d 3ware,X angegeben. Dabei bezeichnet X die Nummer des Anschlusses.
Bei uns ist nur ein Controller (0) verbaut. Dieser hat keine Festplatte an den Anschlüssen 0 und 1, aber dafür ist an Anschluss 2 eine Festplatte vorhanden:
# smartctl -a -d 3ware,2 /dev/twa0 smartctl version 5.38 [i686-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Device Model: SAMSUNG HD103UJ Serial Number: S13PJ9BQ909752 Firmware Version: 1AA01113 User Capacity: 1.000.204.886.016 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 8 ATA Standard is: ATA-8-ACS revision 3b Local Time is: Wed Jun 24 09:42:08 2009 CEST ==> WARNING: May need -F samsung or -F samsung2 enabled; see manual for details. SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x00) Offline data collection activity was never started. Auto Offline Data Collection: Disabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: (11894) seconds. Offline data collection capabilities: (0x7b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 199) minutes. Conveyance self-test routine recommended polling time: ( 21) minutes. SCT capabilities: (0x003f) SCT Status supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 100 100 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0007 076 076 011 Pre-fail Always - 8110 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 8 5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 253 253 051 Pre-fail Always - 0 8 Seek_Time_Performance 0x0025 100 100 015 Pre-fail Offline - 0 9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 5526 10 Spin_Retry_Count 0x0033 100 100 051 Pre-fail Always - 0 11 Calibration_Retry_Count 0x0012 100 100 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 8 13 Read_Soft_Error_Rate 0x000e 100 100 000 Old_age Always - 0 183 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0 184 Unknown_Attribute 0x0033 100 100 000 Pre-fail Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 188 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 071 068 000 Old_age Always - 29 (Lifetime Min/Max 17/32) 194 Temperature_Celsius 0x0022 070 067 000 Old_age Always - 30 (Lifetime Min/Max 17/35) 195 Hardware_ECC_Recovered 0x001a 100 100 000 Old_age Always - 224818050 196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x000a 100 100 000 Old_age Always - 0 201 Soft_Read_Error_Rate 0x000a 100 100 000 Old_age Always - 0 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 No self-tests have been logged. [To run self-tests, use: smartctl -t] SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.
Welche Anschlüsse verwendet werden, probiert man am besten aus. Mit diesen Informationen kann nun Nagios konfiguriert werden.
Wir haben zum Testen des Health-Status das check_smart-Plugin an unsere Bedürfnisse angepasst.
Folgend ein diff auf die Änderungen:
54c54
< if (-b $opt_d){ --- > if ((-b $opt_d) || (-c $opt_d)){
63c63
< if(grep {$opt_i eq $_} ('ata', 'scsi')){ --- > if(grep {$opt_i eq $_} (‚ata‘, ’scsi‘, ‚3ware,0‘, ‚3ware,1‘, ‚3ware,2‘, ‚3ware,3‘, ‚3ware,4‘, ‚3ware,5′ ,’3ware,6′,’3ware,7′,’3ware,8′,’3ware,9′,’3ware,10′,’3ware,11′,’3ware,12′,’3ware,13′,’3ware,14′,’3ware,15‘ )){
87c87
< my $full_command = "$smart_command -d $interface -H $device"; --- > my $full_command = „$smart_command -a -d $interface -H $device“;