夏天到了,路由器明显变热,想监控下主路由的温度,奈何TP的app只有速度显示,而且TP的路由开放性一直不强,不过偶然看到这篇文章:关于在6088官方docker中获取硬件温度数据的一些尝试与疑问,决定尝试一下。
先放效果图:
能够看到CPU、内存、温度和速度等信息,还算比较满意。
首先是环境:TL-XDR6088 1.0.31(该版本包含新版本的docker,与6680、7280、10390的功能一致)
插好U盘在路由管理中打开Doker功能,随后使用ip:1180进入doker管理界面
在镜像拉取界面拉取netdata
如果由于网络环境无法直接拉取,可以在能够拉取的环境下拉取下来,使用docker save导出镜像,再到镜像管理中导入,注意需要拉取aarch64(arm64)架构的镜像,可参考使用 docker pull 拉取特定架构容器镜像
导入镜像后在容器部署中进行部署即可。
很快即可部署成功,之后通过路由ip:19999即可访问
但是此时是没有温度监控数据的,需要进容器管理-终端命令中修改两个文件(参考:Netdata 添加 温度检测)
su #root权限
cd /etc/netdata
./edit-config charts.d.conf
加入sensor=force
cd /etc/netdata
./edit-config python.d.conf
加入sensor: no
保存重启后即可看到温度信息
由于6088的内存仅有512M,建议参考zabbix、netdata和glances,做最简单的系统资源监控文章中netdata部分进行优化,优化后在镜像管理-性能监控中查看CPU占用在1%、内存60M左右。
如果只需要在netdata中监控做到这里即可,需要加入HA可以使用相应的netdata集成在configuration.yaml中加入。可参考以下代码,data_group等可能不同,可参考官方文档自行查找修改。
sensor:
- platform: netdata
host: "路由器ip"
port: "端口"
name: TP-XDR6088
resources:
temperature:
data_group: sensors.temp_thermal_zone0_thermal_thermal_zone0_thermal_zone0
element: sys_devices_virtual_thermal_thermal_zone0_temp
icon: mdi:thermometer
cpu_idle:
data_group: system.cpu
element: idle
icon: mdi:cpu-64-bit
ram_used:
data_group: system.ram
element: used
icon: mdi:memory
由于传感器数据为cpu空闲百分比以及内存用量,需要再通过template集成对传感器数据进行计算转化添加unique_id,可参考官方文档在configuration.yaml中转化为cpu使用百分比及内存使用百分比。(以下代码供参考)
template:
- sensor:
- name: "xdr_6088_temp"
unique_id: tp_xdr_6088_temp
unit_of_measurement: "℃"
state: "{{ states('sensor.tp_xdr6088_temperature') | float }}"
icon: mdi:thermometer
- name: "xdr_6088_cpu_useage"
unique_id: tp_xdr_6088_cpu_useage
unit_of_measurement: "%"
state: "{{ 100 - states('sensor.tp_xdr6088_cpu_idle') | float }}"
icon: mdi:cpu-64-bit
- name: "xdr_6088_ram_useage"
unique_id: tp_xdr_6088_ram_useage
unit_of_measurement: "%"
state: "{{ (states('sensor.tp_xdr6088_ram_used') | float / 512) * 100}}"
icon: mdi:memory
保存重启HA后即可在设备实体中看到温度、cpu、内存等实体信息
由于netdata只能监控容器内的网络情况,路由实际网络需要通过UPnP/IGD集成添加:
最后根据自己的喜好做成卡片就行啦,开始的效果图中使用的图表是mini-graph-card。