FreshPing.io: dịch vụ theo dõi uptime đáng sử dụng

Sử dụng các công cụ theo dõi uptime là khá quan trọng khi hiện tại mình đang sử dụng rất nhiều dịch vụ, từ UptimeRobot, nixStat, NodeQuery… Hôm nay mình vừa tìm ra một dịch vụ mới rất rất vừa ý mà lại miễn phí, đó là FreshPing. Còn tại sao thì tiếp tục theo dõi bài viết các bạn nhé 😀

Đối với mình, các công cụ uptime ngoài việc theo dõi còn phải lưu lại lịch sử, ít nhất là 1 tháng để so sánh đối chiếu. Ngoài ra việc có thêm trang status page còn giúp ích rất nhiều cho mình trong việc xem nhanh báo cáo đầu ngày và show bằng chứng cho bạn đọc đây nếu cần hehe.

Tại sao lại là FreshPing?

Trước tiên hãy nói về những dịch vụ mà mình đang dùng để theo dõi uptime của website:

  • UptimeRobot sử dụng rất tốt và ổn định, có thể thông báo qua Telegram, nhưng phần xem Lịch sử thì lại không trực quan, giao diện có phần cổ lỗ sỉ.
  • nixStat mình chỉ dùng chức năng thông báo website down, đã rất lâu rồi mình không vào cho đến khi viết bài này. Tuy vậy thì phần Lịch sử lại khá trực quan và có status page.
  • NodeQuery (sẽ được chia sẻ trong thời gian sớm) là một công cụ thuần kiểm tra máy chủ, không phải để theo dõi website. Mình không thể biết website còn sống hay không, response time bao nhiêu giây, status code là gì,…

FreshPing.io lại là tổng hợp tất cả những gì mình cần vào trong một dịch vụ:

  • Theo dõi website:
  • Status page:
  • Custom domain: Có luôn
  • Giao diện: Rất hiện đại
  • Miễn phí

Họ còn rất gấu khi có luôn một trang so sánh dịch vụ với Pingdom, nhìn vào là yêu ngay. Đó là lí do mà mình viết bài giới thiệu ngay và luôn sau khoảng vài tiếng thử sử dụng dịch vụ này và sẽ thật sự gắn bó nếu không có gì thay đổi.

Hướng dẫn sử dụng FreshPing.io

Bài viết này mình hướng dẫn các bạn cách tạo tài khoản và thêm monitor cho website, máy chủ và đặc biệt là các dịch vụ con như MySQL và Redis mà chúng ta rất thường hay bỏ qua. Đơn giản thôi mà.

Tạo tài khoản FreshPing.io

Phần tạo tài khoản có phần đơn giản, điền URL bạn cần theo dõi và email cá nhân vào trang này, vậy là xong. Năm giây sau bạn sẽ được chuyển tới trang quản lý và sử dụng được ngay luôn.

Trong cùng thời gian đó bạn sẽ nhận được một email yêu cầu kích hoạt tài khoản của FreshPing. Khi nhấp vào trang kích hoạt sẽ hiện ra trang điền thông tin, mình thấy yêu cầu điền khá nhiều thông tin nhưng không quan trọng, bạn cứ nhập theo sở thích là được. Tuy nhiên hãy nhớ mật khẩu đã điền nhé, để đăng nhập quản lý FreshPing sau này.

Trang quản lý của dịch vụ có 4 menu chính: Dashboards, Reports, StatusSettings. Sau khi bạn đã cài đặt xong hết thì chỉ cần quan tâm tới 2 menu đầu tiên thôi.

Trong phần Dashboards hoặc Reporst, bạn sẽ thấy một monitor First check là URL mà bạn nhập vào lúc đăng ký tài khoản. Bạn có thể xóa nếu thích hoặc chỉnh sửa lại tên cho dễ nhớ hơn bằng menu Ba dấu chấm > Edit.

Thêm monitor vào FreshPing

Bạn có thể thêm Check ở bất kì đâu bằng menu Add Check ở ngay đầu website. Mỗi tài khoản miễn phí được thêm tận 50 check. Theo mình thấy đây là con số rất dư thừa cho nhu cầu cá nhân.

Chúng ta sẽ có 6 check type tất cả, phù hợp với nhu cầu đại đa số mọi người.

  • HTTP/HTTPS dùng để theo dõi website, bạn chỉ việc điền Check URL là địa chỉ website bạn muốn monitor là đủ.
  • Web Socket dùng để theo dõi giao thức ws:// hay wss://. Nếu bạn đang sử dụng các dịch vụ này thì FreshPing cũng hỗ trợ luôn.
  • ICMP Ping dùng ping đến địa chỉ IP hoặc tên miền. Mình dùng để theo dõi uptime của VPS phía backend.
  • TCP / UDP dùng để theo dõi các ứng dụng chạy qua giao thức này. Bạn có thể dùng để theo dõi MySQL ở cổng 3306, RDP, SSH,…
  • DNS để kiểm tra thời gian phân giải IP của tên miền.

Phần Who to alert?, hãy nhấn vào mũi tên và chọn địa chỉ email mà bạn muốn được nhận thông báo khi trạng thái Check thay đổi.

Phần Check Interval, hãy thoải mái lựa chọn 1 phút nếu không ảnh hưởng đến server của bạn. Đây là dịch vụ hiếm hoi cho phép theo dõi website mỗi phút.

Phần Advance settings có một số tùy chỉnh vui vẻ mà bạn nên dùng: Apdex Response mình giải thích dài hơn bên dưới, bạn chịu khó kéo xuống đọc nhé. Với Check from location, đây là tùy chọn tốt để bạn chỉ theo dõi ở một số location nhất định.

Ví dụ mình đang phục vụ khách hàng ở châu Á và quan tâm performance tại đây, mình sẽ chọn Asia ở mục này để biết chính xác. Nếu chọn Any location, mình chưa rõ họ sẽ random location hay kiểm tra bằng tất cả location mỗi phút. Mình đã email và đợi họ trả lời.

Nghe phức tạp vậy thôi, nhưng khi thêm xong tất cả thì chúng ta đã gần như hoàn thành rồi nếu bạn không cần tạo Status page. Lala, all services is up, tất cả dịch vụ của mình đều hoạt động tốt.

Trang dashboard sẽ tự động reload khi có thông tin mới. Rất thích hợp để treo tab và theo dõi website nếu bạn thích.

Tóm lại, setting chuẩn nhất cho người Việt Nam sử dụng đó là khoảng thời gian kiểm tra mỗi một phút một lần, location ở Singapore và Apdex khoảng 1000ms là rất đẹp rồi. Không cần thay đổi gì nữa.

Apdex là gì và mình có cần quan tâm tới?

Apdex là chỉ số thường thấy nhằm đo mức độ hài lòng của người dùng tính bằng thời gian phản hồi của website/dịch vụ. Apdex không phải là chỉ số riêng của FreshPing mà gần như toàn bộ các dịch vụ đều có để đo lường mức độ hài lòng của khách hàng đối với dịch vụ tính theo thời gian phải hồi của dịch vụ đó.

FreshPing giải thích chỉ số Apdex như sau:

  • Thời gian phản hồi < T: hài lòng
  • Thời gian phản hồi = T: chấp nhận được
  • Thời gian phản hồi > 4T: rất bực bội

Còn đây là công thức để tính chỉ số Apdex:

Apdex = ((số request hài lòng) + (số request chấp nhận được/2)) / Tổng số lượng request

Đây là kinh nghiệm để quy định trị số Apdex cho dịch vụ của mình: Mình thấy rằng thời gian phản hồi của website khi cài đặt FreshPing trong 1 giờ qua là 200ms. Vậy mình sẽ gán trị số Apdex bằng 400ms hoặc 300ms.

Nếu có request nào đó bằng hoặc lớn 400ms, đó là lúc mình phải xem lại xem service của mình gặp vấn đề gì không, có thay đổi gì làm chỉ số Apdex giảm như vậy không. Tính toán cho phức tạp vậy thôi, nếu thời gian phản hồi của bạn nhỏ hơn thời gian bạn cài đặt, tức là rất tốt.

Đây là kinh nghiệm cá nhân và cũng không có công thức nào để nhẩm ra, nhưng chắc các bạn đã hiểu ý mình khi chúng ta phải gán một giá trị nào đó đúng với hiện tại, để khi service có vấn đề, chúng ta sẽ biết và điều chỉnh cho phù hợp. Nếu muốn chỉ số Apdex đẹp, bạn có thể gán cho 2000ms (2 giây) hoặc cao hơn nữa tùy thích.

Monitor các service của website

Trước khi đọc bài này, mình giới thiệu việc mình đang theo dõi khoảng 5 service tại đây, bao gồm MySQL, Redis, Nginx,… https://uptime.datuan.dev/

Một điều mình thường thấy là mọi người chỉ theo dõi website, trong khi bỏ ngõ các service con như (MySQL, Redis, Memcache,…). Một khi các monitor báo Website down do một service nào đó làm sập cả hệ thống, chúng ta mới gấp rút tìm nguyên nhân.

Với FreshPing, chúng ta hãy thay đổi ngay từ bây giờ để có cái nhìn chuẩn xác hơn về hệ thống khi có vấn đề xảy ra.

Trước khi thực hiện hướng dẫn này, bạn bắt buộc phải sử dụng UFW hoặc iptables hoặc firewall rule để giới hạn các IP có thể kết nối tới service của mình, bằng không sẽ đối mặt với các nguy cơ bị tấn công rất rất lớn.

Thêm rule và bật UFW

Chúng ta phải thêm các rule trước khi bật UFW lên, như vậy sẽ tốt và an toàn hơn, tránh việc bị ngắt kết nối tới máy chủ.

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Các rule trên cho phép tất cả các IP được kết nối vào các cổng ssh (22), http (80) và https (443) của bạn, nếu dùng cổng khác bạn có thể tùy chỉnh lại. Một số bạn sử dụng EasyEngine còn sử dụng cổng 22222 nên cũng phải thêm vào:

sudo ufw allow 22222

Tiếp tục thêm cho phép FreshPing kết nối tới máy chủ của bạn, cho phép giám sát các dịch vụ. Mình chỉ theo dõi từ location Singapore, nếu bạn sử dụng Any location thì nên thêm tất cả IP của FreshPing vào:

sudo ufw allow from 13.251.205.206 to any port 6379
sudo ufw allow from 13.251.205.206 to any port 3306

Tiếp tục gõ sudo ufw status để kiểm tra lại. Những rule nào không có trong danh sách này sẽ bị chặn lại.

Status: inactive

To Action From
-- ------ ----
80 ALLOW Anywhere
443 ALLOW Anywhere
22222 ALLOW Anywhere
3306 ALLOW 13.251.205.206
6379 ALLOW 13.251.205.206
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
22222 (v6) ALLOW Anywhere (v6)

Khi đã chắc chắn chúng ta đã thêm đủ rule hoặc ít nhất là ssh, chúng ta có thể bật UFW rồi. Gõ sudo ufw enable và kiểm tra lại status của UFW:

$ sudo ufw status
Status: active
...

Cho phép remote access MySQL và Redis

Bước này rất đơn giản và cũng tương tự với bài viết hướng dẫn sử dụng socket để tăng tốc website của mình. MySQL và Redis có thể chạy ở hai chế độ TCP/IP và socket nên bạn cũng không cần thay đổi hay sợ ảnh hưởng đến các service nếu có.

Có downtime! Những thay đổi này sẽ khiến website bạn down trong khoảng 30s – 1 phút do cần khởi động lại MySQL và Redis.

Đầu tiên là với MySQL. Để bật remote access cho MySQL, hãy mở tập tin /etc/mysql/my.cnf, tìm và sửa dòng bind-address từ 127.0.0.1 thành:

bind-address = 0.0.0.0

Sau đó khởi động lại MySQL bằng lệnh service mysql restart là xong. Tí nữa chúng ta sẽ kiểm tra và thêm vào FreshPing.

Tiếp theo là Redis. Để bật remote access cho Redis, hãy mở tập tin /etc/redis/redis.conf, tìm và sửa dòng bind 127.0.0.1 thành:

bind 0.0.0.0

Sau đó khởi động lại Redis bằng lệnh service redis-server restart là xong.

Để kiểm tra hai service đã cho phép remote access chưa, hãy gõ lệnh bên dưới, nếu có LISTEN là thành công rồi.

root@server:~# netstat -ltpun | grep '3306\|6379'
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 24656/mysqld
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 4515/redis-server 0

Tiếp theo, hãy chắc chắn rằng chỉ có FreshPing mới kết nối được tới các service này, còn lại thì phải chặn hết, hãy sử dụng công cụ Open Port Check Tool.

Nhập IP máy chủ của bạn, port lần lượt là 3306 và 6379 và nhấn Check. Nếu nhận được thông báo Port is closed thì thành công và an toàn. Nếu kết quả trả về là open, bạn nên kiểm tra lại phần hướng dẫn UFW ở trên.

Như vậy là an toàn rồi, hãy thêm các service này vào FreshPing để tiến hành theo dõi.

Giám sát MySQL và Redis với FreshPing

Đến bước này là đơn giản rồi, chỉ việc điền các thông số cần thiết bao gồm IP của máy chủ và port vào là xong.

  • Check Type: TCP
  • IP: IP máy chủ của bạn
  • Port: lần lượt là 3306 cho MySQL và 6379 cho Redis

Thêm Status page để khoe

Để làm một trang như uptime.datuan.dev, hãy truy cập vào menu Status > Create Status Page của FreshPing.

Trang khởi tạo Status page rất trực quan và dễ sử dụng. Bạn đặt trên cho trang, thêm các service cần hiển thị trên trang. Cuối cùng là thêm tên miền và Google Analytics tracking code nếu muốn.

Về phần tên miền, hãy tạo một record CNAME có tên là tên miền bạn điền bên trên, giá trị là statuspage.freshping.io. Đợi khoảng 3 phút để DNS được cập nhật, vậy là xong.

Đánh giá

Có câu hỏi rất hay khi chúng ta sử dụng các dịch vụ theo dõi uptime của website rằng: Who monitor the monitor? Có nghĩa rằng ai sẽ giám sát những người giám sát mình hay cụ thể hơn là dịch vụ này có đủ ổn định để giám sát website chúng ta hay không.

Điểm khen

Mình có tìm hiểu thử và “bật ngửa” khi biết rằng FreshPing rất chịu chơi vì sử dụng Amazon Web Service làm server monitoring nên không có lí do gì mà mình lo lắng khi uptime của họ lại nhiều hơn của mình được. Với AWS, downtime của họ chỉ tính bằng phút mỗi năm nên không cần lo chuyện bò trắng răng.

Dù là miễn phí như bên này vẫn có live chat, các bạn Ấn Độ hỗ trợ theo múi giờ +6 nên rất phù hợp với người Việt Nam chúng ta. Ngoài ra họ còn có forum hỗ trợ và lắng nghe đóng góp từ người dùng.

FreshPing có giao diện hiện đại, hỗ trợ tới 50 giám sát và 5 status page kèm nhiều loại giám sát chắc chắn rằng sẽ làm hài lòng nhu cầu của tất cả mọi người.

Điểm chưa hay

Tuy nhiên, FreshPing có một số nhược điểm như chưa có tính năng giám sát theo điều kiện, ví dụ trong trang có chữ ‘Error’ sẽ thông báo down tương tự như UptimeDoctor. Tính năng này đặc biệt hữu dụng với các trang thông báo lỗi từ WordPress luôn trả về status code 200 dù rằng đang lỗi kết nối database chẳng hạn.

Ngoài ra, việc mở remote access của các dịch vụ như MySQL hay Redis là rất nguy hiểm và thật sự là không nên. Để giải quyết nhược điểm này, chúng ta có thể sử dụng Zabbix sẽ tốt hơn.

2 bình luận
  1. Triệu Vỹ nói

    Trang này không cho mình chỉnh lại Timezone khi nhận thông báo nhỉ?

    1. atuan nói

      Đúng rồi Vỹ, mới livechat với bên đó xong và bên đó báo đã biết vấn đề rồi, sẽ cố gắng fix sớm 😀

Để lại một trả lời

Địa chỉ email của bạn sẽ không được công bố.