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_1N. Virginia
CA_CENTRAL_1Canada (Montreal)
EU_CENTRAL_1Frankfurt
AP_NORTHEAST_1Tokyo

Loại cảnh báo monitor

Giá trịMô tả
INCIDENTCảnh báo sự cố
EMAILCảnh báo qua email
SMSCảnh báo qua SMS
SLACKCảnh báo qua Slack
DISCORDCảnh báo qua Discord
MICROSOFT_TEAMSCảnh báo qua Microsoft Teams
PHONE_CALLCảnh báo qua cuộc gọi điện thoại
WEBHOOKCảnh báo qua webhook
GOOGLE_CHATCảnh báo qua Google Chat
WHATSAPPCảnh báo qua WhatsApp

Trạng thái monitor

Giá trịMô tả
UPMonitor đang chạy bình thường
DOWNMonitor đã gặp sự cố
DEGRADEDMonitor đang gặp vấn đề
UNKNOWNKhô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ểuGiá trị mặc địnhMô tả
pagenumber1Số trang cần lấy.
limitnumber100Số monitor mỗi trang.
searchstringnullTừ khóa tìm kiếm để lọc kết quả.
statusenumnullBộ 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ểuGiá trị mặc địnhMô tả
limitnumber100Số mục mỗi trang. Không được vượt quá 1000.
pagenumber1Số trang cần lấy.
monitorIdstring-ID của monitor.
locationstringnullVị trí của monitor.
createdAtstring | object | numbernullNgày tạo. Có thể là chuỗi, số, hoặc một object có các trường gtelte.
isSuccessfulbooleannullLần kiểm tra có thành công hay không.
isSSLCheckbooleannullLần kiểm tra có phải là kiểm tra SSL hay không.
httpStatusCodestringnullMã trạng thái HTTP của phản hồi.
status('UP', 'DOWN', 'UNKNOWN', 'DEGRADED')nullTrạng thái của monitor.
dnsTimestring | number | objectnullThời gian phân giải DNS.
tcpTimestring | number | objectnullThời gian kết nối TCP.
tlsTimestring | number | objectnullThời gian bắt tay TLS.
firstByteTimestring | number | objectnullThời gian nhận được byte đầu tiên.
downloadTimestring | number | objectnullThời gian tải xuống.
responseTimestring | number | objectnullTổng thời gian phản hồi.
performanceTimestring | number | objectnullThời gian hiệu suất.
accessabilityScorestring | number | objectnullĐiểm khả năng tiếp cận.
seoScorestring | number | objectnullĐiểm SEO.
bestPracticesScorestring | number | objectnullĐiểm thực hành tốt nhất.
successfulAssertionsstring | number | objectnullSố điều kiện được thỏa mãn.
sortstringtheo thời gianTrườ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ểuGiá trị mặc địnhMô 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ê.
retrybooleanfalseCho biết thao tác có nên được thử lại hay không. Tùy chọn.
monitorLogIdstringnullĐị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ểuGiá trị mặc địnhMô tả
limitnumber100Số mục mỗi trang.
pagenumber1Số 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ểuGiá trị mặc địnhMô 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ê.
retrybooleanfalseCho biết thao tác có nên được thử lại hay không. Tùy chọn.
monitorLogIdstringnullĐị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ả
UPMonitor đang chạy bình thường
DOWNMonitor đã gặp sự cố
DEGRADEDMonitor đang gặp vấn đề
UNKNOWNKhông xác định được trạng thái monitor

Tình trạng monitor cron

Giá trịMô tả
ACTIVEMonitor đang được kiểm tra
PAUSEDCác lần kiểm tra monitor đang tạm dừng
MUTEDMonitor đã được tắt tiếng (không thông báo)

Trạng thái log của monitor cron

Giá trịMô tả
SUCCESSJob hoàn tất thành công
FAILUREJob báo lỗi rõ ràng
MISSEDJob không ping trong khoảng thời gian mong đợi
LATEJob ping sau chu kỳ nhưng vẫn trong thời gian ân hạn
STARTEDJob báo rằng nó đã bắt đầu (đo thời gian chạy)

Chu kỳ và thời gian ân hạn

Cả periodgrace đề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ểuGiá trị mặc địnhMô tả
limitnumber100Số monitor cron mỗi trang. Tối đa là 100.
pagenumber1Số trang.
searchstringnullTừ khóa tìm kiếm để lọc kết quả theo tên.
statusenumnullBộ 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ểuGiá trị mặc địnhMô tả
limitnumber100Số log mỗi trang. Tối đa là 127.
pagenumber1Số trang. Tối đa là 1000.
startDatestring1 năm trướcNgày bắt đầu theo ISO 8601 cho khoảng log.
endDatestringbây giờNgày kết thúc theo ISO 8601 cho khoảng log.
importanceenumnullLọ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ặc GET / POST / HEAD /monitors/cron/{slug}
  • Thất bại: https://cron.instatus.com/{slug}/fail hoặc GET / POST / HEAD /monitors/cron/{slug}/fail
  • Bắt đầu: https://cron.instatus.com/{slug}/start hoặc GET / 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"
}