Plugin SMART Attributes Monitoring
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.
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
- 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