【DashDot】好看的服务器仪表盘

# DashDot介绍

DashDot是一个服务器仪表盘,可以实时展示服务器运行状况,系统版本、CPU、硬盘、内存和网络等信息,有着非常漂亮界面。提供Docker部署方式,占用资源少,能够在性能较低的VPS上运行。

演示:https://dash.doduo.cc

dashdot-view

# 环境要求

本教程使用Docker方式部署,本地需要有Docker环境。

1
2
3
4
$ docker --version
Docker version 20.10.5+dfsg1, build 55c4c88
$ docker-compose --version
docker-compose version 1.25.0, build unknown

如果执行完上两条命令,并没有显示版本信息,则说明需要搭建Docker环境。ubuntu/debian环境,可以执行以下命令

1
2
3
apt-get update
apt-get install docker.io
apt-get install docker-compose

注意:国内机器需要使用国内源,否则会拉取镜像比较慢

# 创建docker-compose.yml

首先创建一个空文件夹,然后新建docker-compose.yml,写入如下内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
version: '3'

services:
  dash:
    image: mauricenino/dashdot:latest
    restart: unless-stopped
    privileged: true
    ports:
      - '3001:3001'
    volumes:
      - /:/mnt/host:ro
    environment:
      DASHDOT_ALWAYS_SHOW_PERCENTAGES: 'true'
      DASHDOT_SPEED_TEST_INTERVAL: 43200
      DASHDOT_OVERRIDE_NETWORK_INTERFACE_SPEED: 1000
      DASHDOT_OVERRIDE_NETWORK_SPEED_UP: 861600000
      DASHDOT_OVERRIDE_NETWORK_SPEED_DOWN: 563100000
      DASHDOT_SHOW_HOST: 'true'

部分变量的说明

变量 说明
DASHDOT_ALWAYS_SHOW_PERCENTAGES 在每个组件的右上角展示资源当前所占百分比
DASHDOT_SPEED_TEST_INTERVAL 网络速度测试,默认240(4个小时),刷新一次,比较消耗流量,如不需要可以将此值调大一些
DASHDOT_OVERRIDE_NETWORK_INTERFACE_SPEED 服务器网络带宽,这里有时会测不准,所以直接写上固定值,1000(10 GB/s)
DASHDOT_OVERRIDE_NETWORK_SPEED_UP 网络上行,填写固定值,默认可以不填写,每次执行网络速度测试会更新(100000000 for 100 Mb/s, because it is 100 * 1000 * 1000)
DASHDOT_OVERRIDE_NETWORK_SPEED_DOWN 网络下行,填写固定值,默认可以不填写(100000000 for 100 Mb/s, because it is 100 * 1000 * 1000)
DASHDOT_SHOW_HOST 显示自定义主机,用域名访问时有效

完整的配置,可以查看config文档。

# 部署

执行如下命令后,访问http://localhost:3001 。

1
docker-compose up -d

可以参考我的服务器演示https://dash.doduo.cc

# 注意坑点

如果将该服务绑定到域名,需要注意一下IP泄漏问题。在服务部署完成之后,会提供有对外的API,可以看API文档,任意一个用户访问http://xxx.com/info,会得到如下信息

1
{"os":{"arch":"x64","distro":"Debian GNU/Linux","kernel":"5.10.0-8-amd64","platform":"linux","release":"11","uptime":12152768.56,"dash_version":"5.1.3","dash_buildhash":"386191c474bac123a412312355bf77a8b4953e8645b"},"cpu":{"brand":"Intel","model":"Xeon® E5-2697 v2","cores":2,"threads":2,"frequency":2.7},"ram":{"size":1023594496,"layout":[{"brand":"Red Hat","type":"RAM","frequency":null}]},"storage":[{"size":37580963840,"disks":[{"device":"vda","brand":"vda","type":"HDD"}]}],"network":{"interfaceSpeed":0,"speedDown":47293873.86119574,"speedUp":21163328.504007757,"type":"Wired","publicIp":"123.123.123.123"},"gpu":{"layout":[]}}

publicIp就是服务器的ip,如果使用nginx,可以禁止某个路径的访问,类似下面这样,避免ip泄漏。

1
2
3
location /info {
    deny all;
}

# 参考链接

Licensed under CC BY-NC-SA 4.0