linux笔记—docker运行smokeping,搭建三网监控.

  • 使用 docker 运行 smokeping 服务,搭建个人的网络监控.

  • 资料来源:

    https://hub.docker.com/r/linuxserver/smokeping
    https://tangxiaosu.com/deploy-smokeping-with-docker.html
    https://cloud.tencent.com/developer/article/1025922

  • 更新

    1
    19.01.13 初始化

导语

  • 常常涉及到服务器的网络质量等问题,通常是移动连不上,电信/联通能连上,某个地区甚至某个县图片不加载,DNS/HTTP劫持,UA带就带ie的劫持,,错综复杂的网络环境,,最后锅全甩在机房.非常需要三网的自动化监控报警.

  • smockeping 自然是驾轻就熟..就是安装太繁琐,,直到遇到了 docker .

  • 本文的目标就是搭建一个简单单点的三网监控.

smockeping

  • Smokeping是一款用于网络性能监测的开源监控软件,主要用于对IDC的网络状况,网络质量,稳定性等做检测,带宽占用要靠cacti或zabbix了.
  • DockerHub 上有不少打包好的镜像,非常方便部署.当然肯定有缺点,基本只能单点用了,折腾 master / slave 需要一些工作量,还未涉及到.

安装

  • 这里用到的是下载最多的 linuxserver/smokeping这个镜像.

  • 如果上面地址打不开,可以到对应 Github.

  • 官方的说明比较详细.

  • 安装实际上就是拉取镜像

    1
    docker pull linuxserver/smokeping
  • 试运行,这个镜像中有一组默认的配置.先试运行.

    • 命令

      1
      2
      3
      4
      5
      6
      docker  run \
      --name=smokepings \
      --rm \
      -e TZ=Asia/Shanghai \
      -p 80:80 \
      linuxserver/smokeping
    • 容器运行几分钟后,查看效果,
      初始

    • 基础配置都是国外的主流网站,没有监控结果.

配置

  • 这个镜像中的配置文件都在 /config ,数据在 /data .这里拷贝出来,挂载本地文件夹形式,实现数据的持久化.

    • 命令

      1
      2
      3
      4
      mkdir -p /data/smokeping
      docker cp smokeping:/data/ /data/smokeping/
      docker cp smokeping:/config/ /data/smokeping/
      docker stop smokeping # 停止容器
    • 进入本地 /smokeping/config/ 开始修改配置文件.

  • 我们主要需要修改的是 Database , Presentation , Targets .

    • Database 主要是监控的频率和探针数量.

      • 找到

        1
        2
        step     = 300
        pings = 20
      • 修改为,默认一次的监控周期改为1分钟,探针数量20不变.

        1
        2
        step     = 60
        pings = 20
    • Presentation 主要是 smokeping 的图表和第一栏的设置.需要改动内容不多, 不过为了看着方便,这里汉化了一部分内容. # 号后为博主加的注释.

      • 文件

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        template = /etc/smokeping/basepage.html
        charset = utf-8 #支持utf-8所以可以汉化一部分

        + charts # 以下为第一栏内容,纯图方便,只个人看着懂意思.

        menu = 排行榜
        title = 排行榜

        ++ stddev
        sorter = StdDev(entries=>4)
        title = 综合指数排行
        menu = 综合指数
        format = 综合指数 %f

        ++ max
        sorter = Max(entries=>5)
        title = 最大延迟
        menu = 最大延迟
        format = 最大延迟时间 %f 秒

        ++ loss
        sorter = Loss(entries=>5)
        title = 丢包率
        menu = 丢包率
        format = 丢包 %f

        ++ median
        sorter = Median(entries=>5)
        title = 中间数据包延迟
        menu = 中间数据包延迟
        format = 中间数据包延迟 RTT %f 秒

        + overview

        width = 600
        height = 50
        range = 10h

        + detail

        width = 600
        height = 200
        unison_tolerance = 2
        # 图表横坐标,这里改为 1小时,1天,10天,360天,更符合习惯.
        "Last 1 Hours" 1h
        "Last 24 Hours" 24h
        "Last 10 Days" 10d
        "Last 360 Days" 360d

        #+ hierarchies
        #++ owner
        #title = Host Owner
        #++ location
        #title = Location
    • Targets 内则是监控的主体,主要工作量在这里了,这里是监控本地到各个运营商当地 DNS 的通路,当地 DNS 一般很少变动,因此具有参考意义.但是 N多的DNS 开始过滤外地的请求,连外地的 icmp 都直接不相应,好在最后收集了全了现在还能用的.

      • 附录: 各地DNS地址,多换几个试试.

        https://blog.csdn.net/huangbaokang/article/details/80419620

      • Targets 基础的格式还是比较好懂的.说明在注释了.

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        55
        56
        57
        58
        59
        60
        61
        62
        63
        64
        65
        66
        67
        68
        69
        70
        71
        72
        73
        74
        75
        76
        77
        78
        *** Targets ***
        probe = FPing # 无需修改

        menu = Top
        title = Network Latency Grapher
        remark = Welcome to the SmokePing website of WORKS Company. \
        Here you will learn all about the latency of our network.

        + Other # 第一层级
        menu = 国内线路
        title = 国内线路
        ++ dianxin #电信
        menu = 电信网络监控
        title = China Telecom
        host = /Other/dianxin/dianxin-bj /Other/dianxin/dianxin-sh / Other/dianxin/dianxin-gz
        +++ dianxin-bj
        menu = Telecom BeiJing
        title = Telecom BeiJing
        alerts = someloss
        host = 202.96.199.133

        +++ dianxin-sh
        menu = Telecom ShangHai
        title = Telecom ShangHai
        alerts = someloss
        host = 202.96.209.133

        +++ dianxin-gz
        menu = Telecom GuangZhou
        title = Telecom GuangZhou
        alerts = someloss
        host = 218.20.227.1

        ++ liantong #联通
        menu = 联通网络监控
        title = China Unicom
        host = /Other/liantong/liantong-bj /Other/liantong/liantong-sh /Other/liantong/liantong-gz

        +++ liantong-bj
        menu = Unicom BeiJing
        title = Unicom BeiJing
        alerts = someloss
        host = 61.135.169.121

        +++ liantong-sh
        menu = Unicom ShangHai
        title = Unicom ShangHai
        alerts = someloss
        host = 203.95.1.1

        +++ liantong-gz
        menu = Unicom GuangZhou
        title = Unicom GuangZhou
        alerts = someloss
        host = 210.21.4.130

        ++ yidong # 移动
        menu = 移动网络监控
        title = China Mobile
        host = /Other/yidong/yidong-bj /Other/yidong/yidong-sh /Other/yidong/ yidong-gz

        +++ yidong-bj
        menu = Mobile BeiJing
        title = Mobile BeiJing
        alerts = someloss
        host = 221.130.33.52

        +++ yidong-sh
        menu = Mobile ShangHai
        title = Mobile ShangHai
        alerts = someloss
        host = 58.34.8.36

        +++ yidong-gz
        menu = Mobile GuangDong
        title = Mobile GuangDong
        alerts = someloss
        host = 211.136.192.6
  • 保存配置文件.

运行

  • 启动容器,大幅度更改了配置文件后,最好清除 /data 下数据.
    挂载 /config /data 到容器,启动.

    1
    2
    3
    4
    5
    6
    7
    8
    docker run \
    --name smokeping \
    -d \
    -p 80:80 \
    -e TZ=Asia/Shanghai \
    -v /data/smokeping/data:/data \
    -v /data/smokeping/config:/config \
    linuxserver/smokeping
  • 效果
    联通
    电信

docker-compose

  • docker-compose 的使用方法,不再明细,详情见之前的博文.这里附上配置文件.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    version: "2"
    services:
    smokeping:
    image: linuxserver/smokeping
    container_name: smokeping
    environment:
    - TZ=Asia/Shanghai
    ports:
    - 80:80
    volumes:
    - /data/smokeping/config:/config
    - /data/smokeping/data:/data
    mem_limit: 4096m
    restart: always