Chụp ảnh toàn trang của bất kỳ URL nào dưới dạng PNG, JPG, WebP hoặc PDF. Chụp hàng loạt, giám sát theo lịch, so sánh trực quan và giả lập thiết bị.
Thông báo không đến từ dịch vụ giám sát. Nó không đến từ cảnh báo tự động hoặc webhook kích hoạt vào Slack. Nó đến từ hệ thống giám sát nguyên thủy nhất có thể tưởng tượng: mở trình duyệt, gõ URL và nhìn vào một trang trắng. Hôm đó là chiều thứ ba. Trang web đã bị sập kể từ khoảng chín giờ sáng, và bây giờ đã quá hai giờ chiều. Năm giờ im lặng hoàn toàn từ một ứng dụng web thường phục vụ hàng nghìn yêu cầu mỗi ngày. Năm giờ trong đó mọi khách truy cập đều thấy trang lỗi, mọi lệnh gọi API không trả về gì, và mọi tác vụ theo lịch đã không thành công một cách im lặng ở chế độ nền. Máy chủ không gặp sự cố một cách kịch tính. Không có kernel panic, không có lỗi đĩa, không có vectơ tấn công nào để lại bằng chứng pháp tục. VPS Contabo đã đơn giản là ngừng phản hồi các yêu cầu HTTP, nằm yên với địa chỉ IP hợp lệ và nhịp tim trên lớp mạng, nhưng từ chối phục vụ bất kỳ lưu lượng web nào.
Phát hiện xảy ra vì một tác vụ hoàn toàn không liên quan. Có nhu cầu kiểm tra bố cục trang cụ thể để thay đổi thiết kế, vì vậy trình duyệt đã truy cập URL và không trả về gì. Bản năng đầu tiên là đổ lỗi cho mạng cục bộ. Làm mới trang. Vẫn không có gì. Thử một trình duyệt khác. Vẫn không có gì. Mở terminal và ping máy chủ. Gói tin trả về bình thường. Kết nối SSH? Hoạt động tốt. Trạng thái Apache? Chết. Quá trình máy chủ web đã gặp sự cố vào một lúc nào đó vào buổi sáng sớm và không bao giờ khởi động lại, vì không có người giám sát quá trình được cấu hình để xử lý chế độ lỗi đó. Sửa chữa mất ba mươi giây. Nhận ra rằng điều này có thể xảy ra lại, và có thể đã xảy ra trước đó mà không ai nhận thấy, mất thời gian dài hơn để tiêu hóa.
Mọi nhà phát triển đã chạy các dịch vụ sản xuất trên VPS đều có một phiên bản của câu chuyện này. Có thể nó không phải là năm giờ. Có thể là hai, tám hoặc cả một cuối tuần. Các chi tiết khác nhau nhưng mô hình là giống hệt nhau. Máy chủ gặp sự cố, không ai nhận thấy, và phát hiện là tình cờ. Vấn đề gốc rễ không phải là độ tin cậy của máy chủ. Máy chủ gặp sự cố, quá trình gặp sự cố, đĩa đầy, rò rỉ bộ nhớ tích tụ. Đó là bản chất của việc chạy phần mềm trên phần cứng vật lý. Vấn đề gốc rễ là sự vắng mặt của giám sát, và cụ thể hơn, khoảng cách giữa biết rằng máy chủ đang trực tuyến và biết rằng ứng dụng thực sự hoạt động.
Các công cụ giám sát thời gian hoạt động truyền thống làm tốt một việc. Chúng gửi yêu cầu HTTP đến URL theo các khoảng thời gian thường xuyên và kiểm tra xem mã phản hồi có phải là 200 không. Nếu mã là bất kỳ cái gì khác hoặc nếu yêu cầu hết thời gian chờ, cảnh báo sẽ kích hoạt. Điều này bắt được những lỗi thảm khốc nhất: máy chủ hoàn toàn không thể truy cập, tên miền đã hết hạn, chứng chỉ SSL không hợp lệ. Nhưng nó bỏ lỡ một loại vấn đề khổng lồ mà có lẽ phổ biến hơn và gây hại hơn.
Hãy xem xét một kịch bản trong đó máy chủ trả về mã trạng thái 200, nhưng trang bị hỏng. Kết nối cơ sở dữ liệu không thành công, vì vậy khu vực nội dung hiển thị thông báo lỗi thay vì danh sách sản phẩm dự kiến. Tệp CSS không thể tải được, vì vậy trang hiển thị dưới dạng HTML không được định dạng. Lỗi JavaScript ngăn ứng dụng chính khởi tạo, để người dùng nhìn vào bộ quay của tải không bao giờ giải quyết. Tiện ích bên thứ ba tiêm lớp phủ che phủ toàn bộ nội dung trang. Trong tất cả các trường hợp này, công cụ giám sát thời gian hoạt động báo cáo mọi thứ như lành mạnh vì nó nhận được phản hồi 200. Máy chủ đang hoạt động. Trang bị hỏng. Không ai biết.
Khoảng cách này giữa "máy chủ phản hồi" và "trang hoạt động" là nơi giám sát ảnh chụp màn hình trở nên cần thiết. Ảnh chụp màn hình được lên lịch sẽ nắm bắt những gì trang thực sự trông như vậy ở các khoảng thời gian thường xuyên. Nếu trang đột nhiên hiển thị thông báo lỗi, bố cục bị hỏng hoặc màn hình trắng, ảnh chụp màn hình sẽ làm cho điều đó trở nên rõ ràng ngay lập tức. Kết hợp ảnh chụp màn hình theo lịch với so sánh diff pixel, hệ thống có thể tự động phát hiện khi một trang đã thay đổi theo những cách không mong đợi. Một vài pixel dịch chuyển vì cập nhật nội dung là bình thường. Toàn bộ trang biến trắng hoặc hiển thị theo dõi ngăn xếp lỗi không phải vậy, và thuật toán diff có thể phân biệt giữa hai cách này với ngưỡng độ nhạy có thể cấu hình.
Sau khoảng thời gian ngừng hoạt động năm giờ, điều đầu tiên được thiết lập là công cụ giám sát thời gian hoạt động cho mọi dịch vụ quan trọng. Nhưng phần bổ sung thú vị hơn là giám sát ảnh chụp màn hình theo lịch nắm bắt trạng thái hình ảnh thực tế của các trang chính mỗi mười lăm phút. Công cụ giám sát thời gian hoạt động bắt được những khoảng không rõ ràng. Công cụ giám sát ảnh chụp màn hình bắt được mọi thứ khác: những lỗi tinh tế trả về mã trạng thái 200 trong khi hiển thị trang bị hỏng, các tập lệnh bên thứ ba tiêm nội dung không mong đợi, lỗi cơ sở dữ liệu chỉ xuất hiện dưới các điều kiện cụ thể.
Kiến trúc của hệ thống giám sát thích hợp về mặt lý thuyết không phức tạp. Bộ lập lịch kích hoạt kiểm tra ở các khoảng thời gian được xác định. Kiểm tra sẽ nắm bắt trạng thái hiện tại của mục tiêu. Trạng thái được so sánh với đường cơ sở dự kiến. Nếu so sánh vượt quá ngưỡng, cảnh báo sẽ kích hoạt. Thách thức không phải trong kiến trúc mà trong độ tin cậy của từng thành phần. Hệ thống giám sát tự nó gặp sự cố không tốt hơn không có giám sát cơ bản, vì nó tạo ra một cảm giác bảo mật giả tạo.
Đường ống giám sát ảnh chụp màn hình hoạt động theo các giai đoạn. Bộ lập lịch gửi công việc chụp ở khoảng thời gian được cấu hình, thường là năm, mười hoặc mười lăm phút tùy thuộc vào tính quan trọng của trang. Công việc chụp sẽ chạy một phiên bản Chromium không tiêu đề nắm bắt trang, chờ hiển thị hoàn thành và lưu ảnh chụp màn hình kết quả. Ảnh chụp màn hình mới sau đó được so sánh với ảnh chụp trước đó bằng cách sử dụng thuật toán diff pixel xác định các vùng đã thay đổi và tính toán tổng phần trăm thay đổi. Nếu thay đổi vượt quá ngưỡng được cấu hình, thông báo sẽ được gửi đi thông qua các kênh được cấu hình: email, webhook, Slack hoặc bất kỳ điểm cuối tùy chỉnh nào.
So sánh diff là nơi mọi thứ trở nên thực sự thú vị từ perspektif kỹ thuật. So sánh pixel ngây thơ sẽ gắn cờ mọi ảnh chụp màn hình là đã thay đổi vì nội dung động như dấu thời gian, quảng cáo hoặc các phần tử hoạt hình. Công cụ diff tính toán điều này bằng cách hỗ trợ các vùng loại trừ, các vùng hình chữ nhật của trang được che phủ trước so sánh. Dấu thời gian trong tiêu đề, quảng cáo xoay vòng, tiện ích trò chuyện trực tiếp ở góc: tất cả những điều này có thể bị loại trừ để chỉ những thay đổi có ý nghĩa kích hoạt cảnh báo. Những gì còn lại sau khi loại trừ là khu vực nội dung ổn định, và bất kỳ thay đổi nào ở đó hầu như chắc chắn đáng điều tra.
Khoảng thời gian ngừng hoạt động năm giờ sẽ được bắt trong vòng vài phút theo hệ thống này. Ảnh chụp màn hình được lên lịch đầu tiên sau khi máy chủ gặp sự cố sẽ trả về hình ảnh trắng hoặc trang lỗi, cả hai sẽ khác biệt rất lớn so với đường cơ sở. Phần trăm diff sẽ gần 100%, cao hơn nhiều so với bất kỳ ngưỡng hợp lý nào, và cảnh báo sẽ kích hoạt ngay lập tức. Năm giờ ngừng hoạt động sẽ là năm phút, và năm phút đó sẽ là khoảng thời gian giám sát chính nó, không phải là thời gian để một con người tình cờ phát hiện vấn đề.
Chi phí ngay lập tức của năm giờ ngừng hoạt động dễ dàng tính toán khi các con số có sẵn. Đối với một trang web xử lý hàng nghìn yêu cầu hàng ngày, năm giờ đại diện cho một phần đáng kể của lưu lượng hàng ngày. Mọi yêu cầu trả về lỗi là người dùng không nhận được những gì họ đến để có được. Một số người dùng này là những khách truy cập mới sẽ không bao giờ quay lại. Một số là những người dùng hiện tại sẽ mất một lượng nhỏ niềm tin. Một số là những người tiêu dùng API có ứng dụng của riêng họ không thành công vì phụ thuộc. Tác động doanh thu trực tiếp phụ thuộc vào bản chất của trang web, nhưng ngay cả đối với ứng dụng SaaS nhỏ, năm giờ ngừng hoạt động trong giờ làm việc có thể dễ dàng đại diện cho hàng trăm đô la trong các chuyển đổi mất.
Chi phí ẩn khó định lượng nhưng có lẽ lớn hơn. Các công cụ tìm kiếm đã thu thập thông tin trang web trong những năm giờ đó nhận được các phản hồi lỗi, và mặc dù khoảng thời gian ngừng hoạt động ngắn thường được dung thứ bởi cơ sở hạ tầng thu thập thông tin của Google, ngừng hoạt động kéo dài có thể dẫn đến hủy chỉ mục tạm thời của các trang bị ảnh hưởng. Các chiến dịch email đang chạy trong khoảng thời gian ngừng hoạt động lái lưu lượng đến điểm cuối chết, lãng phí chi phí chiến dịch toàn bộ. Các tác vụ được lên lịch tùy thuộc vào ứng dụng web, những thứ như phân phối webhook, tạo báo cáo và xử lý hàng loạt, tất cả đều không thành công một cách im lặng và cần được xác định và chạy lại theo cách thủ công sau khi máy chủ được khôi phục.
Chi phí độc hại nhất là chi phí danh tiếng. Những người dùng gặp phải trang web sập không thường gửi email nói "trang web của bạn không hoạt động." Họ đơn giản rời đi và có thể hoặc không quay lại. Không có cơ chế phản hồi cho ngừng hoạt động vì cơ chế phản hồi chính nó không hoạt động. Cửa sổ năm giờ đủ dài để một số người dùng hầu hết chắc chắn đã thử trang web, phát hiện nó bị hỏng và chuyển sang đối thủ cạnh tranh mà không bao giờ tạo ra một điểm dữ liệu duy nhất sẽ chỉ ra những gì đã xảy ra. Họ đơn giản là đi, và không có cách nào để biết bao nhiêu hoặc họ là ai.
Bài học từ chiều thứ ba đó không phải là máy chủ gặp sự cố. Điều đó đã được biết rồi. Bài học là mọi phút giữa một lỗi và phát hiện của nó là một phút thiệt hại tích tụ, và cách duy nhất để giảm thiểu cửa sổ đó là tự động hóa phát hiện. Giám sát con người không phải là quy mô. Kiểm tra trang web theo cách thủ công một lần mỗi ngày có nghĩa là thời gian phát hiện trung bình cho ngừng hoạt động là mười hai giờ. Kiểm tra nó mỗi giờ một lần mang đó xuống ba mươi phút, nhưng không có con người nào có thể thực tế kiểm tra mỗi trang của mỗi ứng dụng một lần mỗi giờ quanh đồng hồ.
Sự kết hợp của giám sát thời gian hoạt động và giám sát ảnh chụp màn hình hình ảnh bao gồm cả hai lớp của vấn đề. Công cụ giám sát thời gian hoạt động bắt máy chủ đi hoàn toàn ngoại tuyến. Công cụ giám sát ảnh chụp màn hình bắt ứng dụng gãy trong khi máy chủ ở lại. Với nhau, họ giảm cửa sổ phát hiện từ "bất cứ khi nào ai đó tình cờ nhận thấy" đến khoảng thời gian giám sát chính nó, có thể ngắn như một phút cho các dịch vụ quan trọng. Cảnh báo kích hoạt, thông báo tới, và sửa chữa bắt đầu trong vòng vài phút thay vì giờ.
Máy chủ đã gặp sự cố hai lần kể từ sự cố ban đầu. Cả hai lần, cảnh báo tới trong vòng ba phút. Cả hai lần, bản sửa chữa được áp dụng trước khi bất kỳ lưu lượng đáng kể nào bị mất. Cơ sở hạ tầng giám sát trả cho chính nó với sự cố đầu tiên nó bắt, và mọi thứ sau đó đều là lợi ích tinh khiết. Thời đại phát hiện ngừng hoạt động một cách ngẫu nhiên đã kết thúc, và nhìn lại, câu hỏi thực sự duy nhất là tại sao phải mất một ngừng hoạt động năm giờ mới làm cho khoản đầu tư trở nên rõ ràng.
Giám sát thời gian hoạt động kiểm tra xem máy chủ có trả về mã phản hồi HTTP hợp lệ, thông thường là 200 hay không. Giám sát ảnh chụp màn hình nắm bắt giao diện hình ảnh thực tế của trang và so sánh nó với đường cơ sở. Máy chủ có thể trả về mã trạng thái 200 trong khi hiển thị trang bị hỏng, mà giám sát thời gian hoạt động sẽ bỏ lỡ nhưng giám sát ảnh chụp màn hình sẽ bắt được.
Khoảng thời gian phụ thuộc vào tính quan trọng của trang. Các trang quan trọng nhiệm vụ như quy trình thanh toán và màn hình đăng nhập được hưởng lợi từ các khoảng thời gian từ một đến năm phút. Trang nội dung và trang web tiếp thị thường có thể sử dụng các khoảng thời gian từ mười lăm đến ba mươi phút. Sự đánh đổi là giữa tốc độ phát hiện và chi phí tính toán của các chụp thường xuyên.
Có. Giám sát ảnh chụp màn hình phát hiện bất kỳ thay đổi hình ảnh nào trên trang, bao gồm bố cục bị hỏng, hình ảnh bị thiếu, thông báo lỗi được hiển thị trong trang hoàn toàn chức năng, tiêm tập lệnh bên thứ ba, và các lỗi tải CSS. Những lỗi một phần này thường là vô hình đối với các công cụ giám sát thời gian hoạt động truyền thống.
So sánh diff pixel so sánh hai ảnh chụp màn hình ở cấp pixel để xác định các vùng đã thay đổi. Thuật toán tính toán tổng phần trăm pixel đã thay đổi và có thể làm nổi bật các khu vực cụ thể nơi tồn tại sự khác biệt. Ngưỡng độ nhạy có thể cấu hình và vùng loại trừ ngăn ngừa cảnh báo sai từ nội dung động như quảng cáo hoặc dấu thời gian.
Tốc độ cảnh báo phụ thuộc vào khoảng thời gian giám sát. Với khoảng thời gian một phút, thời gian phát hiện tối đa là một phút cộng với thời gian chụp và so sánh ảnh chụp màn hình, thường thêm hai đến năm giây. Thông báo có thể được gửi qua email, webhook Slack hoặc các điểm cuối HTTP tùy chỉnh trong vòng vài giây sau khi phát hiện.
Có. Các ảnh chụp màn hình được chụp bằng cách sử dụng một công cụ trình duyệt Chromium thực sự hoàn toàn thực hiện JavaScript, hiển thị nội dung động và chờ trang đạt đến trạng thái ổn định trước khi chụp. Điều này có nghĩa là các ứng dụng một trang được xây dựng bằng React, Vue, Angular hoặc các khung công tác tương tự được chụp chính xác.