我想用 munin 制作 Linux 中 ttyACM0 的图表,但是 munin 无法创建图表。我在“munin-node.log”中找到了信息,显示“Service 'temperature' 超时”。所以我将超时时间改为 60 或 120 /munin/plugin-conf.d/munin-node
,但是没有用。它也超时了。
这是我的代码的一部分:
if [ "$1" = "config" ]; then
echo 'graph_title Temperature of board'
echo 'graph_args --base 1000 -l 0'
echo 'graph_vlabel temperature(°C)'
echo 'graph_category temperature'
echo 'graph_scale no'
echo 'graph_info This graph shows the temperature of board'
for i in 1 2 3 4 5; do
case $i in
1)
TYPE="Under PCB"
;;
2)
TYPE="HDD"
;;
3)
TYPE="PHY"
;;
4)
TYPE="CPU"
;;
5)
TYPE="Ambience"
;;
esac
name=$(clean_name $TYPE)
if [ "$TYPE" != "NA" ]; then
echo "temp_$name.label $TYPE";
fi
done
exit 0
fi
for i in 1 2 3 4 5; do
case $i in
1)
TYPE="Under PCB"
VALUE=$(head -1 /dev/ttyACM0 | awk '{print $1}')
;;
2)
TYPE="HDD"
VALUE=$(head -1 /dev/ttyACM0 | awk '{print $2}')
;;
3)
TYPE="PHY"
VALUE=$(head -1 /dev/ttyACM0 | awk '{print $3}')
;;
4)
TYPE="CPU"
VALUE=$(head -1 /dev/ttyACM0 | awk '{print $4}')
;;
5)
TYPE="Ambience"
VALUE=$(head -1 /dev/ttyACM0 | awk '{print $5}')
;;
esac
name=$(clean_name $TYPE)
if [ "$TYPE" != "NA" ]; then
echo "temp_$name.value $VALUE"
fi
答案1
从 Munin 的角度来看,您的插件代码看起来是正确的。
根据此代码,我怀疑写入 ttyACM0 的任何内容都没有完成,或者在写入任何内容之前需要进行轮询。如果 /dev/ttyACM0 中没有任何内容可读取,则 head 调用将阻塞(等待),直到有更多数据可用。
如果这是一个商业温度传感器,我会检查是否有支持的命令行工具,并在编写 munin 插件时使用它。