Ten dokument zawiera przykłady wywołań operacji API wraz z przykładowymi odpowiedziami. We wszystkich przykładach należy zastąpić USERNAME i PASSWORD własnym loginem i hasłem.
Informacje o własnym koncie można pobrać w następujący sposób:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/accounts/my_account'
{ "id" : 100, "is_activated" : true, "is_blocked" : false, "is_read_only" : false, "language_id" : "pl", "name" : "Example Account", "package_id" : 438, "parent_account_id" : null, "time_zone_id" : "europe_warsaw", "username" : "USERNAME" }
Dane właściciela konta:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/user_data/my_user_data'
{ "address" : null, "contact_person" : "John Smith", "email_address" : "john.smith@monit24.pl", "id" : 100, "phone_number" : "111111111", "settings" : [], "tax_identification_number" : null }
Limity usług, stacji monitorujących, kanałów powiadomień itp. są zdefiniowane w pakiecie przypisanym do konta. Każde konto ma przypisany dokładnie jeden pakiet. Pakiet własnego konta można pobrać w nastąpujący sposób:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/packages/my_package'
{ "available_notification_channel_ids" : [ "email", "email_dedicated", "email_extended", "email_short", "gadu_gadu", "jabber", "sms" ], "available_service_types" : [ { "maximum_services" : null, "minimum_interval" : null, "service_type_id" : "dns" }, { "maximum_services" : null, "minimum_interval" : null, "service_type_id" : "fullpage" }, { "maximum_services" : null, "minimum_interval" : null, "service_type_id" : "fullpagehttps" }, { "maximum_services" : null, "minimum_interval" : null, "service_type_id" : "http" }, { "maximum_services" : null, "minimum_interval" : null, "service_type_id" : "https" }, { "maximum_services" : null, "minimum_interval" : null, "service_type_id" : "ping" }, { "maximum_services" : null, "minimum_interval" : null, "service_type_id" : "smtp_helo" }, { "maximum_services" : null, "minimum_interval" : null, "service_type_id" : "tcp_connect" } ], "id" : 438, "is_available_for_new_accounts" : true, "maximum_sensors" : 5, "maximum_services" : 10, "maximum_sms_numbers" : null, "minimum_interval" : 120, "monthly_reports_limit" : null, "name" : "ZAAWANSOWANY" }
Pobranie listy (uproszczonych) obiektów usług, do których użytkownik ma dostęp:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services?fields=id,name,address,interval,type_id,is_active'
[ { "address" : "monit24.pl", "id" : 1, "interval" : 900, "is_active" : false, "name" : "Usługa testowa 1", "type_id" : "http" }, { "address" : "api.monit24.pl", "id" : 2, "interval" : 600, "is_active" : false, "name" : "Usługa testowa 2", "type_id" : "https" } ]
Uwaga: domyślnie lista ta zawiera jedynie pierwszych 10 znalezionych usług, ze względu na paginację. Szczegóły zasad działania operacji zwracających listę obiektów są opisane w tym dokumencie.
Aby pobrać tylko własne usługi (bez udostępnionych przez innych użytkowników), można użyć zapytania:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/accounts/my_account/services'
Usługi, które można modyfikować (własne lub udostępnione) można pobrać filtrując po permissions.update
:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services?permissions.update=true'
Usługi należące do wybranej grupy można pobrać na dwa sposoby: flitrując po group_id
...
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services?group_id=5000'
...lub używając zasobu /groups/{_id}/services
:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/groups/5000/services'
Stacje monitorujące, z których odbywa się monitoring usługi (nie licząc wylosowanych stacji zastępczych) można pobrać następująco:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services/1/monitoring_sensors?fields=id,name,city'
[ { "city" : "Warszawa", "id" : 2, "name" : "Warszawa01 217.17.42.71" }, { "city" : "Poznań", "id" : 18, "name" : "Poznan01 91.228.197.228" } ]
Obecnie lista ta jest tożsama z listą stacji monitorujących przypisanych do grupy, do której należy usługa.
Utworzenie nowej usługi typu http
, monitorującej adres monit24.pl
metodą GET co 1 godzinę i należącej do grupy 5000:
curl -u USERNAME:PASSWORD -X POST -H 'Content-Type: application/json' \ -d '{ "type_id" : "http", "address" : "monit24.pl", "interval" : 3600, "group_id" : 5000, "name" : "Usługa testowa", "extended_settings" : { "http_method" : "GET" } }' 'https://api.monit24.pl/v3/services'
{ "id" : 16 }
Pole extended_settings
zawiera szczegółowe ustawienia usługi.
Lista dostępnych ustawień szczegółowych zależy od typu usługi; dla danego typu można ją pobrać za pomocą wywołania GET /service_types/{id_typu}/extended_setting_formats
.
Monitoring usługi można włączyć lub wyłączyć modyfikując jej atrybut is_active
:
curl -u USERNAME:PASSWORD -X PUT -H 'Content-Type: application/json' \ -d '{ "is_active" : false }' 'https://api.monit24.pl/v3/services/16'
Usunięcie usługi za pomocą metody HTTP DELETE:
curl -u USERNAME:PASSWORD -X DELETE 'https://api.monit24.pl/v3/services/16'
Jeśli limity minutowe, godzinne i dobowe wymuszeń analizy działania usługi nie zostały przekroczone, można zlecić analizę (sprawdzenie) działania usługi poza przewidzianym harmonogramem:
curl -u USERNAME:PASSWORD -X POST 'https://api.monit24.pl/v3/services/16/force_analysis'
Funkcja ta przydaje się np. kiedy zmieniono ustawienia usługi i zachodzi potrzeba upewnienia się, że będzie działała zgodnie z oczekiwaniami.
Aktualny status monitoringu, działania i powiadomień dla usługi można pobrać za pomocą zasobu service_statuses
.
Każda usługa ma dokładnie jeden obiekt statusu, o takim samym identyfikatorze jak usługa.
Pobranie statusu dla usługi o identyfikatorze 16:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/service_statuses/16'
{ "check_status" : "ok", "check_status_is_up_to_date" : false, "id" : 1, "last_analysis_id" : "148442671420234", "last_analysis_time" : "2017-01-14T20:45:16Z", "last_check_status_change_time" : "2017-01-14T20:00:18Z", "last_failure_analysis_id" : "147190414120128", "last_failure_analysis_time" : "2016-08-22T22:15:46Z", "last_ok_analysis_id" : "148442671420234", "last_ok_analysis_time" : "2017-01-14T20:45:16Z", "monitoring_status" : "off", "notifications_status" : "on", "summary" : "paused" }
Lista grup, do których użytkownik ma dostęp:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/groups'
[ { "assigned_sensor_ids" : { "default" : [2, 18], "ipv6" : [3], "mobile" : [6], "webappcheck" : [4, 5], }, "id" : 200, "is_default" : true, "periodic_daily_reports" : true, "periodic_monthly_reports" : true, "periodic_weekly_reports" : true, "name" : "Grupa domyślna", "owner_id" : 100, "sensor_ids" : [ 2, 18 ] }, { "assigned_sensor_ids" : { "default" : [2, 30, 34], "ipv6" : [3], "mobile" : [6], "webappcheck" : [4, 5], }, "id" : 4, "is_default" : false, "periodic_daily_reports" : false, "periodic_monthly_reports" : false, "periodic_weekly_reports" : false, "name" : "test", "owner_id" : 100, "sensor_ids" : [ 2, 30, 34 ] } ]
Każde z kont posiada dokładnie jedną grupę domyślną (nowe usługi są do niej dodawane jeśli przy tworzeniu nie zostanie podana inna grupa). Własną grupę domyślną można pobrać w następujący sposób:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/groups/my_default_group'
{ "assigned_sensor_ids" : { "default" : [2, 18], "ipv6" : [3], "mobile" : [6], "webappcheck" : [4, 5], }, "id" : 200, "is_default" : true, "periodic_daily_reports" : true, "periodic_monthly_reports" : true, "periodic_weekly_reports" : true, "name" : "Grupa domyślna", "owner_id" : 100, "sensor_ids" : [ 2, 18 ] }
Pobranie listy własnych grup (bez udostępnionych przez innych użytkowników):
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/accounts/my_account/groups'
Utworzenie grupy z określeniem stacji monitorujących i wyłączonymi raportami dobowymi:
curl -u USERNAME:PASSWORD -X POST -H 'Content-Type: application/json' \ -d '{ "assigned_sensor_ids" : { "default" : [2, 18], "ipv6" : [3], "mobile" : [6], "webappcheck" : [4, 5], }, "name" : "Nowa grupa", "periodic_daily_reports" : false, }' 'https://api.monit24.pl/v3/groups'
{ "id" : 150 }
Stacje monitorujące przypisane do grupy można zmienić poprzez modyfikację jej atrybutu assigned_sensor_ids
:
curl -u USERNAME:PASSWORD -X PUT -H 'Content-Type: application/json' \ -d '{ "assigned_sensor_ids" : { "default" : [2, 18], "ipv6" : [3], "mobile" : [6], "webappcheck" : [4, 5], }, }' 'https://api.monit24.pl/v3/groups/150'
Atrybut sensor_ids
jest starszą wersją przypisania stacji monitorujących (bez podziału na kategorie typów usług).
Istnieje jedynie ze względu na kompatybilność wsteczną, ma wartość taką samą, jak stacje w kategorii default
.
Usunięcie grupy razem ze wszystkimi usługami, adresami powiadomień i raportów:
curl -u USERNAME:PASSWORD -X DELETE 'https://api.monit24.pl/v3/groups/150'
Lista typów usług, do których użytkownik ma dostęp:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/service_types?fields=id,name,address_prefix'
[ { "address_prefix" : "dns://", "id" : "dns", "name" : "DNS" }, { "address_prefix" : "http://", "id" : "fullpage", "name" : "FullPage" }, { "address_prefix" : "https://", "id" : "fullpagehttps", "name" : "FullPageHttps" }, { "address_prefix" : "http://", "id" : "http", "name" : "http" }, { "address_prefix" : "https://", "id" : "https", "name" : "https" }, { "address_prefix" : "ping://", "id" : "ping", "name" : "ping" }, { "address_prefix" : "smtp://", "id" : "smtp_helo", "name" : "smtp-helo" }, { "address_prefix" : "host://", "id" : "tcp_connect", "name" : "TCP Connect" } ]
W zależności od limitów konta, na którym usługa jest tworzona, mogą być dostępne różne typy usług. Ich listę dla wybranej grupy można pobrać następująco:
curl -u USERNAME:PASSWORD \ 'https://api.monit24.pl/v3/groups/100/available_service_types?\ fields=?fields=minimum_interval,remaining_services,service_type_id'
[ { "minimum_interval" : 120, "remaining_services" : 2, "service_type_id" : "dns" }, { "minimum_interval" : 240, "remaining_services" : 2, "service_type_id" : "fullpage" }, { "minimum_interval" : 300, "remaining_services" : 0, "service_type_id" : "fullpagehttps" }, { "minimum_interval" : 60, "remaining_services" : 2, "service_type_id" : "http" }, { "minimum_interval" : 120, "remaining_services" : 1, "service_type_id" : "https" }, { "minimum_interval" : 120, "remaining_services" : 2, "service_type_id" : "ping" }, { "minimum_interval" : 120, "remaining_services" : 2, "service_type_id" : "smtp_helo" }, { "minimum_interval" : 180, "remaining_services" : 2, "service_type_id" : "tcp_connect" } ]
Pole remaining_services
oznacza liczbę usług danego typu, które jeszcze można utworzyć w wybranej grupie.
0 oznacza, że typ usługi jest dostępny w pakiecie, ale wszystkie usługi tego typu zostały już wykorzystane.
Pole minimum_interval
oznacza minimalny odstęp pomiędzy sprawdzeniami dostępny dla usług danego typu.
Każdy typ usługi ma określoną listę zaawanowanych ustawień (`extended_settings`) dostępnych dla usług tego typu.
Dla danego typu można pobrać listę specyfikacji dostępnych ustawień za pomocą wywołania `GET /service_types/{id_typu}/extended_setting_formats`.
Przykład dla typu http
:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/service_types/ping/extended_setting_formats'
[ { "default" : 64, "description" : "Rozmiar pakietu danych", "enum" : null, "is_nullable" : false, "maximum" : 65535, "maximum_length" : null, "minimum" : 1, "minimum_length" : null, "pattern" : null, "service_type_id" : "ping", "setting_id" : "bytes_to_send", "suggested_form_element" : "text", "type" : "integer" }, { "default" : 3000, "description" : "Czas oczekiwania na odpowiedź", "enum" : null, "is_nullable" : false, "maximum" : 120000, "maximum_length" : null, "minimum" : 1, "minimum_length" : null, "pattern" : null, "service_type_id" : "ping", "setting_id" : "reply_timeout", "suggested_form_element" : "text", "type" : "integer" }, { "default" : 51, "description" : "Ile procent stacji monitorujących musi zgłosić błąd, aby został on uznany", "enum" : null, "is_nullable" : false, "maximum" : 100, "maximum_length" : null, "minimum" : 1, "minimum_length" : null, "pattern" : null, "service_type_id" : "ping", "setting_id" : "error_tolerance", "suggested_form_element" : "percent", "type" : "integer" }, { "default" : true, "description" : "Losuj zastępcze stacje monitorujące w przypadku awarii stacji", "enum" : null, "is_nullable" : false, "maximum" : null, "maximum_length" : null, "minimum" : null, "minimum_length" : null, "pattern" : null, "service_type_id" : "ping", "setting_id" : "sensors_failover", "suggested_form_element" : "checkbox", "type" : "boolean" } ]
Pobranie listy analiz działania usługi z ostatniej doby:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services/111/history/analyses'
[ { "analysis_id" : "148555590120222", "error_checks_count" : 2, "error_tolerance" : 51, "failure" : true, "ok_checks_count" : 0, "service_id" : 111, "time" : "2017-01-27T22:25:06Z", "unknown_checks_count" : 0 }, { "analysis_id" : "148555578420416", "error_checks_count" : 0, "error_tolerance" : 51, "failure" : false, "ok_checks_count" : 2, "service_id" : 111, "time" : "2017-01-27T22:23:06Z", "unknown_checks_count" : 0 }, { "analysis_id" : "148555575220134", "error_checks_count" : 0, "error_tolerance" : 51, "failure" : false, "ok_checks_count" : 2, "service_id" : 111, "time" : "2017-01-27T22:22:34Z", "unknown_checks_count" : 0 } ]
Uwaga: poza ograniczonym przedziałem czasowym (maksymalnie 40 dni) lista ta obsługuje standardowe mechanizmy paginacji.
Przedział czasowy można wybrać za pomocą parametrów GET from
i to
, domyślnie używana jest ostatnia doba.
Lista sprawdzeń na poszczególnych stacjach wchodzących w skład wybranej analizy:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services/111/history/analyses/148555590120222/checks'
[ { "analysis_id" : "148555590120222", "data_size" : 16384, "error_type_id" : 1000001, "error_message" : "Kod strony nie zawiera wymaganego wyrazenia: invalid_regex", "har_available" : false, "path_step" : null, "response_time" : 200, "result" : "error", "sensor_id" : 1, "service_id" : 111, "time" : "2017-01-27T22:25:06Z" }, { "analysis_id" : "148555590120222", "data_size" : 0, "error_type_id" : 1000001, "error_message" : "Kod strony nie zawiera wymaganego wyrazenia: invalid_regex", "har_available" : false, "path_step" : null, "response_time" : 244, "result" : "error", "sensor_id" : 2, "service_id" : 111, "time" : "2017-01-27T22:25:06Z" } ]
Szczegóły wybranego sprawdzenia (z analizy jak w przykładzie wyżej, dla stacji monitorującej 2):
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services/111/history/analyses/148555590120222/checks/2/details'
{ "analysis_id" : "148555590120222", "base_url" : "http://monit24.pl", "content_available" : true, "content_type" : "text/html", "file_name" : "/", "response_headers" : "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\n(...)", "sensor_id" : 2, "service_id" : 111, "step_data" : null }
Jeśli w szczegółach sprawdzenia content_available
ma wartość true
,
to możliwe jest pobranie zawartości strony z momentu awarii:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services/111/history/analyses/148555590120222/checks/2/artifacts/content/plain'
W podobny sposób można pobrać plik HAR dla sprawdzenia (jeśli atrybut har_available
sprawdzenia ma wartość true
):
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services/111/history/analyses/148555590120222/checks/2/artifacts/har/plain'
Wpisy w dzienniku zmian stanów usługi można pobrać w następujący sposób:
curl -u USERNAME:PASSWORD 'https://api.monit24.pl/v3/services/111/history/status_changes'
[ { "change_id" : "148555575220134", "description" : "Poprawne działanie", "duration" : 153, "end_time" : "2017-01-27T22:25:07Z", "first_analysis_id" : "148555575220134", "pause_reason" : null, "service_id" : 111, "start_time" : "2017-01-27T22:22:34Z", "status" : "ok" }, { "change_id" : "148555590120222", "description" : "Awaria (Reply does not match to requested pattern)", "duration" : 652, "end_time" : null, "first_analysis_id" : "148555590120222", "pause_reason" : null, "service_id" : 111, "start_time" : "2017-01-27T22:25:06Z", "status" : "failure" } ]
Domyślnie zwracana jest cała historia zmian stanów usługi, ze standardową paginacją.
Ostatnią awarię (przejście w stan failure
) usługi można pobrać następującym zapytaniem:
curl -u USERNAME:PASSWORD \ 'https://api.monit24.pl/v3/services/111/history/status_changes?status=failure&sort=-start_time&limit=1'
[ { "change_id" : "148555590120222", "description" : "Awaria (Reply does not match to requested pattern)", "duration" : 652, "end_time" : null, "first_analysis_id" : "148555590120222", "pause_reason" : null, "service_id" : 111, "start_time" : "2017-01-27T22:25:06Z", "status" : "failure" } ]
Pobranie dostępności usługi (danych Service Level) z wybranego przedziału czasowego:
curl -u USERNAME:PASSWORD \ 'https://api.monit24.pl/v3/services/108/history/service_level?from=2017-01-01T00:00:00Z&to=2017-02-01T00:00:00Z'
{ "failure" : 700151, "ok" : 167685, "paused" : 21669 }
Wynik zawiera sumaryczną liczbę sekund, w których usługa działała poprawnie, błędnie i w których monitoring był zatrzymany.