Tài liệu tham khảo API Monitor
Các giá trị có thể dùng cho từng trường
Vị trí monitor
| Giá trị | Mô tả |
|---|---|
US_EAST_1 | N. Virginia |
CA_CENTRAL_1 | Canada (Montreal) |
EU_CENTRAL_1 | Frankfurt |
AP_NORTHEAST_1 | Tokyo |
Loại cảnh báo monitor
| Giá trị | Mô tả |
|---|---|
INCIDENT | Cảnh báo sự cố |
EMAIL | Cảnh báo qua email |
SMS | Cảnh báo qua SMS |
SLACK | Cảnh báo qua Slack |
DISCORD | Cảnh báo qua Discord |
MICROSOFT_TEAMS | Cảnh báo qua Microsoft Teams |
PHONE_CALL | Cảnh báo qua cuộc gọi điện thoại |
WEBHOOK | Cảnh báo qua webhook |
GOOGLE_CHAT | Cảnh báo qua Google Chat |
WHATSAPP | Cảnh báo qua WhatsApp |
Trạng thái monitor
| Giá trị | Mô tả |
|---|---|
UP | Monitor đang chạy bình thường |
DOWN | Monitor đã gặp sự cố |
DEGRADED | Monitor đang gặp vấn đề |
UNKNOWN | Không xác định được trạng thái monitor |
Lấy danh sách monitor
Bạn có thể dùng endpoint này để tìm và duyệt qua danh sách tất cả monitor hiện có.
Endpoint:
GET /:page_id/monitors
Tham số query
| Tham số | Kiểu | Giá trị mặc định | Mô tả |
|---|---|---|---|
page | number | 1 | Số trang cần lấy. |
limit | number | 100 | Số monitor mỗi trang. |
search | string | null | Từ khóa tìm kiếm để lọc kết quả. |
status | enum | null | Bộ lọc trạng thái ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED'). |
Yêu cầu ví dụ
GET /1/monitors?limit=3&page=2&status=DOWN
Phản hồi ví dụ
{"monitors": [{ "...": "monitor objects" }],"total": 10,"page": 3,"totalPages": 5,"limit": 2}
Tạo một monitor
Endpoint:
POST /monitors
Yêu cầu ví dụ
{"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}}
Phản hồi ví dụ
{"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"}
Cập nhật một monitor
Endpoint:
PUT /monitors/:id
Yêu cầu ví dụ
{"url": "https://updated.com","name": "Updated Monitor Name"}
Phản hồi ví dụ
{"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"}
Xóa một monitor
Endpoint:
DELETE /monitors/:id
Yêu cầu ví dụ
DELETE /monitors/monitor-id-1
Phản hồi ví dụ
{"message": "Monitor deleted successfully."}
Lấy log của monitor
Endpoint:
GET /monitors/:id/logs
Tham số query
| Tham số | Kiểu | Giá trị mặc định | Mô tả |
|---|---|---|---|
limit | number | 100 | Số mục mỗi trang. Không được vượt quá 1000. |
page | number | 1 | Số trang cần lấy. |
monitorId | string | - | ID của monitor. |
location | string | null | Vị trí của monitor. |
createdAt | string | object | number | null | Ngày tạo. Có thể là chuỗi, số, hoặc một object có các trường gte và lte. |
isSuccessful | boolean | null | Lần kiểm tra có thành công hay không. |
isSSLCheck | boolean | null | Lần kiểm tra có phải là kiểm tra SSL hay không. |
httpStatusCode | string | null | Mã trạng thái HTTP của phản hồi. |
status | ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED') | null | Trạng thái của monitor. |
dnsTime | string | number | object | null | Thời gian phân giải DNS. |
tcpTime | string | number | object | null | Thời gian kết nối TCP. |
tlsTime | string | number | object | null | Thời gian bắt tay TLS. |
firstByteTime | string | number | object | null | Thời gian nhận được byte đầu tiên. |
downloadTime | string | number | object | null | Thời gian tải xuống. |
responseTime | string | number | object | null | Tổng thời gian phản hồi. |
performanceTime | string | number | object | null | Thời gian hiệu suất. |
accessabilityScore | string | number | object | null | Điểm khả năng tiếp cận. |
seoScore | string | number | object | null | Điểm SEO. |
bestPracticesScore | string | number | object | null | Điểm thực hành tốt nhất. |
successfulAssertions | string | number | object | null | Số điều kiện được thỏa mãn. |
sort | string | theo thời gian | Trường dùng để sắp xếp. |
Yêu cầu ví dụ
GET /monitors/monitor-id-1/logs?limit=100&page=1
Phản hồi ví dụ
{"monitorLogs": [// {monitor log object},// {monitor log object 2}],"total": 478,"page": 1,"totalPages": 5,"limit": 100}
Chạy kiểm tra monitor theo ID
Endpoint:
GET /monitors/:id/run
Tham số query
| Tham số | Kiểu | Giá trị mặc định | Mô tả |
|---|---|---|---|
location | 'US_EAST_1', 'EU_CENTRAL_1', 'AP_NORTHEAST_1', 'AP_SOUTHEAST_2', 'CA_CENTRAL_1' | - | Vị trí của monitor. Phải là một trong các giá trị được liệt kê. |
retry | boolean | false | Cho biết thao tác có nên được thử lại hay không. Tùy chọn. |
monitorLogId | string | null | Định danh duy nhất của log monitor. Tùy chọn. |
Yêu cầu ví dụ
GET /monitors/monitor-id-1/run?monitorId=abc123&location=US_EAST_1&retry=true&monitorLogId=log456
Phản hồi ví dụ
{"status": "success","message": "Monitor check run successfully."}
Tạo cảnh báo monitor
Endpoint:
POST /monitor-alerts
Yêu cầu ví dụ
{"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"}
Phản hồi ví dụ
{"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"}
Cập nhật cảnh báo monitor
Endpoint:
PUT /monitor-alerts/:id
Yêu cầu ví dụ
{"type": "EMAIL","monitors": ["monitor-1-id", "monitor-2-id", "monitor-3-id"]}
Phản hồi ví dụ
{"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."}
Lấy danh sách cảnh báo monitor
Endpoint:
GET /:page_id/monitor-alerts
Tham số query
| Tham số | Kiểu | Giá trị mặc định | Mô tả |
|---|---|---|---|
limit | number | 100 | Số mục mỗi trang. |
page | number | 1 | Số trang cần lấy. |
Yêu cầu ví dụ
GET /1/monitor-alerts?limit=2&page=3
Phản hồi ví dụ
{"monitorAlerts": [{...monitor alert objects}],"total": 27,"page": 3,"totalPages": 14,"limit": 2}
Xóa cảnh báo monitor
Endpoint:
DELETE /monitor-alerts/:id
Yêu cầu ví dụ
DELETE /monitor-alerts/alert-id-1
Phản hồi ví dụ
{"message": "Monitor alert deleted successfully."}
Tạo nhóm monitor
Endpoint:
POST /monitors-groups
Yêu cầu ví dụ
{"pageId": "page123","name": "Example Name","childId": "child456"}
Phản hồi ví dụ
{"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."}
Cập nhật nhóm monitor
Endpoint:
PUT /monitors-groups/:id
Yêu cầu ví dụ
{"name": "Updated Monitor Group Name"}
Phản hồi ví dụ
{"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."}
Xóa nhóm monitor
Endpoint:
DELETE /monitors-groups/:id
Yêu cầu ví dụ
DELETE /monitors-groups/group-id-1
Phản hồi ví dụ
{"message": "Monitor group deleted successfully."}
Thêm monitor vào nhóm
Endpoint:
POST /monitors-groups/:id/monitors
Yêu cầu ví dụ
{"monitors": ["monitor1", "monitor2", "monitor3"]}
Phản hồi ví dụ
{"message": "Monitors added to the group successfully."}
Chạy kiểm tra nhóm monitor
Endpoint:
GET /monitors-groups/:id/run
Tham số query
| Tham số | Kiểu | Giá trị mặc định | Mô tả |
|---|---|---|---|
location | 'US_EAST_1', 'EU_CENTRAL_1', 'AP_NORTHEAST_1', 'AP_SOUTHEAST_2', 'CA_CENTRAL_1' | - | Vị trí của monitor. Phải là một trong các giá trị được liệt kê. |
retry | boolean | false | Cho biết thao tác có nên được thử lại hay không. Tùy chọn. |
monitorLogId | string | null | Định danh duy nhất của log monitor. Tùy chọn. |
Yêu cầu ví dụ
GET /monitors-groups/group-id-1/run
Phản hồi ví dụ
{"result": "OK","monitorLogId": "monitor-log-id-1"}
Monitor cron
Monitor cron theo dõi các job theo lịch thông qua ping HTTP. Về cách thiết lập và sử dụng trong dashboard, xem Giám sát cron.
Các giá trị có thể dùng cho từng trường
Trạng thái monitor cron
| Giá trị | Mô tả |
|---|---|
UP | Monitor đang chạy bình thường |
DOWN | Monitor đã gặp sự cố |
DEGRADED | Monitor đang gặp vấn đề |
UNKNOWN | Không xác định được trạng thái monitor |
Tình trạng monitor cron
| Giá trị | Mô tả |
|---|---|
ACTIVE | Monitor đang được kiểm tra |
PAUSED | Các lần kiểm tra monitor đang tạm dừng |
MUTED | Monitor đã được tắt tiếng (không thông báo) |
Trạng thái log của monitor cron
| Giá trị | Mô tả |
|---|---|
SUCCESS | Job hoàn tất thành công |
FAILURE | Job báo lỗi rõ ràng |
MISSED | Job không ping trong khoảng thời gian mong đợi |
LATE | Job ping sau chu kỳ nhưng vẫn trong thời gian ân hạn |
STARTED | Job báo rằng nó đã bắt đầu (đo thời gian chạy) |
Chu kỳ và thời gian ân hạn
Cả period và grace đều tính bằng giây. period là tần suất job cần chạy; grace là khoảng thời gian dôi ra trước khi monitor bị đánh dấu là gặp sự cố.
Lấy danh sách monitor cron
Endpoint:
GET /:page_id/monitors/cron
Tham số query
| Tham số | Kiểu | Giá trị mặc định | Mô tả |
|---|---|---|---|
limit | number | 100 | Số monitor cron mỗi trang. Tối đa là 100. |
page | number | 1 | Số trang. |
search | string | null | Từ khóa tìm kiếm để lọc kết quả theo tên. |
status | enum | null | Bộ lọc trạng thái ('UP', 'DOWN', 'UNKNOWN', 'DEGRADED'). |
Yêu cầu ví dụ
GET /page123/monitors/cron?limit=10&page=1&status=DOWN
Phản hồi ví dụ
{"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}
Tạo một monitor cron
Endpoint:
POST /monitors/cron
Yêu cầu ví dụ
{"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}}
Phản hồi ví dụ
{"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."}
Phản hồi có kèm một slug. Dùng nó để tạo các URL ping cho job của bạn. Lần ping thành công đầu tiên sẽ lên lịch cho job kiểm tra chạy nền.
Cập nhật một monitor cron
Endpoint:
PUT /monitors/cron/:id
Yêu cầu ví dụ
{"name": "Daily backup (updated)","period": 43200,"grace": 1800,"state": "PAUSED","alerts": ["alert-id-1"],"onFail": {"notifySubscribers": false}}
Phản hồi ví dụ
{"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."}
Xóa một monitor cron
Endpoint:
DELETE /monitors/cron/:id
Yêu cầu ví dụ
DELETE /monitors/cron/cron-abc123
Phản hồi ví dụ
{"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."}
Lấy log của monitor cron
Endpoint:
GET /monitors/cron/:id/logs
Tham số query
| Tham số | Kiểu | Giá trị mặc định | Mô tả |
|---|---|---|---|
limit | number | 100 | Số log mỗi trang. Tối đa là 127. |
page | number | 1 | Số trang. Tối đa là 1000. |
startDate | string | 1 năm trước | Ngày bắt đầu theo ISO 8601 cho khoảng log. |
endDate | string | bây giờ | Ngày kết thúc theo ISO 8601 cho khoảng log. |
importance | enum | null | Lọc log theo mức quan trọng ('all', 'important'). |
Yêu cầu ví dụ
GET /monitors/cron/cron-abc123/logs?limit=50&page=1&importance=important
Phản hồi ví dụ
{"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}
Lấy tóm tắt monitor cron
Endpoint:
GET /monitors/cron/:id/summary
Yêu cầu ví dụ
GET /monitors/cron/cron-abc123/summary
Phản hồi ví dụ
{"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}}
Các endpoint ping
Các endpoint này không yêu cầu xác thực. slug của monitor đóng vai trò như một secret.
Bạn có thể ping qua URL gốc của API hoặc qua host cron riêng:
- Thành công:
https://cron.instatus.com/{slug}hoặcGET/POST/HEAD/monitors/cron/{slug} - Thất bại:
https://cron.instatus.com/{slug}/failhoặcGET/POST/HEAD/monitors/cron/{slug}/fail - Bắt đầu:
https://cron.instatus.com/{slug}/starthoặcGET/POST/HEAD/monitors/cron/{slug}/start
Hãy gửi ping thành công mỗi khi job của bạn hoàn tất đúng lịch. Gửi ping bắt đầu trước khi job chạy và ping thành công hoặc thất bại khi job kết thúc để ghi lại thời gian thực thi.
Ví dụ ping thành công
curl https://cron.instatus.com/my-page-x7k2m9n4p1q8w3e5
Phản hồi ví dụ
{"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"}
Nếu slug không hợp lệ, phản hồi sẽ là:
{"message": "Monitor not found"}