Chuyên mục
Network

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

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.

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

Hướng dẫn cài đặt Docker, Docker Compose trên Linux (Ubuntu / Arch / Debian …)

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.yml

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-stopped

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/Targets

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 Sites

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 Sites

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.