Bỏ qua tới nội dung
Mục lục

Điều kiện đạt của check uptime

Mã trạng thái, nội dung chứa, giá trị JSON, header, thời gian phản hồi và chứng chỉ TLS: cách viết, thứ tự đánh giá và lý do báo lỗi.

Bản Markdown
Trong bài này

Check uptime HTTP chỉ đạt khi mọi điều kiện đều đúng. Thêm chúng ở mục Điều kiện đạt khi tạo hoặc sửa check — tối đa 10 điều kiện mỗi check. Không có biểu thức chính quy hay script: mỗi điều kiện là một phép so sánh đơn giản, nên một check có cùng ý nghĩa ở mọi vùng.

Check TCP không có điều kiện: đạt khi mở được kết nối trong thời gian chờ.

Mặc định#

  • Mã trạng thái — khi không có điều kiện mã trạng thái, 2xx là đạt. Khi tắt Đi theo chuyển hướng, 3xx cũng đạt, vì chính lệnh chuyển hướng là câu trả lời.

  • Chứng chỉ TLS hợp lệ — được thêm sẵn cho mọi check mới. Với URL https://, chứng chỉ phải được tin cậy và khớp tên host; chứng chỉ hết hạn, tự ký hoặc sai host làm lượt đó hỏng. Chỉ bỏ điều kiện này nếu bạn thật sự dùng chứng chỉ như vậy. Không ảnh hưởng tới URL http://.

Các điều kiện#

Điều kiệnĐạt khiVí dụ
Mã trạng tháiMã cuối cùng nằm trong danh sách mã hoặc dải (tính cả hai đầu)200-299, 304
Nội dung chứaNội dung có đoạn chữ đó"status":"ok"
Nội dung không chứaNội dung không có đoạn chữ đóMaintenance
Giá trị JSONGiá trị tại đường dẫn JSON có mặt, bằng một giá trị, hoặc đúng kiểu/db/healthy bằng true
HeaderHeader phản hồi có mặt, bằng một giá trị, hoặc chứa một đoạn chữcontent-type chứa json
Thời gian phản hồiTổng thời gian dưới ngưỡng, tính bằng mili giâydưới 2000
Chứng chỉ TLS hợp lệChứng chỉ được tin cậy và khớp tên host—

Chi tiết:

  • Điều kiện nội dung đọc 64 KB đầu của nội dung sau khi giải nén (gzip, deflate, br; tối đa 1 MB sau giải nén). Phần sau đó không được xét. So khớp phân biệt hoa thường, trừ khi bạn chọn không phân biệt hoa thường. Yêu cầu HEAD không có nội dung, nên điều kiện nội dung và JSON cần GET.

  • Giá trị JSON dùng đường dẫn JSON pointer (RFC 6901): /data/items/0/id là id của phần tử đầu tiên; viết ~1 thay cho / và ~0 thay cho ~ trong tên khoá. Bằng so chuỗi đúng như viết, còn mọi giá trị khác so theo dạng chữ JSON — true, 3, null. Kiểu là một trong string, number, boolean, object, array, null. Nội dung không phải JSON hợp lệ làm mọi điều kiện JSON hỏng.

  • Tên header không phân biệt hoa thường; giá trị so đúng như máy chủ gửi.

  • Thời gian phản hồi là tổng DNS, kết nối, TLS, byte đầu và tải về, đo trên máy kiểm. Sau chuyển hướng là thời gian của bước cuối.

  • Đoạn chữ và giá trị dài tối đa 256 ký tự.

Thứ tự và lý do hỏng#

Điều kiện được kiểm theo thứ tự cố định; điều kiện hỏng đầu tiên quyết định lý do hiện ở trang check và trong cảnh báo. Lượt không nhận được câu trả lời thì hỏng sớm hơn, với lý do mạng.

Thứ tựPhần hỏngLý do hiển thị
—Không có câu trả lời: DNS, kết nối, bắt tay TLS hoặc quá thời giankhông phân giải được DNS, không kết nối được, lỗi TLS, quá thời gian chờ
1Mã trạng tháimã trạng thái không như mong đợi
2Chứng chỉ TLS hợp lệlỗi TLS
3Headerkiểm tra header không đạt
4Nội dung chứa / không chứanội dung không khớp
5Giá trị JSONkiểm tra JSON không đạt
6Thời gian phản hồiphản hồi quá chậm

Vài kết quả là không rõ, không bao giờ là hỏng, vì chúng không nói gì về dịch vụ của bạn: chưa chạy — quá nhiều check cùng lúc tới một máy chủ, địa chỉ bị chặn (tên miền nay phân giải ra địa chỉ bị từ chối — hãy sửa đích) và lỗi máy kiểm tra. Xem Belvador quyết định thế nào.

Header của yêu cầu#

Bạn có thể gửi tối đa 10 header, ví dụ x-health-token mà endpoint của bạn cần. Không được đặt authorization, cookie, host, content-length, transfer-encoding, connection, te, upgrade và mọi header proxy-* hay sec-*. Giá trị header là một phần cấu hình check, mọi thành viên workspace đều đọc được — hãy dùng token chỉ dành cho kiểm tra sức khoẻ, không bao giờ dùng thông tin đăng nhập của người dùng. Khi chuyển hướng sang origin khác, header của bạn không được gửi tới đó.

Mọi yêu cầu đều có User-Agent: BelvadorUptime/<version> (+https://belvador.dev/docs/uptime/probes); xem Máy kiểm và IP.

Công thức mẫu#

Mục tiêuĐiều kiện
Endpoint sức khoẻ tự báo trạng tháiMã 200; giá trị JSON /status bằng ok
Trang không được hiện mẫu lỗiMã 200-299; nội dung không chứa Something went wrong
API phải luôn nhanhMã 200; thời gian phản hồi dưới 800
Lệnh chuyển hướng phải giữ nguyênTắt đi theo chuyển hướng; mã 301; header location chứa https://www.example.com/

Thấy chỗ sai hoặc thiếu? Gửi cho chúng tôi: hello@belvador.dev