เฝ้าดูความเร็วอินเตอร์เน็ตที่บ้าน
Tags: speedtest, damrongsak
Published: 2023-11-26 12:42:48

บ่ายวันอาทิตย์ นั่งเตรียมเนื้อหาบรรยายอยู่ ก็เหลือบไปเห็น [Supadej Suthiphongkanasai](https://www.facebook.com/ripmilla) โพสต์ว่า "ไปเจอ Git อันนึง น่าสนใจดี เป็น Docker Project ที่จะทำ Speedtest ทุกๆ 1 ชม แล้วเก็บ stat ลงกราฟไว้ ..."
น่าสนใจดี กำลังนั่งง่วง ๆ อยู่เลย ก็เลยทิ้งงาน ลองแวะไปดู Repo ใน Github ดูหน่อยสิว่าจะยังไงดี ... นั่งดูสัก 10 นาที ก็เลยตัดสินใจ ก็ลองเล่นดูเลยก็ได้ 

* ว่ากันจริง ๆ แล้วใน Github ของ Henry Withaker ที่ public ไว้ก็มีอยู่ 30 repos แต่สิ่งที่เราจะลองดูกันก็คือ repo ที่ชื่อว่า [Speed-Tracker](https://github.com/henrywhitaker3/Speedtest-Tracker) ซึ่งมี source code และคำอธิบายอย่างละเอียดในการใช้งาน โดยรวม ๆ ก็บอกว่า เค้าใช้ Laravel เขียน back-end, ใช้ React เขียน front-end ส่วนของการทดสอบความเร็วก็ใช้ CLI ของค่าย speedtest.net และสุดท้ายใช้ Chart.js เป็นคนวาดกราฟออกมา 
  ** โดย default จะวัดความเร็วทุก 1 ชั่วโมง (แต่ว่าเราตั้งความถี่เองได้)
  ** กำหนดได้ว่าจะดูข้อมูลย้อนหลังได้กี่วันตอนแสดงผล
  ** สามารถ backup & restore ข้อมูลที่เคยเก็บไว้ได้ในรูปแบบของ JSON หรือ CSV
  ** สามารถส่งข้อความไปยัง Slack, Discord และ Telegram ได้ ถ้าผลที่ speedtest วัดได้ มีค่าต่ำกว่าหรือสูงกว่า ค่าที่คำหนดไว้
  ** ทำงานร่วมกับ healthcheck.io, Organizr และ InfluxDB ได้

- ลงมือกันเลย โดยที่เครื่องที่จะใช้ได้ทำงานติดตั้ง Docker และ docker-compose ไว้เรียบร้องแล้ว จากนั้นก็สร้าง directory data เอาไว้เก็บข้อมูล และให้เข้าถึง speedtest-tracker ที่ TCP/8765

```
# mkdir data
# cat > docker-compose.yaml <<EOF
version: '3.3'
services:
     speedtest:
         container_name: speedtest
         image: henrywhitaker3/speedtest-tracker
         ports:
             - 8765:80
         volumes:
             - ./data:/config
         environment:
             - OOKLA_EULA_GDPR=true
         logging:
             driver: "json-file"
             options:
                 max-file: "100"
                 max-size: "2048k"
         restart: unless-stopped
EOF
# docker-compose up -d
Creating network "speedtest_default" with the default driver
Pulling speedtest (henrywhitaker3/speedtest-tracker:)...
latest: Pulling from henrywhitaker3/speedtest-tracker
c91af5d1b23e: Pull complete
740fcfa9e15a: Pull complete
ce5b3694a6d6: Pull complete
a83d676a55d9: Pull complete
38ac933c5d8d: Pull complete
dc32e0469fc9: Pull complete
2692dc6e8a90: Pull complete
36a44203a304: Pull complete
df68ab8ba510: Pull complete
712e86a465e0: Pull complete
b87cc77a8de9: Pull complete
Digest: sha256:47159a9402291275bd9f8a8ed4f5c1ce8502de216465ed29da8a3c995b807df1
Status: Downloaded newer image for henrywhitaker3/speedtest-tracker:latest
Creating speedtest ... done
```



- รอสัก 1 นาที แล้วก็ใช้ browser เปิดไปที่ http://hostname:8765 และถ้าต้องการทดสอบการวัดความเร็ว ก็กดปุ่ม "Test again" ได้เลย


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pdbdu92yjgvg5pey2y7a.png)

- สามารถปรับแต่งความถี่ในการวัดความเร็วได้ โดยเลือกเมนู Settings ที่ tab General จากเดิมที่กำหนดไว้ทุก ๆ 1 ชั่วโมง `0 * * * *` ผมแก้ไขให้การวัดความเร็วทุก ๆ 30 นาทีเพื่อให้เห็นผลการทำงาน ในช่วงทดสอบได้ชัดเจนขึ้น โดยกำหนดที่ Schedule ให้เป็น `*/30 * * * *`

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxfvnm9a9twb1isuot1f.png)

ขอให้สนุกกับ technology ครับ
#### Mady by มูลค่าความสุข