Plugin SMART Attributes Monitoring

Z Thomas-Krenn-Wiki
Przejdź do nawigacji Przejdź do wyszukiwania

Plugin Smart Attributes Monitoring umożliwia monitorowanie wartości SMART dysków twardych i SSD. Wtyczka jest napisana w języku skryptowym Perl i używa smartctl do kontroli wartości smart. Wtyczka jest konieczna, ponieważ interpretacja atrybutów SMART nie jest znormalizowana i każdy producent określa swoje własne definicje dla interpretacji atrybutów. Wtyczka umożliwia zinterpretowanie tych definicji, co umożliwia monitorowanie dysków SSD i HDD.

Informacje wyświetlane przez wtyczkę.

Aktualna wersja

Aktualna wersja wtyczki check_smart_attributes znajduje się w GitHub:

Funkcje

W README wtyczki znajduje się szczegółowa lista komponentów, które są monitorowane:

Wymagania wstępne

Instalacja wymaganych komponentów jest opisana w następującej części:

  • Monitoring urządzenia
    • Monitorowane urządzenie (device) musi się znajdować w lokalnej bazie danych smart (check_smartdb.json)
    • Jeśli urządzenie nie znajduje się w bazie danych JSON to plugin kończy wyjściem Error: device was not found in smartdb JSON file.
    • Aby dodać nowe urządzenia, należy zdefiniować w bazie danych JSON, która wartość (RAW_VALUE lub NORMALIZED_VALUE) jest ważna dla atrybutu Smart. W przypadku dysków SSD firmy Intel przyporządkowanie to znajduje się w odpowiedniej specyfikacji dysków SSD.
  • Na monitorowanym serwerze
    • zainstalowany plugin check_smart_attributes
    • zainstalowane libconfig-json-perl
    • zainstalowane smartmontools (smartctl)
    • sudoers dla użytkownika nagios w smartctl
    • Jeżeli przez NRPE, to definicja polecenia dla NRPE
  • Na serwerze Icinga
    • Definicja polecenia
    • Definicja usługi

Przykładowe dane wyjściowe z wtyczki

:~$ sudo ./check_smart_attributes -d /dev/sda -d /dev/sdc -dbj ./check_smartdb.json
Critical (sda, sdc) [sdc_Raw_Read_Error_Rate = Critical][sdc_Reallocated_Sector_Ct = Critical][sdc_UDMA_CRC_Error_Count = Critical][sdc_ATA_Error_Count = Critical]
[sda_CRC_Error_Count = Warning]|sda_Media_Wearout_Indicator=097;16;6 sda_Host_Writes_32MiB=517485 sda_Host_Reads_32MiB=395618 sdc_Temperature_Celsius=40

Instalacja

Do instalacji plik wtyczki jest kopiowany do katalogu /usr/lib/nagios/plugins. Plik Lookup-JSON trafia do /etc/nagios-plugins/config/.

:~$ git clone https://github.com/thomas-krenn/check_smart_attributes.git
Cloning into 'check_smart_attributes'...
:~$ cd check_smart_attributes/
:~$ sudo cp check_smart_attributes /usr/lib/nagios/plugins/
:~$ sudo cp check_smartdb.json /etc/nagios-plugins/config/

Biblioteka perl Config::JSON jest wymagana do odczytania smartdb w formacie JSON:

:~$ sudo apt-get install libconfig-json-perl

Narzędzie wiersza poleceń smartctl jest instalowane za pośrednictwem pakietu smartmontools:

:~$ sudo apt-get install smartmontools 

Konfiguracja

Wtyczka nadaje się do monitorowania wartości SMART zdalnego serwera poprzez NRPE, jak również do monitorowania lokalnego hosta. Plugin check_smart_attributes musi być zainstalowany na każdym monitorowanym systemie.

Przez NRPE

Na serwerze Icinga

Gdy tworzona jest definicja hosta, definiowane jest polecenie wykonywane przez NRPE. Same parametry są określone na monitorowanym hoście.

define service {
    service_description           smart_attributes-nrpe
    display_name                  SMART attributes
    use                           generic-service
    host_name                     test
    check_command                 check_nrpe_1arg!check_smart_attributes
}

Na 2 serwerze Icinga

Konfiguracja wtyczki SMART Attributes Monitoring Plugin przez NRPE odbywa się na 2 hoście Icinga w poniżej przedstawiony sposób.

Definicja polecenia

W podkatalogu commands katalogu konfiguracyjnego hosta Icinga 2, w Ubuntu /etc/icinga2/conf.d, należy utworzyć plik o nazwie smart-attributes.conf z następującą zawartością.

object CheckCommand "nrpe-smart" {
        import "plugin-check-command"
        command = [PluginContribDir + "/check_nrpe" ]
        arguments = {
        "-H" = "$address$"
        "-c" = "$nrpe_smart$"
        }
}

Definicja reguły Apply Service

Tak zwana Apply Rule jest teraz tworzona w katalogu konfiguracyjnym Icinga 2, dzięki czemu ta usługa kontrolna (servicecheck) jest automatycznie dodawana na hoście z odpowiednim zestawem parametrów. Tutaj należy stworzyć katalog services w katalogu konfiguracyjnym Icinga 2 i utworzyć w nim nowy plik o nazwie "smart-attributes.conf".

Ten nowy plik konfiguracyjny zawiera następujące polecenia:

apply Service "check-nrpe-smart" {
        import "generic-service"
        check_command = "nrpe-smart"
        assign where host.vars.nrpe_smart
}

Wyrażenie, assign where host.vars.nrpe_smart oznacza, że jeśli monitorowany host posiada parametr vars.nrpe_smart z parametrem NRPE, to usługa kontrolna "check-nrpe-smart" jest automatycznie wykonywana przez NRPE na serwerze.

Definicja hosta

W konfiguracji hosta należy dodać wiersz vars.nrpe_smart.

object Host "Testserver" {
	import "generic-host"
	address = "<IP-Adresse>"
	vars.nrpe_smart = "check_smart_attributes"
}

Na monitorowanym serwerze

Aby użytkownik nagios mógł wykonać komendy w wierszu poleceń z sudo bez wprowadzania hasła, należy wprowadzić następującą konfigurację sudoers:

:~$ sudo vi /etc/sudoers.d/check_smart_attributes
nagios ALL=(root)NOPASSWD:/usr/sbin/smartctl
:~$ sudo chmod 440 /etc/sudoers.d/check_smart_attributes

Podczas następującego testu nie powinno być konieczne wprowadzenie hasła:

:~$ sudo su nagios --shell /bin/bash
:~$ sudo smartctl -V
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-48-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
[...]

Plik konfiguracyjny NRPE określa, która usługa kontrola jest wykonywana podczas wywołania polecenia check_smart_attributes. Polecenie to z parametrem musi być takie samo jak po stronie serwera Icinga w definicji hosta:

:~$ sudo vi /etc/nagios/nrpe.d/smart.cfg
command[check_smart_attributes]=/usr/lib/nagios/plugins/check_smart_attributes -d /dev/sda -dbj /etc/nagios-plugins/config/check_smartdb.json

Uwaga: wspomniany plik JSON smartdb musi być czytelny dla użytkownika nagios.

:~$ sudo service nagios-nrpe-server restart

Po stronie serwera Icinga można sprawdzić, czy usługa kontrolna funkcjonuje:

:~$ /usr/lib/nagios/plugins/check_nrpe -H 10.0.0.2 -c check_smart_attributes
Critical (sda) [sda_CRC_Error_Count = Critical]|sda_Media_Wearout_Indicator=097;16;6 sda_Host_Writes_32MiB=517400 sda_Host_Reads_32MiB=395557

Lokalnie

Lokalna konfiguracja jest przydatna, gdy wartości SMART mają być monitorowane przez sam serwer Icinga lub Icinga 2. Warunki wstępne dla lokalnej instalacji są opisane powyżej w instalacji wtyczki, moduł Perla i smartctl oraz konfiguracja sudo dla użytkownika nagios.

Icinga

Lokalna konfiguracja wtyczki LSI RAID Monitoring Plugin pod Icinga odbywa się w następujący sposób.

Pierwszym krokiem jest stworzenie definicji polecenia Icinga:

define command {
        command_name check_smart
        command_line /usr/lib/nagios/plugins/check_smart_attributes -d $ARG1$ -dbj /etc/nagios-plugins/config/check_smartdb.json
}

Definicja usługi może wyglądać następująco:

define service{
    service_description           SMART attributes
    display_name                  SMART attributes
    use                           generic-service
    host_name                     localhost
    check_command                 check_smart!/dev/sda

}

Icinga 2

Lokalna konfiguracja Icinga 2 będzie działać, jeżeli zostanie przeprowadzona w poniżej przestawiony sposób.

Definicja polecenia W podkatalogu commands katalogu konfiguracyjnego hosta Icinga 2, w Ubuntu /etc/icinga2/conf.d, należy utworzyć plik o nazwie smart-attributes.conf z następującą zawartością.

object CheckCommand "smart-attributes" {
   import "plugin-check-command"
   command = [ PluginDir + "/check_smart_attributes" ]
   arguments = {
   "-dbj" = {
	required = true
	value = "$smart_attributes_config_path$"
	description = "Path to the smart attributes config file (e.g. check_smartdb.json)"
	}
   "-d" = {
	required = true
	value = "$smart_attributes_device$"
	description = "Insert the device name (e.g. /dev/sda) to monitor"
	}
   }
}

Definicja reguły Apply Service

Tak zwana Apply Rule jest teraz tworzona w katalogu konfiguracyjnym Icinga 2, dzięki czemu ta usługa kontrolna (servicecheck) jest automatycznie dodawana na hoście z odpowiednim zestawem parametrów. Tutaj należy stworzyć katalog services w katalogu konfiguracyjnym Icinga 2 i utworzyć w nim nowy plik o nazwie "smart-attributes.conf".

Ten nowy plik konfiguracyjny zawiera następujące polecenia:

apply Service "check-smart-attributes" {
	import "generic-service"
	check_command = "smart-attributes"
	assign where host.vars.smart_attributes_device
}

Wyrażenie, assign where host.vars.smart_attributes_device oznacza, że jeśli monitorowany host posiada parametr vars.smart_attributes_device z np. punktem montowania /dev/sda, to usługa kontrolna "check-smart-attributes" jest automatycznie wykonywana na serwerze.

Definicja hosta W pliku konfiguracyjnym hosta hosts.conf lokalnego serwera Icinga 2 należy dodać wiersz vars.smart_attributes_device.

object Host NodeName {
	[...]
	vars.smart_attributes_device = "/dev/sda"
	vars.smart_attributes_config_path = "/etc/nagios-plugins/config/check_smartdb.json"
}

Przykłady konfiguracji

Ta sekcja pokazuje jak skonfigurować plugin SMART na serwerach z zainstalowanymi sprzętowymi kontrolerami RAID firmy Adaptec i Avago.

Kontroler RAID firmy Adaptec

Konfiguracja wtyczki SMART w połączeniu z kontrolerami kontrolerami RAID Adaptec różni się w nazewnictwie urządzeń. Dyski twarde i dyski SSD podłączone do kontrolerów Adaptec nie są oznaczone jako /dev/sdX, lecz - jako /dev/sgX. Dokładne nazewnictwo można ustalić przez wywołanie sudo sg_scan -i. Narzędzie to jest częścią sg3-utils i jest bliżej opisane w artykule Smartmontools z kontrolerem RAID Adaptec. Przedstawiona tutaj konfiguracja jest realizowana na monitorowanym serwerze. Konfiguracja na serwerze Icinga poprzez NRPE odbywa się podobnie, jak jest to już powyżej opisane w artykule.

Przykładowe wyjście po wprowadzeniu sudo sg_scan -i wygląda następująco:

/dev/sg1: scsi0 channel=0 id=1 lun=0 [em]
    ASR8405   RAID1             V1.0 [rmb=0 cmdq=1 pqual=0 pdev=0x0] 
/dev/sg2: scsi0 channel=1 id=4 lun=0 [em]
    ATA       INTEL SSDSC2BB08  D201 [rmb=0 cmdq=1 pqual=1 pdev=0x0] 
/dev/sg3: scsi0 channel=1 id=5 lun=0 [em]
    ATA       INTEL SSDSC2BB08  D201 [rmb=0 cmdq=1 pqual=1 pdev=0x0] 
/dev/sg4: scsi0 channel=1 id=6 lun=0 [em]
    ATA       INTEL SSDSC2BB08  D201 [rmb=0 cmdq=1 pqual=1 pdev=0x0]

Tutaj urządzenia sg2, sg3 i sg4 są dyskami SSD, które mają być monitorowane.

Aby poprawnie skonfigurować wtyczkę, należy utworzyć lub edytować poniższy plik:

:~$ sudo vi /etc/nagios/nrpe.d/smart.cfg

Do tego pliku należy dodać poniżej wymienioną zawartość. Można monitorować jeden lub więcej dysków twardych lub SSD. Wielokrotne wprowadzenie parametru -d umożliwia dodanie wielu urządzeń.

command[check_smart_attributes]=/usr/lib/nagios/plugins/check_smart_attributes -d /dev/sgX [-d /dev/<kolejne urządzenie>] -O sat -dbj /etc/nagios-plugins/config/check_smartdb.json

Ostatecznie należy jedynie zrestartować serwer NRPE:

:~$ sudo service nagios-nrpe-server restart

Kontroler MegaRAID

W porównaniu z konfiguracją na kontrolerach Adaptec RAID, dyski twarde i dyski SSD na kontrolerach MegaRAID mogą być adresowane bezpośrednio poprzez nazwy urządzeń /dev/sdX. Następująca konfiguracja usług kontrolnych (checks) przebiega w ten sam sposób jak w przypadku kontrolerów RAID Adaptec:

:~$ sudo vi /etc/nagios/nrpe.d/smart.cfg

Dodajemy następującą zawartość do nowo utworzonego pliku. Można również monitorować wiele dysków twardych lub dysków SSD.

command[check_smart_attributes]=/usr/lib/nagios/plugins/check_smart_attributes -d megaraidX,/dev/sdX [-d megaraidX,/dev/<kolejne urzydzenie>] -dbj /etc/nagios-plugins/config/check_smartdb.json

Ostatecznie należy jedynie zrestartować serwer NRPE:

:~$ sudo service nagios-nrpe-server restart

Autor: Georg Schönberger

Powiązane artykuły

Instalacja modemu Huawei ME909u-521 w systemie Ubuntu 12.04
Korzystanie z pluginów do monitoringu w check mk
Plugin GPU Sensor Monitoring