Plugin GPU Sensor Monitoring

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

Ten artykuł opisuje instalację i konfigurację pluginu GPU Sensor Monitoring w oprogramowaniu Nagios lub Icinga. Plugin umożliwia monitorowanie GPU firmy NVIDIA i dostarcza szczegółowych informacji odnośnie statusu danej karty graficznej. W konkretnym przypadku monitorowana może być np. temperatura, prędkość wentylatora lub wykorzystanie pamięci.

Plugin GPU wyświetla szczegółowe informacje o stosowanym GPU i dostarcza aktualne dane o wydajności.

Ważne informacje wstępne

Uwaga: Na forum firmy NVIDIA zostało potwierdzone, że informacje dostarczane przez nvidia-smi/nvml nie pozwalają na stwierdzenie czy wentylator faktycznie pracuje - więcej informacji na ten temat znajduje się na NVIDIA-Forum.

Dlatego z reguły sensor temperatury służy jako dowód funkcjonowania wentylatora, gdy wzrasta temperatura ciągle i bez powodu to może to wskazywać na problemy z chłodzeniem.

Download

Dane mogą zostać wizualizowane i przeanalizowane za pomocą PNP4Nagios, które pozwala na szybkie stwierdzenie zbyt wysokich temp. i reakcje na nie.

Plugin dostępny jest na GitHub: check_gpu_sensor_v1

Kopia pluginu możne zostać pobrana z

git clone git://github.com/thomas-krenn/check_gpu_sensor_v1.git

lub

 
git clone https://github.com/thomas-krenn/check_gpu_sensor_v1.git 

Przydatne informacje i rady odnośnie korzystania z Git znajdują się w serii artykułów w kategorii: Git.

Instalacja pluginu check_gpu_sensor

Do instalacji i korzystania z pluginu potrzebne są następujące komponenty:

NVML

"NVIDIA Management Library" jest to API do zarządzania procesorami GPU firmy NVIDIA i opiera się o język programowania rodziny C.[1] Biblioteka uruchomieniowa (Runtime Library) NVML jest udostępniana przez sterownik kart graficznych NVIDIA ("libnvidia-ml"), NVML-SDK udostępnia bibliotekę Stub, pliki nagłówkowe i przykładowe aplikacje. Każda nowa wersja NVML jest wstecz kompatybilna i służy tworzeniu oprogramowania („firm trzecich") do zarządzania GPU. Szczególnie w przypadku produktów z serii Tesla dostępna jest kompletna funkcjonalność biblioteki NVML.

Miedzy innymi dzięki NVML mogą zostać ustalone następujące informacje:[1]

  • status ECC (Error Counts)
  • obciążenie GPU (Memory, Prozessor)
  • temperatura, prędkość wentylatorów
  • Aktive Compute Prozesse
  • GPU Clock-Rate
  • Power-Management

Do programowania w języku C może zostać pobrany Tesla Deployment Kits (developer.nvidia.com), w którym zawarte są wszystkie komponenty potrzebne do NVML. Aby móc korzystać z script bindings w pluginie GPU, te komponenty nie są konieczne. Języki skryptów Perl i Python są oficjalnie obsługiwane przez bindings (patrz poniżej). NVML API Reference Manual oferuje dalsze informacje o bibliotece NVML.

Wspierane OS i GPU

Według instrukcji wspierane są następujące systemy operacyjne i procesory graficzne:[2]

  • OS Platform
    1. Windwos Server 2008 R2 64bit, Windows 7 64bit
    2. Linux 32bit und 64bit
  • GPU
    • Full Support
      1. NVIDIA Tesla TMLine: S1070, S2050, C1060, C2050/70/75, M2050/70/75/90, X2070/90
      2. NVIDIA Quadro ®Line: 4000, 5000, 6000, 7000, M2070-Q
    • Limited Support
      1. NVIDIA Quadro ®Line: Wszystkie aktualne i poprzedzające Quadro GPU
      2. NVIDIA GeForce ®Line: Wszystkie aktualne i poprzedzające GeForce GPU

Do korzystania z NVML przez plugin wymagana jest instalacja perl bindings.

Instalacja Perl bindings

Zbiór oficjalnie wspieranych bindings dla Pythona i Perla dostępny jest na

Umożliwiają one programowanie aplikacji z pomocą NVML API w Pythonie i Perl.

Podczas instalacji Perl bindings należy zwrócić uwagę, aby były odpowiednie do zainstalowanej wersji sterownika. W Ubuntu 12.04 wykorzystywana jest np. wersja 295.40 z repozytorium:[3]

$ nvidia-smi -a|grep 'Driver Version'
Driver Version                  : 295.40

Obecnie aktualną wersją producenta jest 295.41.[4] Obie wersje sterownika mogą być wykorzystywane z Perl bindings w wersji "nvidia-ml-pl-3.295.00".

Uwaga: W razie pojawienia się poniższego komunikatu podczas tworzenia makefiles (np. jeżeli nie jest wykorzystywany sterownik NVIDIA, lecz z repozytorium):

:~/nvidia-ml$ perl Makefile.PL 
Note (probably harmless): No library found for -lnvidia-ml
Writing Makefile for nvidia::ml::bindings
Writing MYMETA.yml and MYMETA.json

musi zostać uzupełniona ścieżka ("-L/usr/lib/nvidia-current") do biblioteki "nvidia-ml":

$ chmod u+w Makefile.PL
$ vi Makefile.PL
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
    NAME              => 'nvidia::ml::bindings',
    PREREQ_PM         => {}, # e.g., Module::Name => 1.1
    LIBS              => ['-L/usr/lib/nvidia-current -lnvidia-ml'], # e.g., '-lm'
    DEFINE            => '', # e.g., '-DHAVE_SOMETHING'
    INC               => '-I.', # e.g., '-I. -I/usr/include/other'
    OBJECT            => '$(O_FILES)', # link all the C files too
);

Następnie Perl bindings zostają bez komunikatu skompilowane i mogą zostać zainstalowane:

$ perl Makefile.PL
$ make
$ sudo make install

Kolejno następujące polecenie pokazuje, że moduły Perl zostały zainstalowane:

$ perldoc perllocal
Mon Apr 30 15:40:06 2012: "Module" nvidia::ml::bindings
       •   "installed into: /usr/local/share/perl/5.10.1"

       •   "LINKTYPE: dynamic"

       •   "VERSION: "

       •   "EXE_FILES: "

Instalacja pluginu

Instalacja pluginu wymaga, aby plik "check_gpu_sensor" został skopiowany do katalogu Nagios- lub Icinga-Plugins i następnie oznaczony jako wykonywalny:

$ sudo cp check_gpu_sensor /usr/lib/nagios/plugins/
$ sudo chmod +x /usr/lib/nagios/plugins/check_gpu_sensor

Konfiguracja pluginu check_gpu_sensor

Konfiguracja NRPE

Do pomocy w konfiguracji NRPE może zostać wykorzystany artykuł Plugin Icinga NRPE.

Na monitorowanym serwerze

Aby monitorowany host poprawnie wywoływał plugin GPU, jako pierwszy musi zostać utworzony plik konfiguracyjny NRPE (vide Klient Icinga):

$ sudo vi /etc/nagios/nrpe_local.cfg
command[check_gpu_sensor]=/usr/lib/nagios/plugins/check_gpu_sensor

Następnie w pliku "/etc/nagios/nrpe.cfg" musi jeszcze zostać dodany adres IP serwera Nagios/Icinga (np. 10.0.0.3), aby zezwolić na połączenie NRPE:

sudo vi /etc/nagios/nrpe.cfg
...
allowed_hosts=127.0.0.1,10.0.0.3
...

Po restarcie serwera NPRE konfiguracja NRPE jest na monitorowanym hoście zakończona:

$ sudo /etc/init.d/nagios-nrpe-server restart

Na serwerze Icinga

Na serwerze Icinga wymagana jest:

Jeżeli obie części zostały pomyślnie zainstalowane i skonfigurowane to dla GPU hosta może zostać utworzona nowa Service-Konfiguration:

:~# vi /usr/local/icinga/etc/objects/gpu-host.cfg

define host{

       use             linux-server
       host_name       GpuNode
       alias           GpuNode
       address         10.0.0.1
       }

define service{

        use     generic-service
        host_name       GpuNode
        service_description     GPU SENSOR
        check_command   check_nrpe!check_gpu_sensor
        }

Aby serwis był również aktywny musi zostać dodana w konfiguracji Icinga ścieżka do pliku konfiguracyjnego:

:~# vi /usr/local/icinga/etc/icinga.cfg
[...]
cfg_file=/usr/local/icinga/etc/objects/gpu-host.cfg
[...]

Następnie połączenie NRPE z pluginem GPU możne zostać przetestowane:

:~# /usr/lib/nagios/plugins/check_nrpe -H 10.0.0.1 -c check_gpu_sensor
OK - GeForce GTX 260 |nvmlUsedMemory=6.19;95;99; nvmlGpuTemperature=43.00;85;100; nvmlDeviceFanSpeed=40.00;80;95

Odnośniki

  1. 1,0 1,1 NVIDIA Management Library (NVML) (developer.nvidia.com)
  2. The NVML API Reference Manual (developer.download.nvidia.com)
  3. Ubuntu nvidia-current package (packages.ubuntu.com)
  4. Cuda Downloads (developer.nvidia.com)

Powiązane artykuły

Aktualizacja oprogramowania Intel Data Center Manager
Instalacja i konfiguracja plugina Telegraf w OPNsense
Pluginy monitorujące dla serwera Thomas-Krenn