Chuyên mục
Network Self Hosting

SmokePing – Công cụ theo dõi kết nối mạng

Vấn đề mọi người thường gặp khi sử dụng VPS nước ngoài để host các website dành cho thị trường trong nước là kết nối không ổn định mỗi khi có đợt “đứt cáp” định kỳ. Đôi khi chỉ duy nhất 1 nhà cung cấp (Viettel hoặc VNPT hoặc FPT) “gặp vấn đề” trong khi các anh còn lại vẫn kết nối phà phà, khiến việc theo dõi sự ổn định rất khó khăn.

Chẳng hạn trong vài tháng qua mình chuyển bán hàng YCB.vn qua Hetzner (Đức) để tận dụng VPS cấu hình xịn giá thơm. Nhưng cách đây 3 tuần mình đã phải chuyển lại về đặt ở VPS trong nước của AZDigi.

Lý do: mạng VNPT “gặp vấn đề” vào mỗi tối, khiến việc truy cập ra các trang web nước ngoài siêu rùa bò. Trong khi đó, mình dùng Viettel vẫn truy cập ầm ầm ngày đêm, cứ tưởng cáp quang vẫn ngon. Mình chỉ biết VNPT bị “bóp” sau khi dạo qua Topic Chia sẻ vấn đề mạng trên voz. Sau đó phải gấp rút chuyển nhà cho web bán hàng về lại trong nước để tránh mất đơn hàng.

Để chủ động hơn trong theo dõi tình hình “đứt cáp” của các anh ISP trong nước, mình vừa mới cài đặt SmokePing lên 1 loạt VPS đang có ở Hetzner và HostHatch. Nó sẽ giúp mình phát hiện ra sự cố bất thường mỗi khi “cá mập đói bụng cắn cáp” để có phương án điều chỉnh phù hợp cho các website đặt ở nước ngoài.

1. SmokePing là gì?

SmokePing là một công cụ đo độ trễ mạng (latency measurement tool), được dùng để theo dõi và hiển thị trạng thái kết nối mạng giữa các máy chủ Internet.

SmokePing không phải công cụ theo dõi uptime hay tốc độ mạng của nhà cung cấp dịch vụ. Nó chỉ là công cụ để theo dõi độ ổn định dựa vào latency và packet loss.

SmokePing được rất nhiều các nhà cung cấp Server / VPS thiết lập để theo dõi dịch vụ mạng trên toàn thế giới: OVH, Serverius, HostSG. Ở Việt Nam, mình biết có trang https://ping.datuan.dev/ của bạn Tuấn Dev chia sẻ.

Ngoài ra, bạn có thể tự mình cài đặt SmokePing trên VPS cá nhân của mình để tuỳ biến theo dõi dịch vụ theo nhu cầu cá nhân. Dưới đây là hướng dẫn cách cài đặt SmokePing

2. Cài đặt SmokePing

Trang web chính thức của SmokePing có hướng dẫn cài đặt ở đây. Nhìn vô bảo đảm muốn nghỉ chơi ngay, quá dài dòng, rối rắm.

May quá, bên Linuxserver.io có làm sẵn docker image của SmokePing. Mình sẽ chọn cài đặt SmokePing bằng Docker, siêu nhanh siêu gọn.

Bạn cần cài đặt Docker và Docker-Compose trước khi bắt đầu, xem lại bài viết dưới đây để hiểu rõ hơn cách cài đặt

Truy cập SSH vào server, mình tạo 1 thư mục mới có tên smokeping và tạo file docker-compse.yml trong thư mục này:

mkdir smokeping
cd smokeping
nano docker-compose.ymlCode language: Bash (bash)

Nhập vào nội dung như sau và lưu lại

---
version: "2.1"
services:
  smokeping:
    image: lscr.io/linuxserver/smokeping
    container_name: smokeping
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Ho_Chi_Minh
    volumes:
      - ./config:/config
      - ./data:/data
    ports:
      - 8080:80
    restart: unless-stoppedCode language: YAML (yaml)

Bạn có thể thay đổi dòng 8080:80 thành xxxx:80, với xxxx là số bất kỳ. Đây là cổng mạng bạn sẽ sử dụng để truy cập vào SmokePing.

Kích hoạt SmokePing bằng lệnh

docker-compose up -d

Chờ vài phút cho Docker tải Image, tạo Container và khởi động. Sau đó bạn truy cập vào địa chỉ http://<IP-của-VPS>:8080. Nếu bạn đã thay 8080 thành port nào khác thì sử dụng port đó thay thế.

Giao diện SmokePing sẽ hiện ra như sau

Với mỗi dịch vụ mạng, SmokePing sẽ hiển thị 4 biểu đồ:

  • Last 3 Hours: 3 giờ gần nhất
  • Last 30 Hours: 30 giờ gần nhất
  • Last 10 Days: 10 ngày gần nhất
  • Last 360 Days: 360 ngày gần nhất.

Thông số trong biểu đồ là độ trễ của packet khi SmokePing thực hiện Ping đến dịch vụ mạng, tínn bằng ms. Ngoài ra, màu sắc của biểu đồ sẽ phản ánh sự ổn định của kết nối mạng, dựa vào tần suất thất lạc gói tin (packet loss) từ xanh lá: 0 (ngon lành) đến đỏ: 19/20 (quá tệ)

3. Bổ sung thêm dịch vụ

Mặc định sau khi cài đặt bằng Docker, SmokePing chỉ có sẵn vài dịch vụ phổ biến như Facebook, Google,… Để theo dõi thêm các dịch vụ mạng Việt Nam, bạn cần tạm ngưng Docker container

docker-compose stop

Danh sách dịch vụ mạng được lưu trong file Targets nằm trong thư mục config. Bạn cần chỉnh sửa file này và thêm vào dịch vụ cần theo dõi

nano config/TargetsCode language: Nginx (nginx)

Mặc định, phần trên cùng sẽ giống như dưới đây

*** Targets ***

probe = FPing

menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of WORKS Company. \
         Here you will learn all about the latency of our network.



+ InternetSites

menu = Internet Sites
title = Internet SitesCode language: Markdown (markdown)

Mình thêm vào danh sách ISP VNPT và Viettel ở trên cùng, và lưu lại.

*** Targets ***

probe = FPing

menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of WORKS Company. \
         Here you will learn all about the latency of our network.

+ InternetVietnam

menu = Internet Vietnam
title = Internet Vietnam

++ VNPTHN
menu = VNPT Hà Nội
title = VNPT Hà Nội
host = speedtest2.vtn.com.vn

++ VNPTHCM
menu = VNPT Hồ Chí Minh
title = VNPT Hồ Chí Minh
host = speedtest3.vtn.com.vn

++ ViettelHN
menu = Viettel Hà Nội
title = Viettel Hà Nội
host = speedtestkv1a.viettel.vn

++ ViettelHCM
menu = Viettel Hồ Chí Minh
title = Viettel Hồ Chí Minh
host = speedtestkv3b.viettel.vn

+ InternetSites

menu = Internet Sites
title = Internet SitesCode language: Markdown (markdown)

Sau đó khởi động lại SmokePing bằng lệnh

docker-compose start

Quay lại trang quản lý SmokePing, bạn sẽ thấy trên menu bên trái đã hiện ra danh sách Internet Việt Nam

4. Theo dõi mạng bằng SmokePing

Dưới đây là biểu đồ so sánh kết nối mạng từ VPS Hetzner của mình đặt tại Đức với VPNT và Viettel

Có thể thấy mạng VNPT liên tục “có vấn đề” đúng lịch vào mỗi tối trong 10 ngày gần nhất: latency tăng cao và loss packet liên tục. Trong khi đó mạng Viettel kết nối ổn định ngon lành.

SmokePing không phản ánh chính xác chất lượng mạng của từng nhà cung cấp do nó không đo được tốc độ truyền tải. Nhưng chỉ cần nhìn qua latency và packet loss tăng cao là có thể nhìn ra nhà mạng đang “gặp trục trặc”.

Để cải thiện kết nối mạng mỗi khi đứt cáp, bạn có thể sử dụng WireGuard VPN để “bẻ lái” kết nối qua VPS trung gian nào đó. Còn nếu bạn đang đặt website ở server gặp vấn đề kết nối với nhà mạng, hãy cân nhắc chuyển tạm về nhà cung cấp trong nước để chờ đến khi cáp quang được sửa thành công.

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng mò vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

6 trả lời trong “SmokePing – Công cụ theo dõi kết nối mạng”

Mình có 1 server và 1 VPS cài đặt dịch vụ DNS trên đó (Pihole), public port 53 để sử dụng. Đã sử dụng rất lâu không bị vấn đề gì. Nhưng sau khi cài smokeping này vào thì vài ngày sau là bị tấn công DNS, lượng query rất lớn đến từ nước ngoài, cả 2 server gần như bị treo luôn. Lúc này mình phải đóng port 53 và restart lại server mới chạy bình thường. Không biết cái smokeping này có liên quan đến vụ tấn công này hay không nhưng mình đã gỡ hẳn và không bao giờ dám cài lại luôn

Trả lời Hùng Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *