munin插件总是超时

munin插件总是超时

我想用 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 插件时使用它。

相关内容