Monitoring Serwerów - Forum o monitoringu infrastruktury IT
Programowanie w API op5 Monitor
#1
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
Reply


Messages In This Thread
Programowanie w API op5 Monitor - by ArturB - 07-31-2019, 06:59 AM

Forum Jump:

User Panel Messages