Dokumentacja API monitorów

Możliwe wartości pól

Lokalizacja monitora

WartośćOpis
US_EAST_1Wirginia Północna
CA_CENTRAL_1Kanada (Montreal)
EU_CENTRAL_1Frankfurt
AP_NORTHEAST_1Tokio

Typy alertów monitora

WartośćOpis
INCIDENTAlert incydentu
EMAILAlert e-mail
SMSAlert SMS
SLACKAlert Slack
DISCORDAlert Discord
MICROSOFT_TEAMSAlert Microsoft Teams
PHONE_CALLAlert przez połączenie telefoniczne
WEBHOOKAlert webhook
GOOGLE_CHATAlert Google Chat
WHATSAPPAlert WhatsApp

Status monitora

WartośćOpis
UPMonitor działa normalnie
DOWNMonitor zgłosił awarię
DEGRADEDMonitor ma problemy
UNKNOWNNie da się ustalić stanu monitora

Pobierz monitory

Ten endpoint pozwala przeglądać listę wszystkich istniejących monitorów i wyszukiwać w niej.

Endpoint:

GET /:page_id/monitors

Parametry zapytania

ParametrTypWartość domyślnaOpis
pagenumber1Numer strony do pobrania.
limitnumber100Liczba monitorów na stronę.
searchstringnullFraza do filtrowania wyników.
statusenumnullFiltr statusu ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED').

Przykładowe żądanie

GET /1/monitors?limit=3&page=2&status=DOWN

Przykładowa odpowiedź

{
"monitors": [{ "...": "monitor objects" }],
"total": 10,
"page": 3,
"totalPages": 5,
"limit": 2
}

Utwórz monitor

Endpoint:

POST /monitors

Przykładowe żądanie

{
"pageId": "page123",
"url": "https://example.com",
"httpMethod": "GET",
"body": null,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer token"
},
"queryParams": {
"search": "test",
"limit": "10"
},
"basicAuth": {
"username": "user",
"password": "password"
},
"type": "HTTP",
"assertions": [
{
"type": "STATUSCODE",
"comparison": "EQUALS",
"selector": null,
"target": "200"
}
],
"alerts": ["alert-id-1", "alert-id-2"],
"name": "Example Monitor",
"locations": "US_EAST_1",
"checksInterval": 300,
"createComponent": true,
"createMetric": true,
"onFail": {
"createIncident": true,
"createOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"onRecover": {
"resolveIncident": true,
"resolveOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
}
}

Przykładowa odpowiedź

{
"monitor": {
"pageId": "page123",
"url": "https://example.com",
"httpMethod": "GET",
"body": null,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer token"
},
"queryParams": {
"search": "test",
"limit": "10"
},
"basicAuth": {
"username": "user",
"password": "password"
},
"type": "HTTP",
"assertions": [
{
"id": "assertion1",
"type": "STATUSCODE",
"comparison": "EQUALS",
"selector": null,
"target": "200"
}
],
"alerts": ["alert1", "alert2"],
"name": "Example Monitor",
"locations": "US_EAST_1",
"checksInterval": 300,
"createComponent": true,
"createMetric": true,
"onFail": {
"createIncident": true,
"createOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"onRecover": {
"resolveIncident": true,
"resolveOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z"
},
"message": "Monitor created successfully"
}

Zaktualizuj monitor

Endpoint:

PUT /monitors/:id

Przykładowe żądanie

{
"url": "https://updated.com",
"name": "Updated Monitor Name"
}

Przykładowa odpowiedź

{
"monitor": {
"pageId": "page123",
"url": "https://updated.com",
"httpMethod": "GET",
"body": null,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer token"
},
"queryParams": {
"search": "test",
"limit": "10"
},
"basicAuth": {
"username": "user",
"password": "password"
},
"type": "HTTP",
"assertions": [
{
"id": "assertion1",
"type": "STATUSCODE",
"comparison": "EQUALS",
"selector": null,
"value": "200"
}
],
"alerts": ["alert1", "alert2"],
"name": "Updated Monitor Name",
"locations": "US_EAST_1",
"checksInterval": 300,
"createComponent": true,
"createMetric": true,
"onFail": {
"createIncident": true,
"createOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"onRecover": {
"resolveIncident": true,
"resolveOutageDuration": true,
"publishIncident": true,
"notifySubscribers": true
},
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z"
},
"message": "Monitor updated successfully"
}

Usuń monitor

Endpoint:

DELETE /monitors/:id

Przykładowe żądanie

DELETE /monitors/monitor-id-1

Przykładowa odpowiedź

{
"message": "Monitor deleted successfully."
}

Pobierz logi monitora

Endpoint:

GET /monitors/:id/logs

Parametry zapytania

ParametrTypWartość domyślnaOpis
limitnumber100Liczba elementów na stronę. Nie może przekraczać 1000.
pagenumber1Numer strony do pobrania.
monitorIdstring-ID monitora.
locationstringnullLokalizacja monitora.
createdAtstring | object | numbernullData utworzenia. Może być tekstem, liczbą lub obiektem z polami gte i lte.
isSuccessfulbooleannullCzy sprawdzenie zakończyło się powodzeniem.
isSSLCheckbooleannullCzy sprawdzenie jest sprawdzeniem SSL.
httpStatusCodestringnullKod statusu HTTP odpowiedzi.
status('UP', 'DOWN', 'UNKNOWN', 'DEGRADED')nullStatus monitora.
dnsTimestring | number | objectnullCzas rozwiązywania DNS.
tcpTimestring | number | objectnullCzas nawiązania połączenia TCP.
tlsTimestring | number | objectnullCzas uzgadniania TLS.
firstByteTimestring | number | objectnullCzas do otrzymania pierwszego bajtu.
downloadTimestring | number | objectnullCzas pobierania.
responseTimestring | number | objectnullŁączny czas odpowiedzi.
performanceTimestring | number | objectnullCzas wydajności.
accessabilityScorestring | number | objectnullWynik dostępności (accessibility).
seoScorestring | number | objectnullWynik SEO.
bestPracticesScorestring | number | objectnullWynik dobrych praktyk.
successfulAssertionsstring | number | objectnullLiczba udanych asercji.
sortstringchronologiczniePole, według którego sortować.

Przykładowe żądanie

GET /monitors/monitor-id-1/logs?limit=100&page=1

Przykładowa odpowiedź

{
"monitorLogs": [
// {monitor log object},
// {monitor log object 2}
],
"total": 478,
"page": 1,
"totalPages": 5,
"limit": 100
}

Uruchom sprawdzenie monitora po ID

Endpoint:

GET /monitors/:id/run

Parametry zapytania

ParametrTypWartość domyślnaOpis
location'US_EAST_1', 'EU_CENTRAL_1', 'AP_NORTHEAST_1', 'AP_SOUTHEAST_2', 'CA_CENTRAL_1'-Lokalizacja monitora. Musi być jedną ze wskazanych wartości.
retrybooleanfalseOkreśla, czy operacja ma zostać ponowiona. Opcjonalne.
monitorLogIdstringnullUnikalny identyfikator logu monitora. Opcjonalne.

Przykładowe żądanie

GET /monitors/monitor-id-1/run?monitorId=abc123&location=US_EAST_1&retry=true&monitorLogId=log456

Przykładowa odpowiedź

{
"status": "success",
"message": "Monitor check run successfully."
}

Utwórz alert monitora

Endpoint:

POST /monitor-alerts

Przykładowe żądanie

{
"type": "EMAIL",
"pageId": "page123",
"recipient": "user@example.com",
"recipientWorkspace": "workspace123",
"whenFails": true,
"whenRecovers": true,
"whenDegrades": false,
"whenSslExpires": true,
"sslExpiresInDays": 30,
"monitors": ["monitor1", "monitor2"],
"metadata": "Additional information about the alert"
}

Przykładowa odpowiedź

{
"monitor": {
"id": "alert123",
"siteId": "site123",
"type": "EMAIL",
"recipient": "user@example.com",
"whenFails": true,
"whenRecovers": true,
"whenDegrades": false,
"whenSslExpires": true,
"sslExpiresInDays": 30,
"monitors": [{ "id": "monitor1" }, { "id": "monitor2" }],
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z",
"metadata": "Additional information about the alert"
},
"message": "Monitor Alert created successfully"
}

Zaktualizuj alert monitora

Endpoint:

PUT /monitor-alerts/:id

Przykładowe żądanie

{
"type": "EMAIL",
"monitors": ["monitor-1-id", "monitor-2-id", "monitor-3-id"]
}

Przykładowa odpowiedź

{
"monitor": {
"type": "EMAIL",
"pageId": "page123",
"recipient": "user@example.com",
"recipientWorkspace": "workspace123",
"whenFails": true,
"whenRecovers": true,
"whenDegrades": false,
"whenSslExpires": true,
"sslExpiresInDays": 30,
"monitors": ["monitor-1-id", "monitor-2-id"],
"metadata": "Additional information about the alert"
},
"message": "Monitor alert updated successfully."
}

Pobierz alerty monitorów

Endpoint:

GET /:page_id/monitor-alerts

Parametry zapytania

ParametrTypWartość domyślnaOpis
limitnumber100Liczba elementów na stronę.
pagenumber1Numer strony do pobrania.

Przykładowe żądanie

GET /1/monitor-alerts?limit=2&page=3

Przykładowa odpowiedź

{
"monitorAlerts": [
{...monitor alert objects}
],
"total": 27,
"page": 3,
"totalPages": 14,
"limit": 2
}

Usuń alert monitora

Endpoint:

DELETE /monitor-alerts/:id

Przykładowe żądanie

DELETE /monitor-alerts/alert-id-1

Przykładowa odpowiedź

{
"message": "Monitor alert deleted successfully."
}

Utwórz grupę monitorów

Endpoint:

POST /monitors-groups

Przykładowe żądanie

{
"pageId": "page123",
"name": "Example Name",
"childId": "child456"
}

Przykładowa odpowiedź

{
"monitor": {
"id": "group123",
"name": "Example Name",
"siteId": "site123",
"collapsed": false,
"monitors": [{ "id": "monitor1" }, { "id": "monitor2" }],
"groupId": "parentGroup123",
"children": [
{ "id": "childGroup1", "name": "Child Group 1" },
{ "id": "childGroup2", "name": "Child Group 2" }
],
"order": 1,
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z",
"parents": ["parent1", "parent2"],
"componentId": "component123"
},
"message": "Monitor group created successfully."
}

Zaktualizuj grupę monitorów

Endpoint:

PUT /monitors-groups/:id

Przykładowe żądanie

{
"name": "Updated Monitor Group Name"
}

Przykładowa odpowiedź

{
"monitor": {
"id": "group123",
"name": "Updated Monitor Group Name",
"siteId": "site123",
"collapsed": true,
"monitors": [{ "id": "monitor1" }, { "id": "monitor2" }],
"groupId": "parentGroup123",
"children": [
{ "id": "childGroup1", "name": "Child Group 1" },
{ "id": "childGroup2", "name": "Child Group 2" }
],
"order": 1,
"createdAt": "2023-08-08T12:00:00Z",
"updatedAt": "2023-08-08T12:00:00Z",
"parents": ["parent1", "parent2"],
"componentId": "component123"
},
"message": "Monitor group updated successfully."
}

Usuń grupę monitorów

Endpoint:

DELETE /monitors-groups/:id

Przykładowe żądanie

DELETE /monitors-groups/group-id-1

Przykładowa odpowiedź

{
"message": "Monitor group deleted successfully."
}

Dodaj monitory do grupy

Endpoint:

POST /monitors-groups/:id/monitors

Przykładowe żądanie

{
"monitors": ["monitor1", "monitor2", "monitor3"]
}

Przykładowa odpowiedź

{
"message": "Monitors added to the group successfully."
}

Uruchom sprawdzenie grupy monitorów

Endpoint:

GET /monitors-groups/:id/run

Parametry zapytania

ParametrTypWartość domyślnaOpis
location'US_EAST_1', 'EU_CENTRAL_1', 'AP_NORTHEAST_1', 'AP_SOUTHEAST_2', 'CA_CENTRAL_1'-Lokalizacja monitora. Musi być jedną ze wskazanych wartości.
retrybooleanfalseOkreśla, czy operacja ma zostać ponowiona. Opcjonalne.
monitorLogIdstringnullUnikalny identyfikator logu monitora. Opcjonalne.

Przykładowe żądanie

GET /monitors-groups/group-id-1/run

Przykładowa odpowiedź

{
"result": "OK",
"monitorLogId": "monitor-log-id-1"
}

Monitory cron

Monitory cron śledzą zaplanowane zadania za pomocą pingów HTTP. Konfigurację w produkcie i obsługę w panelu opisujemy w artykule Monitoring cron.

Możliwe wartości pól

Status monitora cron

WartośćOpis
UPMonitor działa normalnie
DOWNMonitor zgłosił awarię
DEGRADEDMonitor ma problemy
UNKNOWNNie da się ustalić stanu monitora

Stan monitora cron

WartośćOpis
ACTIVEMonitor jest aktywnie sprawdzany
PAUSEDSprawdzenia monitora są wstrzymane
MUTEDMonitor jest wyciszony (bez powiadomień)

Status logu monitora cron

WartośćOpis
SUCCESSZadanie zakończyło się powodzeniem
FAILUREZadanie jawnie zgłosiło awarię
MISSEDZadanie nie wysłało pinga w oczekiwanym oknie
LATEZadanie wysłało ping po okresie, ale w czasie karencji
STARTEDZadanie zgłosiło start (pomiar czasu wykonania)

Okres i karencja

Zarówno period, jak i grace podaje się w sekundach. period określa, jak często zadanie ma się wykonywać, a grace to dodatkowy czas, zanim monitor zostanie oznaczony jako niedziałający.

Pobierz monitory cron

Endpoint:

GET /:page_id/monitors/cron

Parametry zapytania

ParametrTypWartość domyślnaOpis
limitnumber100Liczba monitorów cron na stronę. Maksymalnie 100.
pagenumber1Numer strony.
searchstringnullFraza do filtrowania wyników po nazwie.
statusenumnullFiltr statusu ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED').

Przykładowe żądanie

GET /page123/monitors/cron?limit=10&page=1&status=DOWN

Przykładowa odpowiedź

{
"cronMonitors": [
{
"id": "cron-abc123",
"name": "Daily backup",
"slug": "my-page-x7k2m9n4p1q8w3e5",
"period": 86400,
"grace": 3600,
"status": "UP",
"state": "ACTIVE",
"siteId": "page123",
"order": 1,
"groupId": null,
"componentId": "component-id-1",
"onFailCreateIncident": true,
"onFailCreateOutageDuration": false,
"onFailPublishIncident": true,
"onFailNotifySubscribers": true,
"onRecoverResolveIncident": true,
"onRecoverResolveOutageDuration": false,
"onRecoverPublishIncident": true,
"onRecoverNotifySubscribers": true,
"createTemplateId": null,
"resolveTemplateId": null,
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-01-15T08:00:00.000Z"
}
],
"total": 1,
"page": 1,
"totalPages": 1,
"limit": 10
}

Utwórz monitor cron

Endpoint:

POST /monitors/cron

Przykładowe żądanie

{
"pageId": "page123",
"name": "Daily backup",
"period": 86400,
"grace": 3600,
"alerts": ["alert-id-1", "alert-id-2"],
"createComponent": true,
"onFail": {
"createIncident": true,
"createOutageDuration": false,
"publishIncident": true,
"notifySubscribers": true
},
"onRecover": {
"resolveIncident": true,
"resolveOutageDuration": false,
"publishIncident": true,
"notifySubscribers": true
}
}

Przykładowa odpowiedź

{
"cronMonitor": {
"id": "cron-abc123",
"name": "Daily backup",
"slug": "my-page-x7k2m9n4p1q8w3e5",
"period": 86400,
"grace": 3600,
"status": "UP",
"state": "ACTIVE",
"siteId": "page123",
"order": 1,
"groupId": null,
"componentId": "component-id-1",
"onFailCreateIncident": true,
"onFailCreateOutageDuration": false,
"onFailPublishIncident": true,
"onFailNotifySubscribers": true,
"onRecoverResolveIncident": true,
"onRecoverResolveOutageDuration": false,
"onRecoverPublishIncident": true,
"onRecoverNotifySubscribers": true,
"createTemplateId": null,
"resolveTemplateId": null,
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-01-15T08:00:00.000Z"
},
"message": "Cron monitor created successfully."
}

Odpowiedź zawiera pole slug. Użyj go, aby zbudować adresy URL pingów dla swojego zadania. Pierwszy udany ping planuje zadanie sprawdzające w tle.

Zaktualizuj monitor cron

Endpoint:

PUT /monitors/cron/:id

Przykładowe żądanie

{
"name": "Daily backup (updated)",
"period": 43200,
"grace": 1800,
"state": "PAUSED",
"alerts": ["alert-id-1"],
"onFail": {
"notifySubscribers": false
}
}

Przykładowa odpowiedź

{
"cronMonitor": {
"id": "cron-abc123",
"name": "Daily backup (updated)",
"slug": "my-page-x7k2m9n4p1q8w3e5",
"period": 43200,
"grace": 1800,
"status": "UP",
"state": "PAUSED",
"siteId": "page123",
"order": 1,
"groupId": null,
"componentId": "component-id-1",
"onFailCreateIncident": true,
"onFailCreateOutageDuration": false,
"onFailPublishIncident": true,
"onFailNotifySubscribers": false,
"onRecoverResolveIncident": true,
"onRecoverResolveOutageDuration": false,
"onRecoverPublishIncident": true,
"onRecoverNotifySubscribers": true,
"createTemplateId": null,
"resolveTemplateId": null,
"alerts": [
{
"id": "alert-id-1",
"type": "EMAIL",
"recipient": "ops@example.com"
}
],
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-01-16T10:30:00.000Z"
},
"message": "Cron monitor updated successfully."
}

Usuń monitor cron

Endpoint:

DELETE /monitors/cron/:id

Przykładowe żądanie

DELETE /monitors/cron/cron-abc123

Przykładowa odpowiedź

{
"cronMonitor": {
"id": "cron-abc123",
"name": "Daily backup",
"slug": "my-page-x7k2m9n4p1q8w3e5",
"period": 86400,
"grace": 3600,
"status": "UP",
"state": "ACTIVE",
"siteId": "page123",
"order": 1,
"groupId": null,
"componentId": "component-id-1",
"onFailCreateIncident": true,
"onFailCreateOutageDuration": false,
"onFailPublishIncident": true,
"onFailNotifySubscribers": true,
"onRecoverResolveIncident": true,
"onRecoverResolveOutageDuration": false,
"onRecoverPublishIncident": true,
"onRecoverNotifySubscribers": true,
"createTemplateId": null,
"resolveTemplateId": null,
"createdAt": "2024-01-15T08:00:00.000Z",
"updatedAt": "2024-01-15T08:00:00.000Z"
},
"message": "Cron monitor deleted successfully."
}

Pobierz logi monitora cron

Endpoint:

GET /monitors/cron/:id/logs

Parametry zapytania

ParametrTypWartość domyślnaOpis
limitnumber100Liczba logów na stronę. Maksymalnie 127.
pagenumber1Numer strony. Maksymalnie 1000.
startDatestringrok temuData początkowa zakresu logów w formacie ISO 8601.
endDatestringterazData końcowa zakresu logów w formacie ISO 8601.
importanceenumnullFiltruj logi według ważności ('all', 'important').

Przykładowe żądanie

GET /monitors/cron/cron-abc123/logs?limit=50&page=1&importance=important

Przykładowa odpowiedź

{
"logs": [
{
"id": "log-xyz789",
"monitorId": "cron-abc123",
"status": "SUCCESS",
"requestType": "GET",
"agent": "curl/8.4.0",
"ipAddress": "203.0.113.10",
"createdAt": "2024-01-16T06:00:00.000Z",
"startedAt": "2024-01-16T05:59:58.000Z"
}
],
"page": 1
}

Pobierz podsumowanie monitora cron

Endpoint:

GET /monitors/cron/:id/summary

Przykładowe żądanie

GET /monitors/cron/cron-abc123/summary

Przykładowa odpowiedź

{
"summary": {
"totalLogs": 120,
"totalFailedLogs": 3,
"availability": 97.5,
"oneDayAvailability": 100,
"previousDayAvailability": 100,
"sevenDayAvailability": 98.2,
"previousSevenDayAvailability": 96.1,
"thirtyDayAvailability": 97.5,
"previousThirtyDayAvailability": 95.8,
"lastSuccess": "2024-01-16T06:00:00.000Z",
"lastFailure": "2024-01-10T06:00:00.000Z",
"lastStarted": null,
"upSince": "2024-01-10T07:00:00.000Z",
"downSince": null
}
}

Endpointy pingów

Te endpointy nie wymagają uwierzytelniania. Rolę sekretu pełni slug monitora.

Ping możesz wysłać na bazowy adres URL API albo na dedykowany host cron:

  • Powodzenie: https://cron.instatus.com/{slug} lub GET / POST / HEAD /monitors/cron/{slug}
  • Awaria: https://cron.instatus.com/{slug}/fail lub GET / POST / HEAD /monitors/cron/{slug}/fail
  • Start: https://cron.instatus.com/{slug}/start lub GET / POST / HEAD /monitors/cron/{slug}/start

Wysyłaj ping powodzenia za każdym razem, gdy zadanie zakończy się zgodnie z harmonogramem. Aby zapisać czas wykonania, wyślij ping startu przed uruchomieniem zadania oraz ping powodzenia lub awarii po jego zakończeniu.

Przykładowy ping powodzenia

curl https://cron.instatus.com/my-page-x7k2m9n4p1q8w3e5

Przykładowa odpowiedź

{
"id": "log-xyz789",
"monitorId": "cron-abc123",
"status": "SUCCESS",
"requestType": "GET",
"agent": "curl/8.4.0",
"ipAddress": "203.0.113.10",
"createdAt": "2024-01-16T06:00:00.000Z"
}

Jeśli slug jest nieprawidłowy, odpowiedź wygląda tak:

{
"message": "Monitor not found"
}