Ubuntu 18.04 LTS 使用 Docker 快速部署 Smokeping 2.6.11 的方法

已关闭留言

这几天折腾了一下安装 Smokeping,发现有不少已经打包好的 Docker 镜像,拿过来直接用会非常方便,基本上不需要什么复杂的配置,安装完 Docker 然后简单的配置几个监控点就可以了。但是也有一些比较明显的不足,比如暂时没法很好的支持 master / slave 这个架构,主要是使用 Docker 部署的节点没法以 slave 的身份运行,所以这个方法只适用于简单的单点监控,多点监控还是需要自己使用原始方法安装部署。Smokeping 是一个用来监控网络时延的工具,官网为:

https://oss.oetiker.ch/smokeping/

此外,目前本教程也暂未涉及到 Web Server 的配置,包括 NGINX 或者 Apache 的配置等。这些会在后续教程进行更新。

文章目录
隐藏
一、安装 Docker 并获取镜像
二、安装和配置 Smokeping
三、批量添加监控项
四、参考文献以及其他

一、安装 Docker 并获取镜像

1、首先安装 Docker,本文基于 Ubuntu 16.04 LTS,安装 Docker 也不是本文重点,所以如果还不会安装 Docker 的,就自行 Google 一下。Ubuntu 上安装 Docker 非常简单,一句命令就能搞定:

apt install docker.io

安装完后应该是 Docker 17.03 CE 版本。(万年不更新的 docker.io 居然更新了)

2、安装完 Docker 之后,获取 Smokeping 的镜像。本次教程使用的是 LinuxServer.io 提供的 Docker 镜像。获取方式如下:

docker pull linuxserver/smokeping

获取之后可以使用 docker images 看一下是否已经有该镜像。

更多镜像的信息可以参考:

Github:https://github.com/linuxserver/docker-smokeping

Docker hub:https://hub.docker.com/r/linuxserver/smokeping/

二、安装和配置 Smokeping

1、下面开始安装并配置 Smokeping,首次运行,先运行下面命令:

docker run --name smokeping -d --rm -p 8888:80 -e TZ=Asia/Shanghai linuxserver/smokeping

其中端口映射可以选择自己想要映射的端口,前面的 8888 是映射出来的端口,后面的 80 是 Docker 的端口,想修改外部的端口的话,修改 8888 即可。

然后把配置目录导出到本地磁盘,实现监控数据持久化。

mkdir -p /data/smokeping
docker cp smokeping:/data/ /data/smokeping/ 
docker cp smokeping:/config/ /data/smokeping/ 
docker stop smokeping

2、上面的步骤就算是安装完成了,下面开始修改一些主要配置。

先修改一下要监控的对象,修改 Targets 文件。

vim /data/smokeping/config/Targets

然后添加或者修改自己想要监控的节点,比如下面这样:

####################################################################
+ China
menu = China Sites
title = China Sites
++ ChinaTel
menu = ChinaTel
title = ChinaTel
host = 14.155.220.1
++ ChinaDNS114
menu = ChinaDNS114
title = ChinaDNS 114.114.114.114
host = 114.114.114.114
++ ChinaDNS115
menu = ChinaDNS115
title = ChinaDNS 114.114.115.115
host = 114.114.115.115
####################################################################

如果图简单,只想先成功跑通,也可以使用官方默认的配置进行测试。

下面再次重新运行这个 Docker 容器:

docker run \
    --name smokeping \
    -d \
    -p 8888:80 \
    -e PUID=1000 -e PGID=1000 \
    -e TZ=Asia/Shanghai \
    -v /data/smokeping/data:/data \
    -v /data/smokeping/config:/config \
    linuxserver/smokeping

这里需要注意的是,PUID 和 PGID 可以通过下面命令查看:

id username

其中的 username 就是你要查看的 user 的账户名。这里一般默认使用 1000 即可,无需修改。

如果想使用单行命令,如下所示(和上面的多行命令效果一样,无需重复运行):

docker run --name smokeping -d -p 82:80 -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -v /data/smokeping/data:/data -v /data/smokeping/config:/config linuxserver/smokeping

至此,Docker 已经成功运行。如果想要查看日志,可以使用:

docker logs -f smokeping

如果想要进入容器内部:

docker exec -it smokeping bash

如果想要访问刚刚配置的 Smokeping:

http://<host-ip>:8888/smokeping/smokeping.cgi

其中的 <host-ip> 就是你的 VPS 的 IP。

三、批量添加监控项

步骤如下。需要监控的对象的名称和 IP 地址:

cat > config <<EOF
LAN_SW_CORE 10.0.0.1
LAN_HW_FW   10.0.0.10
LAN_SW_GW   10.0.1.1
EOF

然后生成配置即可:

cat config | while read LINE ; do
    #生成CONFIG LINE
    CL01=`echo ${LINE} | awk '{print "++ "$1}'`            #++ SERVER
    CL02=`echo ${LINE} | awk '{print "menu = "$1}'`        #menu = SERVER
    CL03=`echo ${LINE} | awk '{print "title = "$1" "$2}'`  #title = SERVER_IP
    CL04=`echo ${LINE} | awk '{print "host = "$2}'`        #host = IP
    echo -e "$CL01\n$CL02\n$CL03\n$CL04\n"                 #生成配置
    #echo -e "$CL01\n$CL02\n$CL03\n$CL04\n"    >>  ./Targets            #生成配置写入到文件
done

四、参考文献以及其他

本文的参考文献如下所示:

  • https://morphyhu.szitcare.com/wordpress/?p=1151
  • https://github.com/linuxserver/docker-smokeping

后续我自己也会结合 NGINX 进行进一步部署,以及进一步部署 Smokeping 的 master / slave 架构。后续会继续更新更多教程。