Довідник API: монітори
Можливі значення полів
Локація монітора
| Значення | Опис |
|---|---|
US_EAST_1 | Пн. Вірджинія |
CA_CENTRAL_1 | Канада (Монреаль) |
EU_CENTRAL_1 | Франкфурт |
AP_NORTHEAST_1 | Токіо |
Типи сповіщень монітора
| Значення | Опис |
|---|---|
INCIDENT | Сповіщення-інцидент |
EMAIL | Сповіщення на email |
SMS | Сповіщення через SMS |
SLACK | Сповіщення у Slack |
DISCORD | Сповіщення у Discord |
MICROSOFT_TEAMS | Сповіщення у Microsoft Teams |
PHONE_CALL | Телефонний дзвінок |
WEBHOOK | Сповіщення вебхуком |
GOOGLE_CHAT | Сповіщення у Google Chat |
WHATSAPP | Сповіщення у WhatsApp |
Статус монітора
| Значення | Опис |
|---|---|
UP | Монітор працює нормально |
DOWN | Монітор упав |
DEGRADED | У монітора є проблеми |
UNKNOWN | Стан монітора визначити не вдалося |
Отримати монітори
Через цей ендпоінт можна знайти та переглянути список усіх наявних моніторів.
Ендпоінт:
GET /:page_id/monitors
Параметри запиту
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
page | number | 1 | Номер сторінки, яку потрібно отримати. |
limit | number | 100 | Кількість моніторів на сторінку. |
search | string | null | Пошуковий термін для фільтрації результатів. |
status | enum | null | Фільтр за статусом ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED'). |
Приклад запиту
GET /1/monitors?limit=3&page=2&status=DOWN
Приклад відповіді
{"monitors": [{ "...": "monitor objects" }],"total": 10,"page": 3,"totalPages": 5,"limit": 2}
Створити монітор
Ендпоінт:
POST /monitors
Приклад запиту
{"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}}
Приклад відповіді
{"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"}
Оновити монітор
Ендпоінт:
PUT /monitors/:id
Приклад запиту
{"url": "https://updated.com","name": "Updated Monitor Name"}
Приклад відповіді
{"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"}
Видалити монітор
Ендпоінт:
DELETE /monitors/:id
Приклад запиту
DELETE /monitors/monitor-id-1
Приклад відповіді
{"message": "Monitor deleted successfully."}
Отримати логи монітора
Ендпоінт:
GET /monitors/:id/logs
Параметри запиту
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
limit | number | 100 | Кількість елементів на сторінку. Не може перевищувати 1000. |
page | number | 1 | Номер сторінки, яку потрібно отримати. |
monitorId | string | - | ID монітора. |
location | string | null | Локація монітора. |
createdAt | string | object | number | null | Дата створення. Може бути рядком, числом або обʼєктом із полями gte і lte. |
isSuccessful | boolean | null | Чи була перевірка успішною. |
isSSLCheck | boolean | null | Чи є перевірка SSL-перевіркою. |
httpStatusCode | string | null | HTTP-код статусу відповіді. |
status | ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED') | null | Статус монітора. |
dnsTime | string | number | object | null | Час, витрачений на розвʼязання DNS. |
tcpTime | string | number | object | null | Час, витрачений на TCP-зʼєднання. |
tlsTime | string | number | object | null | Час, витрачений на TLS-рукостискання. |
firstByteTime | string | number | object | null | Час до отримання першого байта. |
downloadTime | string | number | object | null | Час, витрачений на завантаження. |
responseTime | string | number | object | null | Загальний час відгуку. |
performanceTime | string | number | object | null | Час продуктивності. |
accessabilityScore | string | number | object | null | Оцінка доступності. |
seoScore | string | number | object | null | Оцінка SEO. |
bestPracticesScore | string | number | object | null | Оцінка дотримання найкращих практик. |
successfulAssertions | string | number | object | null | Кількість успішних перевірок умов. |
sort | string | хронологічно | Поле, за яким сортувати. |
Приклад запиту
GET /monitors/monitor-id-1/logs?limit=100&page=1
Приклад відповіді
{"monitorLogs": [// {monitor log object},// {monitor log object 2}],"total": 478,"page": 1,"totalPages": 5,"limit": 100}
Запустити перевірку монітора за ID
Ендпоінт:
GET /monitors/:id/run
Параметри запиту
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
location | 'US_EAST_1', 'EU_CENTRAL_1', 'AP_NORTHEAST_1', 'AP_SOUTHEAST_2', 'CA_CENTRAL_1' | - | Локація монітора. Має бути одним із наведених значень. |
retry | boolean | false | Чи потрібно повторювати операцію. Необовʼязковий. |
monitorLogId | string | null | Унікальний ідентифікатор лога монітора. Необовʼязковий. |
Приклад запиту
GET /monitors/monitor-id-1/run?monitorId=abc123&location=US_EAST_1&retry=true&monitorLogId=log456
Приклад відповіді
{"status": "success","message": "Monitor check run successfully."}
Створити сповіщення монітора
Ендпоінт:
POST /monitor-alerts
Приклад запиту
{"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"}
Приклад відповіді
{"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"}
Оновити сповіщення монітора
Ендпоінт:
PUT /monitor-alerts/:id
Приклад запиту
{"type": "EMAIL","monitors": ["monitor-1-id", "monitor-2-id", "monitor-3-id"]}
Приклад відповіді
{"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."}
Отримати сповіщення монітора
Ендпоінт:
GET /:page_id/monitor-alerts
Параметри запиту
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
limit | number | 100 | Кількість елементів на сторінку. |
page | number | 1 | Номер сторінки, яку потрібно отримати. |
Приклад запиту
GET /1/monitor-alerts?limit=2&page=3
Приклад відповіді
{"monitorAlerts": [{...monitor alert objects}],"total": 27,"page": 3,"totalPages": 14,"limit": 2}
Видалити сповіщення монітора
Ендпоінт:
DELETE /monitor-alerts/:id
Приклад запиту
DELETE /monitor-alerts/alert-id-1
Приклад відповіді
{"message": "Monitor alert deleted successfully."}
Створити групу моніторів
Ендпоінт:
POST /monitors-groups
Приклад запиту
{"pageId": "page123","name": "Example Name","childId": "child456"}
Приклад відповіді
{"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."}
Оновити групу моніторів
Ендпоінт:
PUT /monitors-groups/:id
Приклад запиту
{"name": "Updated Monitor Group Name"}
Приклад відповіді
{"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."}
Видалити групу моніторів
Ендпоінт:
DELETE /monitors-groups/:id
Приклад запиту
DELETE /monitors-groups/group-id-1
Приклад відповіді
{"message": "Monitor group deleted successfully."}
Додати монітори до групи
Ендпоінт:
POST /monitors-groups/:id/monitors
Приклад запиту
{"monitors": ["monitor1", "monitor2", "monitor3"]}
Приклад відповіді
{"message": "Monitors added to the group successfully."}
Запустити перевірку групи моніторів
Ендпоінт:
GET /monitors-groups/:id/run
Параметри запиту
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
location | 'US_EAST_1', 'EU_CENTRAL_1', 'AP_NORTHEAST_1', 'AP_SOUTHEAST_2', 'CA_CENTRAL_1' | - | Локація монітора. Має бути одним із наведених значень. |
retry | boolean | false | Чи потрібно повторювати операцію. Необовʼязковий. |
monitorLogId | string | null | Унікальний ідентифікатор лога монітора. Необовʼязковий. |
Приклад запиту
GET /monitors-groups/group-id-1/run
Приклад відповіді
{"result": "OK","monitorLogId": "monitor-log-id-1"}
Cron-монітори
Cron-монітори стежать за запланованими завданнями через HTTP-пінги. Про налаштування та роботу в панелі керування читайте в статті Моніторинг cron.
Можливі значення полів
Статус cron-монітора
| Значення | Опис |
|---|---|
UP | Монітор працює нормально |
DOWN | Монітор упав |
DEGRADED | У монітора є проблеми |
UNKNOWN | Стан монітора визначити не вдалося |
Стан cron-монітора
| Значення | Опис |
|---|---|
ACTIVE | Монітор активно перевіряється |
PAUSED | Перевірки монітора призупинено |
MUTED | Монітор беззвучний (без сповіщень) |
Статус лога cron-монітора
| Значення | Опис |
|---|---|
SUCCESS | Завдання успішно завершено |
FAILURE | Завдання явно повідомило про збій |
MISSED | Завдання не надіслало пінг у межах вікна |
LATE | Пінг надійшов після періоду, але в межах запасу |
STARTED | Завдання повідомило про старт (замір часу) |
Період і запас часу
І period, і grace вказуються в секундах. period — це те, як часто має виконуватися завдання; grace — додатковий час, який дається, перш ніж монітор буде позначено як недоступний.
Отримати cron-монітори
Ендпоінт:
GET /:page_id/monitors/cron
Параметри запиту
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
limit | number | 100 | Кількість cron-моніторів на сторінку. Максимум — 100. |
page | number | 1 | Номер сторінки. |
search | string | null | Пошуковий термін для фільтрації результатів за назвою. |
status | enum | null | Фільтр за статусом ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED'). |
Приклад запиту
GET /page123/monitors/cron?limit=10&page=1&status=DOWN
Приклад відповіді
{"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}
Створити cron-монітор
Ендпоінт:
POST /monitors/cron
Приклад запиту
{"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}}
Приклад відповіді
{"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."}
У відповіді є поле slug. Використовуйте його, щоб побудувати URL пінгів для свого завдання. Перший успішний пінг ставить у чергу фонове завдання перевірки.
Оновити cron-монітор
Ендпоінт:
PUT /monitors/cron/:id
Приклад запиту
{"name": "Daily backup (updated)","period": 43200,"grace": 1800,"state": "PAUSED","alerts": ["alert-id-1"],"onFail": {"notifySubscribers": false}}
Приклад відповіді
{"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."}
Видалити cron-монітор
Ендпоінт:
DELETE /monitors/cron/:id
Приклад запиту
DELETE /monitors/cron/cron-abc123
Приклад відповіді
{"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."}
Отримати логи cron-монітора
Ендпоінт:
GET /monitors/cron/:id/logs
Параметри запиту
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
limit | number | 100 | Кількість логів на сторінку. Максимум — 127. |
page | number | 1 | Номер сторінки. Максимум — 1000. |
startDate | string | рік тому | Початкова дата діапазону логів у форматі ISO 8601. |
endDate | string | зараз | Кінцева дата діапазону логів у форматі ISO 8601. |
importance | enum | null | Фільтр логів за важливістю ('all', 'important'). |
Приклад запиту
GET /monitors/cron/cron-abc123/logs?limit=50&page=1&importance=important
Приклад відповіді
{"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}
Отримати зведення cron-монітора
Ендпоінт:
GET /monitors/cron/:id/summary
Приклад запиту
GET /monitors/cron/cron-abc123/summary
Приклад відповіді
{"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}}
Ендпоінти пінгів
Ці ендпоінти не потребують автентифікації. Роль секрету виконує slug монітора.
Пінгувати можна через базовий URL API або через окремий cron-хост:
- Успіх:
https://cron.instatus.com/{slug}абоGET/POST/HEAD/monitors/cron/{slug} - Збій:
https://cron.instatus.com/{slug}/failабоGET/POST/HEAD/monitors/cron/{slug}/fail - Старт:
https://cron.instatus.com/{slug}/startабоGET/POST/HEAD/monitors/cron/{slug}/start
Надсилайте пінг успіху щоразу, коли ваше завдання завершується за розкладом. Щоб зафіксувати час виконання, надсилайте пінг старту перед запуском завдання та пінг успіху або збою після його завершення.
Приклад пінга успіху
curl https://cron.instatus.com/my-page-x7k2m9n4p1q8w3e5
Приклад відповіді
{"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"}
Якщо slug некоректний, відповідь буде такою:
{"message": "Monitor not found"}