内外网找了半天,最后自行研究解决,记录一下。
不显示的原因
首先netdata监控温度的插件有2个,老的chart.d下的sensors和新的python.d下的sensors,官方推荐用新的python.d。
python.d的原理大概是sensors指令,chart.d的原理是找/sys/路径,我使用的openwrt其实两者都可以实现,老的openwrt可能不能sensors指令,新的可以了。
但是测试了两个方式都死活不出来,参考了 2016年的issue ,最后在一个比较新的 issue 下,发现有命令可以debug具体sensors模块看为啥拿不到数据,才发现问题所在:
chart.d方式错误原因:没有timeout指令
1 2 |
# /usr/lib/netdata/plugins.d/charts.d.plugin sensors 2021-10-25 23:08:03: charts.d: WARNING: main: command 'timeout' is not found in /usr/sbin:/usr/bin:/sbin:/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin. |
python.d方式错误原因:没有yaml模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# /usr/lib/netdata/plugins.d/python.d.plugin sensors Traceback (most recent call last): File "/usr/lib/netdata/python.d/python_modules/bases/loaders.py", line 13, in <module> from yaml import SafeLoader as YamlSafeLoader ModuleNotFoundError: No module named 'yaml' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/netdata/plugins.d/./python.d.plugin", line 69, in <module> from bases.loaders import load_config File "/usr/lib/netdata/python.d/python_modules/bases/loaders.py", line 17, in <module> from yaml import SafeLoader as YamlSafeLoader ModuleNotFoundError: No module named 'yaml' |
知道真相的我眼泪掉下来,看来解决问题还是得找尽量源头的debug方式来先找出问题,瞎测试毫无意义。
因为本身对python不熟,对openwrt下的python怎么装模块更加不熟,所以还是用老的chart.d插件。
解决方案
1、安装timeout:opkg install coreutils-timeout
2、进入/etc/netdata
3、使用./edit-config charts.d.conf
来编辑配置文件,这个edit-config等于是一个配置工具能够从/usr/lib拉取默认配置过来,在配置里最后加入sensors=force
。不加一定不会有温度,原因未知。
4、用/usr/lib/netdata/plugins.d/charts.d.plugin sensors
测一下,如果有一直跳数据出来,就说明成功了。
5、Openwrt的版本默认可能关闭了chart.d插件,编辑/etc/netdata/netdata.conf
把charts.d = no
改为charts.d = yes
或直接注释掉那一行,若没有这行则不需要
6、重启netdata: /etc/init.d/netdata restart
更好的解决方案
因为和Netdata的开发成员沟通后,表示python效率会更高,虽然用chart方式也没问题。最后还是安装了python-yaml,也可以直接解决:opkg install python3-yaml
不要忘记编辑配置文件把python插件两个开关打开:
1、/etc/netdata/netdata.conf
中 python.d = no
改为 python.d = yes
或直接注释掉那一行,同样如果没有就不理会
2、用 ./edit-config python.d.conf
创建配置文件并把里面的enabled改为yes
效果
2022.09.17
今天在一个更新的openwrt上开启,发现连python都没有,安装python3-yaml
会自动安装python,无法直接测温,
还需安装: opkg install python3-logging python3-ctypes lm-sensors
方可正常测出温度~