网络延迟监测工具 SmokePing 的安装与配置

本文重在 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)

简单说明:

    • / ++ / +++ 这里填标识符,可以用大小写英文字母、数字、下划线和减号。+++ 是 ++ 的子类,会继承其父类的定义,不过在 +++ 中也可以自定义来覆盖父类的定义
  1. menu = 网页上左侧菜单显示的内容
  2. title = 网页上顶部显示的内容(如果不定义,会用 host 代替)
  3. host = 要 ping 的目标,域名和IP都行
  4. 每次更改配置要重启容器生效

这里可以先按照下面的格式,随便填填,然后看网页上有什么变化,这样容易还快。

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://technique.vfly2.com/2023/07/smokeping-installation-configuration/

版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (technique.vfly2.com)

保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @vfly2tech@technique.vfly2.com 接收新文章的推送,如果能留言互动就更好了。

可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇