hello-world
webエンジニアのメモ。とりあえずやってみる。

[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に色々ハマりました。

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


Related #Chef

[chef]vagrant上の仮想マシンの場合のみ特定の処理を実行したい

aws上のAmazonLinuxとvagrant上のCentOS両方で使えるレシピを作成しようとした際に、vagrant上の仮想マシンのみ特定の処理を実行したいと思い調べてみました。

nginx1.4.1をchefでソースからインストールしてみる(websocket proxy)

以前、Vagrant上にNode.jsの環境構築を行いましたが、nginx1.3からwebsocketのproxyが可能になったとのことなので、最新の安定版であるnginx1.4.1をchefでインストールして、websocketのproxyができるまでを確認してみました。

[Mac]『入門Chef Solo』を読んで試してみた

伊藤直也さんの『 入門Chef Solo』を読んで、実際にVagrantを使って試してみた。

chefでruby-shadowのエラーが発生した場合の対処法

ユーザアカウント追加のレシピを適用した際にruby-shadowの部分で以下のようなエラーが発生しました。