- vừa được xem lúc

Chỉ với vài click dễ dàng có ngay công cụ theo dõi trạng thái uptime website với Uptime Kuma và Heroku

0 0 28

Người đăng: Dao Thai Son

Theo Viblo Asia

Mở đầu

Trong bài viết trước Sử dụng Prometheus, Blackbox Exporter, Alert Manager và Grafana để theo dõi trạng thái uptime website như updown.io, mình có chia sẻ cách mình theo dõi trạng thái uptime của website thông qua các công cụ Prometheus, Blackbox Exporter, Alert Manager và Grafana, thực tế chúng là những công cụ rất tốt, có nhiều ứng dụng trong việc monitor, các metrics từ các Exporter phong phú. Tuy nhiên, cách cấu hình và triển khai chúng hơi phức tạp, mỗi khi cần bổ sung các website thì ta lại cần chỉnh sử từng file cấu hình. Với người dùng chỉ quan tâm tới trạng thái Uptime, thời gian phản hồi của website, trạng thái SSL,... thì có vẻ bộ công cụ trên giống như mang dao mổ trâu để tỉa hoa vậy 😄

Chính vì thế, mình sẽ chia sẻ cách xây dựng công cụ theo dõi trạng thái Uptime đơn giản hơn, đó là sử dụng 1 OSS có tên là Uptime Kuma image.png

Giới thiệu về Uptime Kuma

Uptime Kuma là một công cụ giám sát mã nguồn mở được viết bằng Nodejs. Nó là một công cụ giám sát độc lập với bảng điều khiển đẹp mắt và hỗ trợ một số phương pháp thông báo. Uptime Kuma giám sát thời gian hoạt động của các máy chủ hoặc máy chủ thông qua các giao thức HTTP, TCP và Ping. Nếu website không phản hồi qua các giao thức này trong khoảng thời gian, Uptime Kuma sẽ gửi tin nhắn qua Webhooks, Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP),...

Các tính năng nổi bật của Uptime Kuma có thể kể tới:

  • Giám sát hoạt động của website thông qua các giao thức HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record / Push / Steam Game Server. Fancy, Reactive, Fast UI/UX,... rất phong phú lựa chọn cho mọi người
  • Thông báo được đa kênh: Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP),...
  • Thời gian giãn cách giữa cách lần thăm dò tối thiểu 20s
  • Giao diện website đa ngôn ngữ
  • Có biểu đồ heartbeat rõ ràng cho từng Monitor

Cài đặt

Để triển khai Uptime Kuma, mình sẽ sử dụng Heroku, một nền tảng đám mây cho phép các lập trình viên xây dựng, triển khai, quản lý và mở rộng ứng dụng (PaaS – Platform as a service).

Nó rất linh hoạt và dễ sử dụng, cung cấp cho một con đường đơn giản nhất để đưa sản phẩm tiếp cận người dùng. Nó giúp các nhà phát triển tập trung vào phát triển sản phẩm mà không cần quan tâm đến việc vận hành máy chủ hay phần cứng…

Bước 1: Clone Uptime Kuma về tài khoản Github

Đầu tiên, bạn truy cập vào Github Repository của Uptime Kumahttps://github.com/louislam/uptime-kuma và thực hiện fork repository đó về tài khoản Github của mình image.png

Bước 2: Triển khai lên Heroku

image.png

image.png

  • Bước 2.3: Điền tên App và chọn khu vực cho máy chủ. Tên app bắt buộc không được trùng với bất kỳ app nào trên Heroku, bạn nên chọn 1 cái tên dễ nhớ. Sau đó chọn Create App image.png

  • Bước 2.4: Sau đó ở giao diện Deploy, các bạn chọn Deploy method là Github và thực hiện Connect to Github, sau bước này tài khoản Heroku sẽ có thể truy cập vào Github và lấy source code từ repository mà chúng ta vừa fork ở trên

image.png

  • Bước 2.5: Sau khi connect thành công với Github Repository , bạn cuộn tới Manual deploy, Choose a branch to deploy , bấm Deploy Branch và chờ kết quả thôi

image.png

Sau khi Heroku deploy thành công, chúng ta bấm View để xem website monitor đã được triển khai thành công. Demo

Sử dụng Uptime Kuma

Lần đầu tiên truy cập vào ứng dụng chúng ta cần cấu hình tài khoản quản trị, bạn có thể tuỳ chọn ngôn ngữ Tiếng Việt, Tiếng Anh,... image.png

Giao diện đầu tiên sẽ trông như này image.png

Để cấu hình cho việc theo dõi Uptime của từng website, ta chọn vào Add New Monitor rồi điền các tham số của website: image.png

Trong đó:

  • Monitor Type : Là giao thức mà Uptime Kuma sẽ thăm dò tới website
  • Friendly Name: Tên của monitor
  • URL: Là đường dẫn tới website
  • Heartbeat Interal: Khoảng thời gian giãn cách giữa các lần thăm dò, tối thiểu 20s
  • Accepted Status Codes: Là status code mà bạn chấp nhận là website đang ở trạng thái Uptime

Ngoài ra để cấu hình nhận cảnh báo khi website bị downtime bạn chọn vào Setup Notification, 1 dialog sẽ hiển thị ra để bạn điền các thông tin cho cảnh báo: image.png

Cấu hình Notification:

Bạn chọn Test để xác minh cấu hình notification chính xác, trên channel sẽ nhận được 1 message như này image.png

Khi website có downtime, Uptime Kuma sẽ gửi cảnh báo tới channel image.png

Giao diện dashboard của Uptime Kuma khá là rõ ràng và đầy đủ những thông tin cần thiết, đơn giản nó nhắm tới những thông tin mà user quan tâm như trạng thái Uptime, thời gian phản hồi, trạng thái của SSL. image.png

Ngoài ra Uptime Kuma còn hỗ trợ bạn publish các status page ví dụ https://uptime-kuma-2.herokuapp.com/status/viblo , chúng ta dễ dàng chia sẻ trạng thái Uptime của các website tới cho các thành viên khác trong team. image.png

Tài liệu tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 421

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1k

- vừa được xem lúc

So sánh Interface và Abstract trong lập trình hướng đối tượng.

Tổng quan. Interface và Abstract class là 2 khái niệm cơ bản trong lập trình OOP.

0 0 48

- vừa được xem lúc

CURL và cách sử dụng trong PHP

Giới Thiệu. CURL là bộ thư viện được sử dụng để giúp thực hiện việc chuyển dữ liệu thông qua nhiều giao thức khác nhau (như HTTP, FPT...). Với giao thức HTTP, cURL hỗ trợ việc gửi dữ liệu sử dụng tất cả các phương thức hiện có như GET, POST, PUT, DELETE... cURL cũng hỗ trợ việc chuyền dữ liệu sử dụn

0 0 77

- vừa được xem lúc

Thêm dòng dữ liệu mới (MySQL) trong Laravel

Chào các bạn, Laravel hiện đang là hot trend trong "thế giới PHP". 1. Cấu hình cơ bản ban đầu. .

0 0 38