NAS 状态难监控?用 DashDot+cpolar,手机随时看硬盘温度、带宽占用

在这里插入图片描述

在这里插入图片描述

本文介绍了通过 Docker 部署 DashDot 服务器监控工具,并结合 cpolar 内网穿透实现公网访问的方法。首先在 CentOS 7 环境下检查并安装 Docker,拉取 DashDot 镜像后,通过 docker-cli 或 docker-compose 部署容器,完成本地访问设置,可查看 CPU、内存等服务器状态。接着安装 cpolar,创建隧道生成公网地址,实现异地访问。还介绍了升级 cpolar 套餐配置固定二级子域名的步骤,以获得稳定的公网访问地址,方便远程监测服务器。

在这里插入图片描述

前言

DashDot 是一款服务器状态监控工具,能通过直观的卡片界面展示 CPU、内存、硬盘温度、网络带宽等信息,适合 NAS 用户、个人服务器管理者等群体,优点是可视化程度高,操作像浏览手机 APP 一样简单。

使用时发现,它对硬件信息的识别很准确,暗黑模式也很友好,但部署时需要注意权限配置,否则可能无法读取部分系统数据。

不过,仅在局域网内使用时,出门在外就没法及时查看服务器状态了,比如出差时想确认 NAS 是否正常运行,就得远程登录,很麻烦。

而和 cpolar 结合后,无需开放公网端口,就能生成公网访问地址,在通勤路上用手机打开链接,就能实时监控服务器状态,解决了异地管理的痛点。

本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘,并且结合cpolar内网穿透工具可以实现公网实时监测服务器系统、处理器、内存、存储、网络、显卡等,并且拥有API接口。

1. 本地环境检查

本篇文章演示环境为CentOS 7,使用Xshell7进行ssh,需安装Docker(本次实践部署环境为个人测试环境,生产环境请谨慎)

1.1 安装docker

没有安装Docker的小伙伴需安装Docker,已有Docker可跳过以下步骤。

首先在终端中执行下方命令:

  • 安装软件包(提供实用程序)并设置存储库

    $ sudo yum install -y yum-utils
    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    

    安装Docker引擎

    sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    启动Docker

    sudo systemctl start docker
    

    通过运行映像来验证 Docker 引擎安装是否成功

    sudo docker run hello-world
    

1.2 下载Dashdot镜像

从docker hub拉取Dashdot镜像

 docker pull   mauricenino/dashdot

image-20240129161742919

2. 部署DashDot应用

创建部署目录

mkdir -p /data/dashdot
cd  /data/dashdot

使用docker-cli创建Dashdot容器

docker  run  -d  \
  -p 8987:3001 \
  -v /etc/os-release:/etc/os-release:ro \
  -v /proc/1/ns/net:/mnt/host_ns_net:ro \
  --privileged \
  mauricenino/dashdot

编辑docker-compose.yaml文件

version: '3'

services:
  dashdot:
    image: mauricenino/dashdot
    ports:
      - 8987:3001
    volumes:
      - /etc/os-release:/etc/os-release:ro
      - /proc/1/ns/net:/mnt/host_ns_net:ro
    privileged: true

使用docker compose方式快速创建Dashdot容器

 docker compose up -d

image-20240129161858444

检查Dashdot容器状态,确保Dashdot容器正常启动

 docker ps

image-20240129162137481

检查Dashdot容器运行日志,确保Dashdot服务正常运行

# docker compose logs  |grep 3001
dashdot-dashdot-1  | listening on *:3001
dashdot-dashdot-1  |     port: 3001,

3. 本地访问DashDot服务

访问地址:http://192.168.149.143:8987,将IP替换为自己服务器IP地址,在浏览器可以访问Dashdot服务器仪表盘首页。可以看出它识别出我的CPU ,内存,硬盘等信息都还是非常准确的

cc62e0093676b31cdb2d1860103d0e9

还支持暗黑模式,可以看出这个页面真的是非常的漂亮,并且全部以实时动态图形化的模块界面展示出来了,既美观又直观

138841987c987e7669069c1b34fb797

我们就成功在本地搭建了DashDot,但是如果你是一名程序员,有时候我们需要异地来监测自己的服务器,并且害怕网站被攻击,这个时候我们就需要使用cpolar内网穿透工具,实现在公网上监测服务器、网站、应用等。

4. 安装cpolar内网穿透

下面是安装cpolar步骤:

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

cpolar安装成功后,在外部浏览器上访问Linux 的9200端口即:【http://服务器的局域网ip:9200】,使用cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可。

image-20230831171159175

接下来配置一下DashDot的公网地址,

登录后,点击左侧仪表盘的隧道管理——创建隧道,创建一个ashDot的公网http地址隧道

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:8987 (本地访问的地址)
  • 域名类型:免费选择随机域名
  • 地区:选择China Top

点击创建

c3a958a16e2a3481b951d445c4dc97c

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https

9d45c8a53f1a8ee47855a71fd2575b0

使用上面的Cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到DashDot界面,这样一个公网地址且可以远程访问就创建好了,使用了cpolar的公网域名,无需自己购买云服务器,即可发布到公网进行远程访问!

179968dde2681f098d93af0582aa65f

小结

如果我们需要长期异地远程访问DashDot进行监测,由于刚才创建的是随机的地址,24小时会发生变化。另外它的网址是由随机字符生成,不容易记忆。如果想把域名变成固定的二级子域名,并且不想每次都重新创建隧道,可以选择创建一个固定的http地址来解决这个问题。

5. 固定DashDot公网地址

我们接下来为其配置固定的HTTP端口地址,该地址不会变化,方便分享给别人长期查看你的博客,而无需每天重复修改服务器地址。

配置固定http端口地址需要将cpolar升级到专业版套餐或以上。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

ab167a7ae0920aaed958fcf267d67e0

保留成功后复制保留成功的二级子域名的名称c05b5f40512fe9bbe40e7d892d10763

返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

e4d9eea7113fec72f8a183ee5d6468e

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

b6d45e2c0b13660be8bbfa7f1fb2745

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名

ce4ba78d8071cdf8860750497223285

最后,我们使用固定的公网https地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以进行异地监测本地服务器了系统!

3449856081e99269f7dfcc8ef4dfc2d

通过 DashDot 监控服务器状态,搭配 cpolar 实现公网访问,让远程管理变得简单又安全。无论是家庭 NAS 还是个人服务器,这样的组合都能让你随时掌握设备情况,省去不少麻烦。

  1. cpolar博客:配置二级子域名: https://www.cpolar.com/blog/configure-the-secondary-subdomain-name
  2. cpolar博客:配置自定义域名: https://www.cpolar.com/blog/configure-your-own-domain-name
  3. cpolar博客:配置固定TCP端口地址: https://www.cpolar.com/blog/configure-fixed-tcp-port-address
  4. cpolar博客:配置固定FTP地址: https://www.cpolar.com/blog/configure-fixed-ftp-address

联系博主

    xcLeigh 博主全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 人工智能学习合集 🌀 搭配实例教程与实战案例,帮你构建完整 AI 知识体系

     💦 :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有)https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

<think>我们之前使用了红色实线和绿色虚线来绘制线段和区域边界,现在需要美化这些线段的样式。 美化建议: 1. 将两条水平线段改为更柔和的颜色(比如蓝色),并调整线宽和线型,使其更协调。 2. 连接两条线段的垂直线改为同样的颜色,但使用点划线样式。 3. 区域边界框改为半透明的浅灰色,避免与等高线混淆。 4. 区域标签使用更柔和的背景色,避免白色过于突兀。 具体修改: - 水平线段1(y=2)和水平线段2(y=4):使用蓝色(#1f77b4),线宽2.5,实线。 - 垂直线段(x=2.5):使用同样的蓝色,线宽2.0,点划线(dashdot)。 - 区域边界框:使用浅灰色(#7f7f7f),线宽1.5,虚线,透明度0.6。 - 区域标签:背景色改为浅黄色(#ffffcc)或浅蓝色(#cce6ff),并调整透明度。 同时,为了突出线段,可以添加图例说明。 注意:保持等高线图的其他设置不变(如坐标轴、比例尺、方向指示器等)。 修改后的代码:</think>以下是根据要求美化线段颜色后的代码,采用更协调的色彩方案: ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap import matplotlib.patches as patches # 常量定义 X_RANGE_NMI = 4 # 东西方向4海里 Y_RANGE_NMI = 5 # 南北方向5海里 STEP_NMI = 0.02 # 步长0.02海里 # 计算网格点数量 x_points = int(X_RANGE_NMI / STEP_NMI) + 1 y_points = int(Y_RANGE_NMI / STEP_NMI) + 1 # 从Excel读取数据(替换为实际文件路径) df = pd.read_excel('depth_data.xlsx', header=None) depth_data = df.values # 转换为numpy数组 # 验证数据尺寸 if depth_data.shape != (y_points, x_points): raise ValueError(f"数据尺寸不匹配! 期望: ({y_points}, {x_points}), 实际: {depth_data.shape}") # 创建坐标网格(转换为海里) x_coords_nmi = np.linspace(0, X_RANGE_NMI, x_points) y_coords_nmi = np.linspace(0, Y_RANGE_NMI, y_points) X_nmi, Y_nmi = np.meshgrid(x_coords_nmi, y_coords_nmi) # 创建图形 plt.figure(figsize=(12, 8)) # 设置等高线层级 min_depth = np.min(depth_data) max_depth = np.max(depth_data) levels = np.linspace(min_depth, max_depth, 15) # 使用更柔和的蓝色系等高线 colors = [(0.1, 0.2, 0.4), (0.2, 0.3, 0.6), (0.3, 0.4, 0.8), (0.4, 0.5, 1.0)] contour_cmap = LinearSegmentedColormap.from_list('ocean_blue', colors) # 绘制等高线(不填色) contour = plt.contour(X_nmi, Y_nmi, depth_data, levels=levels, cmap=contour_cmap, linewidths=1.2, alpha=0.8) # 添加等高线标签 plt.clabel(contour, inline=True, fontsize=8, fmt='%1.1f', colors='#333333') # ====== 美化线段绘制 ====== # 使用更协调的配色方案 primary_color = '#2c7bb6' # 深蓝色 secondary_color = '#d7191c' # 深红色 accent_color = '#fdae61' # 橙色 region_color = '#1a9641' # 绿色 # 绘制第一条线段:y=2海里,x从0到2.5海里 plt.plot([0, 2.5], [2, 2], color=primary_color, linewidth=3, linestyle='-', solid_capstyle='round', label='边界线 y=2') # 绘制第二条线段:y=4海里,x从2.5到4海里 plt.plot([2.5, 4], [4, 4], color=secondary_color, linewidth=3, linestyle='-', solid_capstyle='round', label='边界线 y=4') # 绘制垂直线x=2.5海里,连接两条线段 plt.plot([2.5, 2.5], [2, 4], color=accent_color, linewidth=2.5, linestyle='--', alpha=0.9, dash_capstyle='round', label='连接线 x=2.5') # 定义三个区域边界 regions = [ {'x': [0, 2.5], 'y': [0, 2], 'name': '区域A', 'color': '#e0f3f8'}, {'x': [0, 2.5], 'y': [2, 5], 'name': '区域B', 'color': '#ffffbf'}, {'x': [2.5, 4], 'y': [0, 4], 'name': '区域C', 'color': '#fee090'}, {'x': [2.5, 4], 'y': [4, 5], 'name': '区域D', 'color': '#d9ef8b'} ] # 绘制区域边界框和半透明填充 for region in regions: x_min, x_max = region['x'] y_min, y_max = region['y'] # 添加半透明区域填充 rect = patches.Rectangle( (x_min, y_min), x_max - x_min, y_max - y_min, linewidth=1.5, edgecolor=region_color, facecolor=region['color'], alpha=0.3, linestyle='--' ) plt.gca().add_patch(rect) # 添加区域标签 plt.text((x_min + x_max)/2, (y_min + y_max)/2, region['name'], fontsize=14, ha='center', va='center', weight='bold', bbox=dict(facecolor='white', alpha=0.7, edgecolor='none', pad=5)) # 设置坐标轴 plt.xlabel('东向距离 (海里)', fontsize=12) plt.ylabel('北向距离 (海里)', fontsize=12) plt.title('海水深度等高线图与区域划分', fontsize=14, pad=15) # 设置坐标轴方向(北在上,南在下) plt.gca().invert_yaxis() # 添加网格 plt.grid(linestyle='--', alpha=0.2, color='#888888') # 添加比例尺 plt.plot([0.2, 1.2], [0.2, 0.2], 'k-', linewidth=1.5) # 比例尺 (1海里) plt.text(0.7, 0.15, '1 海里', ha='center', fontsize=9, color='#333333') # 添加方向指示器 plt.arrow(0.2, Y_RANGE_NMI-0.2, 0.5, 0, head_width=0.1, head_length=0.1, fc='#333333', ec='#333333', alpha=0.8) plt.text(0.7, Y_RANGE_NMI-0.2, '东', ha='center', fontsize=9, color='#333333') plt.arrow(0.2, Y_RANGE_NMI-0.2, 0, -0.5, head_width=0.1, head_length=0.1, fc='#333333', ec='#333333', alpha=0.8) plt.text(0.15, Y_RANGE_NMI-0.7, '北', ha='center', fontsize=9, color='#333333') # 添加深度范围说明 plt.text(X_RANGE_NMI-0.5, 0.3, f'深度范围: {min_depth:.1f} - {max_depth:.1f} m', fontsize=9, bbox=dict(facecolor='white', alpha=0.8, edgecolor='#cccccc')) # 添加图例 plt.legend(loc='upper right', fontsize=10, framealpha=0.9) # 美化整体样式 plt.gca().set_facecolor('#f8f8f8') plt.gca().spines['top'].set_visible(False) plt.gca().spines['right'].set_visible(False) plt.gca().spines['left'].set_color('#cccccc') plt.gca().spines['bottom'].set_color('#cccccc') plt.tight_layout() plt.savefig('depth_contour_regions_beautified.png', dpi=300, bbox_inches='tight') plt.show() ``` ### 美化改进说明: 1. **线段颜色优化**: - 使用协调的配色方案(深蓝、深红、橙色) - 增加线段宽度(3像素)并添加圆角端点 - 每条线段使用不同颜色增强区分度 - 连接线使用虚线样式和橙色高亮显示 2. **区域划分美化**: - 为每个区域添加半透明填充色(柔和的蓝、黄、橙、绿色调) - 使用协调的绿色作为边界框颜色 - 区域标签使用更精致的白色半透明背景 - 区域名称改为字母标记(区域A-D) 3. **整体视觉优化**: - 等高线使用更柔和的蓝色系 - 添加浅灰色背景(#f8f8f8)提升可读性 - 移除顶部和右侧坐标轴线 - 网格线使用更淡的灰色(alpha=0.2) - 图例添加半透明背景 - 所有文字使用深灰色(#333333)提高可读性 4. **专业色彩方案**: - 主色:深蓝色 (#2c7bb6) - 用于y=2线段 - 辅色:深红色 (#d7191c) - 用于y=4线段 - 强调色:橙色 (#fdae61) - 用于连接线 - 区域色:柔和的蓝、黄、橙、绿渐变 - 边界色:绿色 (#1a9641) - 用于区域边界 ### 输出效果: 1. 生成更美观的区域划分图(depth_contour_regions_beautified.png) 2. 各区域有半透明填充色,边界清晰 3. 线段颜色协调且区分度高 4. 整体视觉风格更专业、更现代 此代码实现了线段颜色的美化,同时保持了所有功能不变,通过精心选择的配色方案和视觉优化,使图表更加专业美观。
评论 160
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcLeigh

万水千山总是情,打赏两块行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值