实测用 Speedtest CLI 自动记录服务器测速日志

2025.7.9 杂七杂八 856
33BLOG智能摘要
文章介绍了如何使用 Speedtest CLI 配合 Cron 自动记录服务器网络测速日志。作者为了解决海外服务器访问不稳定问题,选择了结构清晰、官方可信的 Speedtest CLI,并通过 shell 脚本格式化输出结果,记录延迟、下载与上传速度及测试节点等关键数据。最终通过 crontab 每天定时执行脚本,并利用日志发现网络性能在不同时间段有显著变化。文章提供了安装方法、脚本示例和进阶建议。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

我的服务器测速监控方案:Speedtest CLI + Cron 自动日志全记录

实测用 Speedtest CLI 自动记录服务器测速日志

大家好,今天想分享一个我最近折腾的小工具方案——用 Speedtest CLI 自动记录服务器网络测速日志。起因是我发现某台海外服务器最近访问特别慢,但每次手动测速又显示正常,于是决定搞个自动化方案来长期监控真实网速。

为什么选择 Speedtest CLI?

其实市面上测速工具很多,但 Speedtest CLI 有几个优势特别吸引我:

  • 官方出品,结果可靠(不像某些野鸡测速点会虚标)
  • 纯命令行操作,适合服务器环境
  • 能输出结构化数据(JSON格式美滋滋)
  • 全球节点多,还能指定特定节点测试

不过安装时有个坑要注意:官方推荐用 curl -s https://install.speedtest.net/app/cli/install.deb.sh | sudo bash 安装,但实测某些 Linux 发行版会报错。后来我改用直接下载二进制包的方式才搞定:

wget https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz
tar -xvf ookla-speedtest-*.tgz
sudo mv speedtest /usr/local/bin/

设计日志记录方案

我的需求很简单:每天定时测速,把结果存到日志文件。但直接输出原始 JSON 太乱了,所以我写了个 shell 脚本做格式化:

#!/bin/bash
LOG_FILE="/var/log/speedtest.log"
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")

echo "===== ${TIMESTAMP} =====" >> $LOG_FILE
speedtest --accept-license --accept-gdpr -f json | jq -r '[
    .ping.latency,
    .download.bandwidth / 125000,
    .upload.bandwidth / 125000,
    .server.name
] | @tsv' | awk '{print "延迟: "$1"ms 下载: "$2"Mbps 上传: "$3"Mbps 节点: "$4}' >> $LOG_FILE

这里有几个实用技巧:

  1. jq 提取关键数据(需要先安装 jq 工具)
  2. 带宽值除以 125000 将字节转换为 Mbps
  3. awk 美化输出格式
  4. 记得加 --accept-license 参数避免交互提示

设置定时任务

最后一步就是用 crontab 设置每天自动运行:

# 每天凌晨3点测速
0 3 * * * /path/to/speedtest.sh

运行一周后,我的日志文件已经积累了不少数据。用 cat /var/log/speedtest.log 查看时发现个有趣现象:凌晨时段的下载速度能到 200Mbps+,而晚高峰经常掉到 50Mbps 以下——这解释了我之前感觉”有时快有时慢”的困惑。

进阶玩法

如果你也想部署这个方案,这里有几个建议:

  • 加上 --server-id=xxxx 固定测试节点(避免不同节点带来的数据波动)
  • logrotate 定期压缩旧日志
  • 可以配合 Grafana 做可视化监控(我下一步准备折腾这个)

整个过程花了不到半小时,但收获了一个实用的长期监控方案。如果你也在为服务器网络波动烦恼,不妨试试这个方案。有什么问题欢迎在评论区交流~

评论