Programowanie w API op5 Monitor - Printable Version +- Monitoring Serwerów - Forum o monitoringu infrastruktury IT (https://monitoringserwerow.pl) +-- Forum: MONITORING INFRASTRUKTURY IT (https://monitoringserwerow.pl/forumdisplay.php?fid=1) +--- Forum: op5 Monitor i Nagios (https://monitoringserwerow.pl/forumdisplay.php?fid=12) +--- Thread: Programowanie w API op5 Monitor (/showthread.php?tid=61) |
Programowanie w API op5 Monitor - ArturB - 07-31-2019 Programowanie API op5 Monitor op5 Monitor począwszy od wersji 5.7 został wzbogacony o element programistycznego API. Producent nazwał ten moduł HTTP-API. Nowa funkcjonalność służy do automatyzacji pracy skryptów i pozwana na wykonanie dowolnej operacji w skrypcie, którą zazwyczaj musimy wykonywać w oknie przeglądarki op5 Monitora. Pomysł jest prosty – dać użytkownikowi narzędzie programistyczne, które może służyć do dowolnego sterowania aplikacją, odczytu wartości serwisów lub stanowić element integracji z systemem zewnętrznym. Jednym z ciekawych zastosowań HTTP-API może być automatyczna rejestracja usług pochodząca od monitorowanego systemu. W bardzo prosty sposób możemy stworzyć skrypt uruchamiany po stronie hosta, który rozpozna jego elementy jak partycje, procesy i wykona ich rejestrację w op5 Monitorze. W naszym przykładzie posłużymy się składnią PERL wyposażoną o moduły: LWP::UserAgent JSON API działa jako usługa HTTPS, a więc ważne jest aby nasz system miał otwartą komunikację z monitorem na porcie TCP 443. Pokażę krótki skrypt, który służy do zarejestrowania nowego hosta w op5 oraz jednej jego usługi. op5_monitor_api_example.pl #!/usr/bin/perl # The intentions of this script is to # demo how the op5 Monitor HTTP API works # in terms of adding a hard-coded host # and adding a service to it. use LWP::UserAgent; use JSON; use warnings; use strict; my $op5_username = "monitor"; # uzytkownik systemu op5 monitor z prawami odczytu i zapisu my $op5_password = "monitor"; # haslo my $api_endpoint = "https://<url-to-op5>"; my $ua = LWP::UserAgent->new; my $json = new JSON; my %host = ( 'address' => '127.0.0.1', # adres ip hosta do dodania 'alias' => 'mpajor_host_test', # alias hosta 'file_id' => '', # pozostawic puste 'host_name' => 'mpajor_host_test', # hostname 'max_check_attempts' => '3', # ustawianie parametrow obiektu host 'notification_interval' => '0', 'notification_options' => 'd,r,u,s', 'template' => 'default-host-template' ); my %service = ( 'check_command' => 'check_ping', # To jest serwis ktory bedzie przypisany do hosta. 'check_interval' => '3', # Ustawianie kolejnych parametrow konfiguracyjnych. 'check_period' => '2', # 'file_id' => '', # zostaw puste 'host_name' => 'mpajor_host_test', 'max_check_attempts' => '3', 'notification_interval' => '0', 'notification_options' => 'c,w,r,u,s', 'notification_period' => '24x7', 'retry_interval' => '1', 'service_description' => 'PING', 'template' => 'default-service' ); my $json_host = $json->encode(\%host); my $json_service = $json->encode(\%service); $ua->ssl_opts( verify_hostname => 0 ); # Dodajmy naszego Hosta do op5 Monitora my $req = HTTP::Request->new(POST => "$api_endpoint/api/config/host", undef, $json_host); $req->header('Content-Type' => 'application/json'); $req->authorization_basic("$op5_username", "$op5_password"); print $ua->request($req)->as_string; # print the response from the API (DEBUG PURPOSES) # Teraz, gdy juz host jest dodany, mozemy dodac do niego nasz serwis. Ten krok można powtarzac aby zarejestrowac kolejne serwisy. $req = HTTP::Request->new(POST => "$api_endpoint/api/config/service", undef, $json_service); $req->header('Content-Type' => 'application/json'); $req->authorization_basic("$op5_username", "$op5_password"); print $ua->request($req)->as_string; # print the response from the API (DEBUG PURPOSES) # Zapiszmy zmiany poprzez API $req = HTTP::Request->new(POST => "$api_endpoint/api/config/change", undef, undef); $req->header('Content-Type' => 'application/json'); $req->authorization_basic("$op5_username", "$op5_password"); print $ua->request($req)->as_string; # (DEBUG PURPOSES) Pisanie skryptów w HTTP-API daje duże możliwości. Poza autoduscivery po stronie hosta możemy stworzyć metody do kopiowania naszych obiektów w op5, zarządzać ich zmianą lub synchronizacją z aplikacjami zewnętrznymi. Więcej szczegółów : zobacz dokumentacje demo.op5.com/api/help/config/host |