家用小服务器 篇九:给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

2023-12-17 13:04:07 48点赞 385收藏 28评论

前言

家用服务器/NAS/HTPC没有自带的屏幕,一般通过远程SSH或者web端方式查看系统和硬件的运行情况,比如CPU负载、IO、网络和温度等指标。

近期在B站发现一款叫“SD2小电视”的开源硬件,核心是一块ESP8266开发板,视频介绍可以通过网络获取小主机/NAS的运行信息,固件“shelo / RouterMonitor”已经开源。

B站:【给你的路由器和NAS加块OLED监控屏幕吧!只需30元拥有高端路由器的体验 RAX3000M | 360 T7 | 小米 AX3000T】 https://b23.tv/DxMNmrM

于是,在TB下单一款SD2小电视,到手时已经刷了可以显示时间和气象信息的固件,如下图。

原面板原面板

通过重新烧录代码到这个硬件,可以实现监控小主机/NAS。开源项目“shelo / RouterMonitor”的原理是:首先在需要被监控的设备上部署Netdata,然后SD2通过网络访问Netdata的api获取设备运行的指标,显示到小屏幕上。

部署Netdata

Netdata是一款Linux系统实时监控软件,具有高可配置性和花哨的展示页面,有点类似Prometheus+Grafana。我们需要它来采集小主机/NAS的系统指标(CPU、网络上下行、温度等),然后SD2从局域网获取Netdata采集的这些指标。

在需要监控的小主机或者NAS上部署netdata,可以采用直接安装或者docker方式部署。

这里采用docker方式部署netdata,部署脚本可以从官网获取。

这里将配置文件netdata.conf从本地映射到容器内部,这样可以使用自定义的配置文件。获取配置文件方法:(1)用官网脚本快速部署容器,然后浏览器访问ip:19999/netdata.conf可以获取默认的配置文件; (2)用官网脚本快速部署容器,然后在SSH中curl -o ./netdata.conf http://localhost:19999/netdata.conf 下载到本地,再修改。如果无自定义配置文件的需求,直接使用官网的脚本即可。

我自己使用的脚本如下,如使用,注意修改目录。

sudo docker run -d --name=netdata
--pid=host
--network=host
-v /home/xxx/containers/netdata/netdataconfig/netdata.conf:/etc/netdata/netdata.conf
-v netdatalib:/var/lib/netdata
-v netdatacache:/var/cache/netdata
-v /etc/passwd:/host/etc/passwd:ro
-v /etc/group:/host/etc/group:ro
-v /etc/localtime:/etc/localtime:ro
-v /proc:/host/proc:ro
-v /sys:/host/sys:ro
-v /etc/os-release:/host/etc/os-release:ro
-v /var/log:/host/var/log:ro
-v /var/run/docker.sock:/var/run/docker.sock:ro
--restart unless-stopped
--cap-add SYS_PTRACE
--cap-add SYS_ADMIN
--security-opt apparmor=unconfined
netdata/netdata

登录netdata的页面:http://[ip]:19999,默认端口可以在配置文件中修改。

netdata页面netdata页面

netdata监控的指标极其丰富,涵盖了硬件、网络、进程、容器、传感器等。

从netdata对自己这个容器的监控可见,netdata对内存和cpu的占用还是比较少的。怕的就是监控软件自身占用较大的资源,那就适得其反了。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

准备编译环境

安装串口驱动

下载CH340驱动程序

CH340驱动CH340驱动

到windows设备管理器中确认是否安装成功

串口驱动安装成功串口驱动安装成功

安装VS Code+PlatformIO

为了方便普通用户(如本人)编译和调试,可以安装VS Code+PlatformIO插件。

VS Code全称Visual Studio Code,是微软推出的跨平台/轻量级代码编辑IDE(还记得Visual Studio吗),安装极其简单。

VS CodeVS Code

然后在【扩展】中直接搜索“PlatformIO”安装。

VS Code+PlatformIOVS Code+PlatformIO

修改源代码

下载项目源代码

需要先安装git for windows,然后重启VS Code可以看到源码管理器。

从项目gitee仓库shelo / RouterMonitor中clone项目源代码到本地,输入gitee项目地址:https://gitee.com/dannylsl/routermonitor.git,依次如下图操作。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手拉取项目源码拉取项目源码

修改代码中的本地配置

重点来了,需要更改源代码中的配置信息(wifi名称、密码、指标等)才能将这个固件适用于自己的网络环境和Netdata。

1. 修改头文件中的IP信息

修改NetData.h文件中的IP。这个IP是被监控设备的IP(也就是Netdata所在主机的IP),直接修改NETDATA_HOST变量值。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

2. 修改代码中的wifi信息

将main.ino文件开头的字符串ssid修改为自己的无线wifi名称,注意需要2.4G信号;将字符串password修改为无线密码。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

3. 修改网卡信息

将main.ino文件下图红框位置的网卡名为自己的网卡名,是指需要被监控流量的网卡。格式为net.网卡名称

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

比如,我的网卡名称为eno1,则需要修改为net.eno1。我实际上是新建了一个变量,方便应用到不同设备。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

4. 修改内存大小

需要修改内存大小为实际值,否则屏幕上显示的内存使用百分比就会不准确。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

我的小主机内存是8G的,新建了一个全局const变量,然后修改对应位置。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

5. 修改温度传感器名称(指标名称)

先要到Netdata的Sensors页面找到对应温度传感器名称

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

修改读取温度代码中的指标名称

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

6. 修改cpu使用率计算方法(非必须)

先来看下cpu使用率指标返回的信息

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

原作者的cpu使用率取的是“max”值,根据实验“max”是上面"softirq","user","system","iowait"其中最大值。

我个人认为cpu使用率应该是"softirq"+"user"+"system"+"iowait",至少是应该用户态+内核态("softirq"+"user"+"system")。为什么要加上iowait,因为如果某个进程一直在等待IO完成这个iowait会变得很高(可能是存储有问题),相当于cpu时间消耗在等待io上了,所以将iowait加到cpu使用率计算上。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

因此,我修改了这部分代码:

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

备忘Jsonarray文档:https://arduinojson.org/v6/api/jsonarray/

烧录代码到SD2

切换到PlatformIO, 然后选择【Upload and Monitor】

PlatformIO -- Upload and MonitorPlatformIO -- Upload and Monitor从PC烧录到sd2从PC烧录到sd2

烧录完成,下面的控制台会打印一些调试信息,算是成功了

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

最后烧录完成的屏幕显示是这样的,原作者的布局还是挺合理的。

给家用小主机/NAS添加一块监控显示屏: Netdata部署,源码烧写,非专业玩家也能上手

将日常运行状态和开启Jellyfin播放视频时的状态放在下图,网速的单位是Byte。在不同运行状态下,监控指标还是准确的。

左:日常   右:Jellyfin硬解左:日常 右:Jellyfin硬解

总结

整个过程从部署Netdata到烧录源代码还算顺利,代码量非常少也挺易懂的,适合在这个基础上继续开发和改进。本文对应的源代码已上传到gxf1027 / RouterMonitor

最后感谢作者开源代码,开源是技术发展的推动力。

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1999元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1199元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2699元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1899元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

1825元起

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

1599元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1699元起

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

1899元起

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

1899元起

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

3499元起

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

2099元起

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

7480元起

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

799元起

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

1899元起

文中相关商品

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)
28评论

  • 精彩
  • 最新
  • 如果是DIY的NAS,单台监控可以改造机箱,改前面板放置屏幕。如果需要放置在桌面上或者多台监控,我自己用的方案是:Zabbix+开发一个APP,不受位置限制,有网就能看

    校验提示文案

    提交
    这个也满足有网就行放桌面的要求

    校验提示文案

    提交
    收起所有回复
  • 东西不错,只是看着有些麻烦。。。懒。。。

    校验提示文案

    提交
    其实还好,改几行代码

    校验提示文案

    提交
    收起所有回复
  • 30几块买了个白色的,懒得折腾,就当天气预报了,有空了再玩 [高兴]

    校验提示文案

    提交
    天气预报桌面摆件也不错

    校验提示文案

    提交
    是的,外观略粗糙彰显DIY精髓 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 请问使用pve部署的群晖,获取的是虚拟机里面的虚拟硬件数据还是宿主机的真实硬件数据?

    校验提示文案

    提交
    pve不知道。根据其他虚拟机的经验,直接安装netdata是获取虚拟硬件

    校验提示文案

    提交
    收起所有回复
  • 绿联直接手机APP看就可以

    校验提示文案

    提交
    这个品牌的都有吧,威联通也有的

    校验提示文案

    提交
    收起所有回复
  • 去看看
    去看看
    走系统接口,无需插件,无需修改编译代码,数据也不会存在netdata方案不准确的问题

    校验提示文案

    提交
    首先我这里不监控群晖,其次我没这个固件,可能要买你视频里的sd2才会给固件。

    校验提示文案

    提交
    收起所有回复
  • 我根据你的代码更改是CPU的部分,显示还是不准确,显示的要小一些,应为不动代码,能详细说说么?怎么把"softirq"+"user"+"system"+"iowait"都计算上

    校验提示文案

    提交
    你看我代码上面几行的注释,已经把这几个都包含在内了。也可以直接用api在浏览器看下返回的json验证下。我认为我这个代码获得的是netdata提供的准确数据。

    校验提示文案

    提交
    收起所有回复
  • VS Code+PlatformIO=答辩,这俩环境加一块摆弄半天还是安装不上,为啥不用Arduino呢

    校验提示文案

    提交
    5分钟从下载到装好,不知你怎么在装

    校验提示文案

    提交
    pio home挂梯子都打不开,网上试了好多办法

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 有没有iPad mini2屏的驱动版卖

    校验提示文案

    提交
  • 嫌电费不够高?

    校验提示文案

    提交
  • 回头折腾。先mark

    校验提示文案

    提交
  • 没必要,服务器安个monit,超出限制即告警,非常方便,我现在家里ubuntu server基本不用操心,年了,没出过问题

    校验提示文案

    提交
  • 收藏一下

    校验提示文案

    提交
  • 除了好看,好像也没啥用

    校验提示文案

    提交
  • 日常用根本就不用看这些

    校验提示文案

    提交
  • 厉害

    校验提示文案

    提交
  • 我的看天气一年了,很好,不折腾这个了,这没必要看这些信息

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
385
扫一下,分享更方便,购买更轻松