人手一个Smokeping之 树莓派搭建Smokeping过程全记录

人手一个Smokeping之 树莓派搭建Smokeping过程全记录

本文最后更新于 118 天前,其中的信息可能已经有所发展或是发生改变。

黑五刚刚过去,MJJ们一年一度的VPS抢购盛会也刚刚过去。有的人抢到了传家宝,价格便宜、性能高、网络好;而有的人就比较惨了,上了灵车,网络还很烂。性能参数和价格在商家放货时才能确定,但VPS的网络我们却能够通过Looking Glass提前了解到。只是靠心血来潮时的ping命令来测量延迟吗?那样无异于盲人摸象。如何才能持续的、连续的、长时间的监测一台服务器的网络状态呢?可以用Smokeping来做到这几点,还能生成漂亮的图表。

你可以将Smokeping搭建到你的电脑里,然后将电脑开个几天几十天,就能获取到这一段时间的服务器的网络情况了——但这不可能,连续开电脑几天,功耗太大了。树莓派就很适合长时间运行来做一些不那么复杂的事情,让树莓派来跑Smokeping就非常适合。

Smokeping的安装流程很麻烦,但现在有了Docker,使用Docker安装Smokeping只需要拉取镜像到本地,然后安装Docker镜像就可以了。Docker可以帮我们快速安装Smokeping,然而却无法帮助我们配置过程同样很麻烦的配置文件。本文将详细记述树莓派安装Docker、利用Docker安装Smokeping、Smokeping的配置。

安装Docker

我使用的系统是树莓派官方的64位的Pi OS,是基于Debian的修改版,使用Ubuntu、Pi OS等Debian系的可以直接按照这个来,其他系统可以搜索一下其他教程来安装Docker。

首先设置好apt源,不同系统可能有一些差异。我使用的64位的Pi OS可以直接使用Debian官方源镜像,修改/etc/apt/sources.list如下:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free

再修改/etc/apt/sources.list.d/raspi.list 如下:

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

安装必备的软件:

sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
lsb-release \
software-properties-common

一切准备就绪 开始安装Docker:

sudo curl -sSL https://get.docker.com | sh

可能执行过程中会出现报错,但不影响最后的运行。只要输入docker能够显示Docker的有关信息,则为安装成功。安装失败的原因大多是国内的网络问题,装不上可以等网络不繁忙的时候安装。

添加GPG密钥:

curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo apt-key add -

再添加Docker的软件源:

sudo add-apt-repository \
"deb [arch=armhf] https://mirrors.aliyun.com/docker-ce/linux/raspbian \
$(lsb_release -cs) \
stable"

最后编辑 /etc/docker/daemon.json 添加国内Docker镜像:

{
"registry-mirrors": ["https://ustc-edu-cn.mirror.aliyuncs.com"]
}

Docker这部分的工作就算完成啦!可以开始用Docker拉取镜像安装Smokeping了。

安装Smokeping

拉取Smokeping Docker image,进行安装:

docker create \
--name=smokeping \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 80:80 \
-v /home/smokeping/config:/config \
-v /home/smokeping/data:/data \
--restart unless-stopped \
linuxserver/smokeping

安装完成后,Smokeping这个Docker Image的ID将会显示在屏幕上。运行sudo docker start <你的Smokeping Docker Image id>,在/home/smokeping/文件夹就会生成配置文件和数据文件夹,我们修改配置文件,对Smokeping做出修改,就是通过这两个文件夹中的文件实现的。

现在打开http://<你的树莓派IP>,你就能看到Smokeping的界面了。下面就是对它的配置过程。

配置Smokeping

首先要放上来的,是Smokeping的官方文档。尽管是英文的,但官方文档写的很准确,用词也很干练,配合google翻译,没过4级的人阅读下来也不是很难。有问题看看官方文档,答案都在这里面:https://oss.oetiker.ch/smokeping/doc/index.en.html

Config文件夹中,是Smokeping的配置文件。主要的配置文件的作用如下:

  • Alerts:监控报警配置文件
  • Database:数据库配置文件,配置数据库中数据的存放方式
  • General:一些乱七八糟的通用设置
  • Probes:探针配置文件,配置探针的工作方式,如探针二进制文件的位置,每分钟Ping的次数,Ping间隔等参数
  • Slaves:Smokeping可以设置主从,从服务器定期将数据汇总至总服务器。Slaves就是主从服务器的配置文件,我们不需要动他。
  • Targets:最重要的配置文件,存放了要被测试的服务器的地址等信息。

其中,很多的配置文件是不需要被修改的,下面就是需要进行修改的文件了。

首先,需要配置Probes探针配置文件。Smokeping Docker版内置了两个探针,分别是Fping和Tcpping,分别可以进行ICMP Ping和TCP Ping,可以按需选择。下面是我的Probes配置文件配置:

*** Probes ***

+ FPing
# 二进制文件位置
binary = /usr/sbin/fping
blazemode = true
hostinterval = 1
# 数据包大小
packetsize = 32
# 超时时间
timeout = 1
# 每一轮Ping进行的次数
pings = 10
# 每轮Ping进行的时间
step = 60

+TCPPing
binary = /usr/bin/tcpping
forks = 10
offset = 50%
step = 300
timeout = 10
pings = 25
port = 443

# DNS相关设置
+ DNS
binary = /usr/bin/dig
lookup = google.com
pings = 5
step = 300

在上面的配置文件中,超时时间*每轮进行的Ping的次数一定要小于每轮Ping进行的时间,否则这轮Ping时间已经到了,Ping过程却没有完成,就无法记录本轮Ping的结果了,表现在最后的图表上就是曲线会出现中断。另外,在Database配置文件中,也有step和pings的设置,这里面的设置要与Probes中的设置是相同的。下面就是最艰巨的Targets配置文件的配置了,我会结合我的部分Targets配置文件来进行说明:

*** Targets ***
# 使用的探针类型,可选FPing和TCPPing,就是Probes配置文件中设置的探针
probe = FPing

menu = Top
title = Ping
remark = Smokeping on raspberry pi. Through China Mobile Shandong AS24444

# 父目录名称,暂且这么叫吧,找不出来更好的名词了。
+ VPS
# 显示在左侧导航栏的导航名称
menu = VPS
# 显示在页面大标题上的文字
title = VPS Ping
# 注释文字,可选
remark = Self using VPS.
# Host,父目录下面的主机。注意第一个斜杠后面填写的内容要和父目录名称一致,第二个斜杠后面的要和子目录名称一致。
host = /VPS/olink /VPS/akkocloud /VPS/racknerd /VPS/ali
# 子目录名称
++ olink
# 显示在左侧导航栏的导航名称
menu = Olink
# 显示在页面大标题上的文字
title = Olink - Frankfurt DE
# 报警级别,这个保持默认即可
alerts = someloss
# 要被监测的VPS的IP地址或域名
host = <填写服务器IP或域名>
# 注释文字,可选
remark = Olink will ban icmp traffic when they are being attacking. Packet loss will be 100%, looks like it's offline.
++ akkocloud
menu = Akkocloud
title = Akkocloud - Fremont CA US
alerts = someloss
host = <填写服务器IP或域名>
++ racknerd
menu = Racknerd
title = Racknerd - San Jose CA US
alerts = someloss
host = <填写服务器IP或域名>
++ ali
menu = Aliyun
title = Aliyun - Beijing China
alerts = someloss
host = <填写服务器IP或域名>

最后,不要忘了修改一下Alert文件,修改一下报警的配置,尽管我们不需要报警,下面的修改基本上是关闭这个功能:

*** Alerts ***
to = [email protected]
from = [email protected]

+someloss
type = loss
# 每次发出60个包,连续3次轮询检查丢包率在99%以上,基本不会触发警报
pattern = ==0%,>99%,>99%,>99%
comment = 每次发出60个包,连续3次轮询检查丢包率在99%以上

当然要实现报警功能,还是要进行更复杂的配置的。

配置完成啦!运行一下sudo docker restart <你的SmokePing Docker ID>,准备开始监测吧!Smokeping的图标非常直观,延迟、丢包率等信息都在图表上一览无余,下次抢VPS再也不用怕抢到垃圾机房的啦。

smokeping

smokeping

故障排除:ERROR: /config/Targets, line variable already defined:配置文件出现问题,请检查配置文件语法。或者有其他问题,可以在评论区留言,我会尽力帮助解决。

附:本站提供的,从北方移动家宽进行的Smokeing https://bbx.xmgspace.me/smokeping/

参考资料

SmokePing官方文档(英文)

树莓派上 Docker 的安装和使用 | 树莓派实验室

树莓派使用docker快速搭建Smokeping, iGeeker

本文永久链接:https://blog.xmgspace.me/archives/install-smokeping-docker-on-raspberry-pi.html
本文文章标题:人手一个Smokeping之 树莓派搭建Smokeping过程全记录
如文章内无特殊说明,只要您标明转载/引用自Xiaomage's Blog,您就可以自由的转载/引用文章。禁止CSDN/采集站采集转载。
授权协议:署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)

评论

  1. 自镇流高压汞灯
    Windows Firefox
    7月前
    2020-12-16 17:20:15

    那你抢到哪里的VPS了?

    • Xiaomage 博主
      Windows Edge
      7月前
      2020-12-16 23:20:37

      今年搞好smokeping有点晚了,黑五没买,等圣诞促销了...双十一期间买了Racknerd的圣何塞和Olinkcloud的法兰克福 感觉今年黑五...一般般,没有降价特别大的传家宝
      我推特账号...抽风了吧 上线确实看到警告了,输入验证码就恢复了

      • 自镇流高压汞灯
        Windows Firefox
        7月前
        2020-12-16 23:35:48

        它们能搭I2P出口代理吗?

        • Xiaomage 博主
          Windows Edge
          7月前
          2020-12-17 23:05:30

          TOS里面没有写出,但我觉得多半不能,可以月付试试 欧美国家的机房管的还是比较严的,东欧小国的或许可以,但不好找,价格贵,线路还烂。I2P我觉得能用就行,为了快一点搭建自己的出口代理性价比太低了。I2P本身的设计就快不起来,真没必要搭建自己的出口...

        • 自镇流高压汞灯
          Windows Firefox
          7月前
          2020-12-17 23:18:13

          波兰服务器我也蹭过,感觉速度还行。

  2. 自镇流高压汞灯
    Windows Firefox
    8月前
    2020-12-15 21:23:49

    感觉旧手机更适合用来干这种事,同样功耗低能长期运行而且是废物利用,不用特地花钱购买。不知道安卓能不能搭这个?
    你的推特账号怎么了?

    • Xiaomage 博主
      Windows Edge
      8月前
      2020-12-15 22:28:47

      旧手机的确挺适合的 但在手机上跑Docker...有一点难度,但应该也是可以的,有时间我会试一试。
      我的推特账号...没怎么啊 我一般不用推特的

      • 自镇流高压汞灯
        Windows Firefox
        8月前
        2020-12-15 23:32:22

        今天看到“警告:此账号暂时受限 你看到这则警告,因为该账号有异常活动。是否仍要查看?”,不过现在没了。

发送评论 编辑评论


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