[munin]Error output from cpuspeed /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq


munin-nodeでcpupeedがうまく動いていないことが判明しました。

# tailf /var/log/munin-node/munin-node.log

Error output from cpuspeed:
    cat: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq: No such file or directory
    cat: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq: No such file or directory
    cat: /sys/devices/system/cpu/cpuidle/cpufreq/cpuinfo_max_freq: No such file or directory
    cat: /sys/devices/system/cpu/cpuidle/cpufreq/cpuinfo_min_freq: No such file or directory

調べていたらタイムリーに同じ現象に遭遇された方の記事を発見しました。

Muninでcpu clock監視 | Null帖

そもそもcpuspeedは現在は使えないということで、記事に書かれていたコードをお借りして対応したところエラーがでなくなりました。

助かりました。

今回、chefのレシピに書いていたので、断片的ですがメモを残しておきます。

  • munin-node用のレシピ(site-cookbooks/muninが存在する前提)にcpuspeedを置き換える設定を追加
# site-cookbooks/munin/recipes/node.rb

# ・・・色々設定

# cpuspeed
cookbook_file "/usr/share/munin/plugins/cpuspeed" do
  source "cpuspeed"
end

link "/etc/munin/plugins/cpuspeed" do
  to "/usr/share/munin/plugins/cpuspeed"
  owner 'root'
  group 'root'
  notifies :restart, 'service[munin-node]'
end

# ・・・色々設定

  • site-cookbooks/munin/files/default/cpuspeed に以下を保存
#!/bin/bash
#
# Munin-plugin to monitor the cpu speeds of all available cpus
#
# Armin Haaf, 4-11-2007
# Licensed under: GNU GPL

MAX_CORES=1024


if [ "$1" = "config" ]; then
    echo "graph_title CPU speed"
    echo 'graph_category system'
    echo "graph_info This graph shows the cpu-speed for each core, as reported by the kernel"

    i=0
    while [ $i -lt $MAX_CORES ]
    do
        MODEL=`cat /proc/cpuinfo | grep -A 8 "processor.*:.*$i" | grep "model name"`
        if [ $? -ne 0 ]
        then
            break
        fi
        MODEL=`echo $MODEL | cut -c 12-`
        echo "core$i.label Core $i speed in MHz"
        echo "core$i.info Core $i speed in MHz $MODEL"
        echo "core$i.type GAUGE"
        i=$[$i+1]
    done
    exit 0
fi

i=0
while true
do
    cat /proc/cpuinfo | grep -A 8 "processor.*:.*$i" > /dev/null
    if [ $? -ne 0 ]
    then
        break
    fi
    echo -n "core$i.value "
    cat /proc/cpuinfo | grep -A 8 "processor.*:.*$i" | grep "cpu MHz" | cut -c 12- | cut -f 1 -d .
    i=$[$i+1]
done

エラーが起きた時に素早く原因を突き止めて対応できるようになりたいものです。

chefに色々ハマりました。

どんどん仕組み化していきたいです。