本文重在 SmokePing 的部署流程,介绍和更多使用请到:VPS 网络测试与长期监测 – 技焉洲 (vfly2.com)
适用系统:Debian 系发行版,包括 Ubuntu 和 Armbian,其他发行版按流程稍改命令一般也可。
走通预计时间:20 分钟 (建议先走通一遍,再回过头自定义配置文件)
本文选用 Linuxserver 的镜像,因为 Linuxserver 维护了很多常用软件的 Docker 镜像,作为一个大的组织,质量有保障,所有镜像都适配 AMD 和 ARM 两种架构,通过自动化手段,他们的镜像可以跟随官方最新版更新。
使用 Docker 安装 SmokePing
全复制并执行,一键创建工作目录并开放端口
myserve="smokeping"
sudo ufw allow 8899/tcp comment $myserve && sudo ufw reload
mkdir -p ~/myserve/$myserve && cd ~/myserve/$myserve && mkdir config data
如果要使用主从模式,运行这个命令,否则忽略。 主从模式文章
touch smokeping_secrets && \
sudo chown 1000:root smokeping_secrets && \
sudo chmod 600 smokeping_secrets
根据注释自定义,然后执行,一键创建 docker-compose.yml 文件 (支持 armbian)
cat > docker-compose.yml << EOF
---
version: "2.1"
services:
smokeping:
image: lscr.io/linuxserver/smokeping:latest
container_name: smokeping
hostname: vfly2.com # 自定义,如果不了解可默认
restart: unless-stopped
environment:
- PUID=1000 # 自定义,如果不了解可填 root,下同
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- ./config:/config
- ./data:/data
# 下面是主从模式下会用到的,不使用主从模式可删去
- ./smokeping_secrets:/etc/smokeping/smokeping_secrets
ports:
- 8899:80
EOF
拉取容器镜像
docker compose pull
先运行一次,让默认配置文件复制一份到挂载目录(这时就可以访问网页了,通过 http://ip_addr_or_domain:8899
访问,检查是否成功运行)
docker compose up
Ctrl C 退出
编写测试 IP 的配置文件 config/Targets
例子: SmokePing – smokeping_examples (oetiker.ch)
简单说明:
-
- / ++ / +++ 这里填标识符,可以用大小写英文字母、数字、下划线和减号。+++ 是 ++ 的子类,会继承其父类的定义,不过在 +++ 中也可以自定义来覆盖父类的定义
- menu = 网页上左侧菜单显示的内容
- title = 网页上顶部显示的内容(如果不定义,会用 host 代替)
- host = 要 ping 的目标,域名和IP都行
- 每次更改配置要重启容器生效
这里可以先按照下面的格式,随便填填,然后看网页上有什么变化,这样容易还快。
cd ~/myserve/smokeping && vim config/Targets
修改完后,重启生效
docker compose restart
这是一个我自己使用的缩减示范版,可以先不改,走通流程,运行看看,再自定义:
*** Targets ***
probe = FPing
# 定义全局的探针,这里是 ping
menu = Top
title = Network Latency Grapher for Vfly2
remark = Welcome to my SmokePing website. \
Here you will learn all about the latency of my network.
+ TheBigThree
menu = 三大运营商
title = 监控统计
++ CMCC
menu = 移动网络监控
title = 移动网络监控列表
host = /TheBigThree/CMCC/CMCC-BJ /TheBigThree/CMCC/CMCC-TJ /TheBigThree/CMCC/CMCC-HLJ
# 这里 host 中有的,才会真正测试,如果 host 中出现了未定义的,网站就会报错
+++ CMCC-BJ
menu = 北京移动
title = 北京移动
host = 221.130.33.52
+++ CMCC-TJ
menu = 天津移动
title = 天津移动
host = 211.137.160.5
+++ CMCC-HLJ
menu = 黑龙江移动
title = 黑龙江移动
host = 211.137.241.35
# 剩下俩就省略了,太长了
+ DomesticServer
menu = 国内服务器
title = 监控统计
host = /DomesticServer/Tc
++ Tc
menu = TencentCloud
title = TencentCloud
host = 110.242.68.66
+ USServer
menu = 北美服务器
title = 监控统计
host = /USServer/Bwg
# 少一个没事,但多一个没定义的就会报错
++ Bwg
menu = Bandwagon
title = Bandwagon
host = 193.43.142.215
++ NA
menu = nextarray
title = nextarray
host = 193.43.142.215
+ OtherRegionServer
menu = 其他地区服务器
title = 监控统计
host =
由于运行在 Docker 中,因此配置了 IPv6 检测,但 smokeping 没工作,应该是没开启 Docker 的 IPv6: [[03Docker 与 Docker-compose#启用 IPv6]]
反代 SmokePing
如果使用 npm
Domain Names:
Scheme:http,Forward Hostname/IP:172.17.0.1,Forward Port:8899
Cache Assets √ Block Common Exploits √
Websockets Support √
SSL
SSL Certificate:
Force SSL √ HTTP/2 Support √
HSTS Enabled HSTS Subdomains
直接用 Nginx
sudo vim /etc/nginx/sites-available/smokeping
server {
listen 80;
server_name smokeping.vfly2.com;
location / {
proxy_pass http://172.17.0.1:8899;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
sudo ln -s /etc/nginx/sites-available/smokeping /etc/nginx/sites-enabled/smokeping
sudo systemctl reload nginx
配置不同的探针 config/Probes
自定义查询频率:
cd ~/myserve/smokeping && vim config/Database
*** Database ***
step = 180
pings = 20
每 3 分钟查询 20 次。
- step:查询周期,单位秒,多少秒时间 ping 一轮,其实不止 ping ,指的是所有探针的操作
- pings: 每次周期查询多少次,比如,每个节点 ping 多少下
编辑探针的配置文件:
cd ~/myserve/smokeping && vim config/Probes
常用的有这几个,根据需要配置:(更多查看: SmokePing – SmokePing Probes (oetiker.ch))
*** Probes ***
+ FPing
binary = /usr/sbin/fping
# fping 功能同 ping,但有一些额外功能:同时向多个主机测试,使用文件中的主机列表进行批量测试
+ FPing6
binary = /usr/sbin/fping
protocol = 6
+ DNS
binary = /usr/bin/dig
lookup = baidu.com
pings = 5
step = 300
+ TCPPing
binary = /usr/bin/tcpping
forks = 10
offset = random
pings = 5
port = 80
# tcpping 工具进行TCP连接测试。它会向指定的主机和端口发送TCP连接请求,并测量建立连接所需的时间
SmokePing – Smokeping::probes::SSH (oetiker.ch)
在测试 IP 配置里使用哪个探针,就在前面加 probe = 探针名称
,另外,由于属于“子类”,这里为探针配置的参数会覆盖上面 config/Probes 中配置的。
(如果看得头大,不妨先跳过)
*** Targets ***
probe = FPing
# 默认使用 FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to this SmokePing website.
+ network
menu = Net latency
title = Network latency (ICMP pings)
++ myhost1
host = myhost1.example
++ myhost2
host = myhost2.example
+ services
menu = Service latency
title = Service latency (DNS, HTTP)
++ DNS
probe = DNS
# 这里 probe 换成了 DNS,然后在 DNS 这里面的,都会使用 DNS 探针测试
menu = DNS latency
title = Service latency (DNS)
+++ dns1
host = dns1.example
+++ dns2
host = dns2.example
++ HTTP
menu = HTTP latency
title = Service latency (HTTP)
+++ http
menu = http
title = Web Server (www-server) / HTTP
probe = EchoPingHttp
host = www-server.example
# default url is /
+++ https
menu = https
title = Web Server (www-server) / HTTPS
probe = EchoPingHttps
# 任何级别都可以自定义探针
host = www-server.example
+++ http
menu = http
title = www-cache / HTTP
probe = EchoPingHttp
host = www-cache.example
port = 8080
url = http://www.somehost.example/
原文链接: https://yanh.tech/2023/07/smokeping-installation-configuration/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @vfly2tech@yanh.tech
接收新文章的推送,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。
评论