ZabbixでCPU温度取得 改訂版(2014/9/3 追記・改善)

前のとは手順が途中から色々変わっているので別途記事を作成した。

 

#yum install lm_sensors

を実行し、インストール。

#sensors-detect
コマンドを実行し、テキトーにYESを入力していき、サーバーを再起動させる。

#sensors
apcitz-virtual-0
Adapter: Virtual device
temp1: +27.8℃ (high = +82.0℃, crit = +103.0℃)
temp2: +29.8℃ (high = +82.0℃, crit = +103.0℃)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +29.0℃ (high = +82.0℃, crit = +102.0℃)
Core 0: +26.0℃ (high = +82.0℃, crit = +102.0℃)
Core 1: +29.0℃ (high = +82.0℃, crit = +102.0℃)

と表示された。取得は問題ないようなので次のステップ

# sensors -u
acpitz-virtual-0000
Adapter: Virtual device
temp1:
temp1_input: 27.800
temp1_crit: 103.000
temp2:3_max: 82.000
temp2_input: 29.800
temp2_crit: 103.000.000

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:
temp1_input: 30.000
temp1_max: 82.000
temp1_crit: 102.000
temp1_crit_alarm: 0.000
Core 0:
temp2_input: 25.000
temp2_max: 82.000
temp2_crit: 102.000
temp2_crit_alarm: 0.000
Core 1:
temp3_input: 30.000
temp3_max: 82.000
temp3_crit: 102.000
temp3_crit_alarm: 0.000

temp2_inputとtemp3_inputが今回対象なのだが、このままでは問題がある。

temp2_inputが2つ存在する。

このままgrepで抽出を行っても2つの項目が抽出されてしまう。

#sensors -u |grep temp2_input
temp2_input: 29.800
temp2_input: 25.000

というわけで、コマンドをちょっといじることにする。

#sensors -u coretemp-isa-0000

これで必要箇所だけが出力されるようになる。

#sensors -u coretemp-isa-0000 | grep temp2_input
temp2_input: 25.000

temp3に変えればもう一方のコアの温度が取得できる。
というわけで、余計な文字を消していこう。

#sensors -u coretemp-isa-0000 | grep temp2_input | cut -d “:” f2
36.000
#sensors -u coretemp-isa-0000 | grep temp2_input | cut -d “:” f2 | cut -d ” ” -f2
36.000
#sensors -u coretemp-isa-0000 | grep temp2_input | cut -d “:” f2 | cut -d ” ” -f2 | cut -d “.” -f1
36

とりあえず、1つ目で
temp2_input: の部分まで削除
2つ目で:の後にあった空白を除去
3つ目で.以降を全削除。

これをユーザーパラメーターに組み込むと、
UserParamater=cputemp.core1,/usr/bin/sensors -u coretemp-isa-0000 | grep temp2_input | cut -d “:” f2 | cut -d ” ” -f2 | cut -d “.” -f1

UserParamater=cputemp.core2,/usr/bin/sensors -u coretemp-isa-0000 | grep temp3_input | cut -d “:” f2 | cut -d ” ” -f2 | cut -d “.” -f1

となる。

Zabbixには

名前;CPU Temp Core1
キー;cputemp.core1
データ型;数値(整数)
データ形式;10進数
単位;℃
名前;CPU Temp Core2
キー;cputemp.core2
データ型;数値(整数)
データ形式;10進数
単位;℃

で設定している。

 

—————–2014/09/02追記—————————–

もっと便利にしようとふと思い立ち、これをさらに加工していく。
このままの状態で、例えばCPU交換などで取得対象のコアが増えた等の理由で追加しよう!と考えたときに、ユーザーパラメーターをさらに増やす必要が出てしまう。

大量に同じようなパラメーターを用意するのもなんだか良いもんではないので、Zabbix上で指定できるようにしてしまおうと思い立った。

UserParamater=cputemp.core1,/usr/bin/sensors -u coretemp-isa-0000 | grep temp2_input | cut -d “:” f2 | cut -d ” ” -f2 | cut -d “.” -f1

赤字太文字の個所を削除し、キー名にあたる【cputemp.core1】を【cputemp.core[*]】に変更し、共通化してしまおう。

【grep temp2_input】のコマンド部分にあたる個所は、【grep temp$1_input 】と書き換え、先ほど書き換えた[*]の値を$1へ代入します。

完成形のユーザーパラメーターは次の形になります。

UserParamater=cputemp.core[*],/usr/bin/sensors -u coretemp-isa-0000 | grep temp$1_input | cut -d “:” f2 | cut -d ” ” -f2 | cut -d “.” -f1

Zabbixには

名前;CPU Temp Core1
キー;cputemp.core[2]
データ型;数値(整数)
データ形式;10進数
単位;℃
名前;CPU Temp Core2
キー;cputemp.core[3]
データ型;数値(整数)
データ形式;10進数
単位;℃

と追加していけば、1つのユーザーパラメーターで追加することが容易になります。

SSHで接続してパラメータを増やさないと・・・!

なんて考える必要がなくなりました。

コメントを残す