[Zabbix]センサーの温度データを取得する
2017/05/19
Zabbix(厳密にはLinux上で動作するzabbix-agent)には温度センサーの値を取得出来る「sensor」があります。
Zabbixで温度センサーの値を取得する方法を調べてみた所、このsensorを使った方法で監視している(日本語の)例を見かけなかったので書いてみようと思います。
スポンサーリンク
ちなみに言っておくと、私の使っているZabbixはRaspbianにaptでインストールした2.2系です。
lm_sensorsは要らない
Zabbixで温度センサーを取得するためにはlm_sensorsの出力をgrepして……なんて記事がありますけど、たぶんそれはsensorがなかったか実用的じゃなかった頃の記事かな?
Zabbixに用意されている「sensor」は動作にlm_sensorsを必要としません。(/sys/class/hwmon/*にある値を直接取りに行くので)
zabbix-agentに備わっている機能だけで温度センサーの値が取得出来ます。
要らないけど、要る。
Zabbixで値を取得する事自体にlm_sensorsは要りません。
ただ、デバイス名やセンサー名を確認するのにはlm_sensorsが必要になってきます。
lm_sensorsでデバイス名やセンサー名を調べてから、Zabbixにそれらを設定していく、という感じになるはず。
設定
Linux 2.4と2.6~で少々設定が違うのですが、2.4なんてもう存在してないよね?
基本的な使い方は
sensor[デバイス名,センサー名,モード(省略可)]
のような形
モードはavg、max、minの3つが使用可能、そのままの値(=今の値?)を取得するにはモードを省略する事で可能。
データ型は物によりますが浮動小数にしておけば間違いがないです。ファンの回転数とかは整数が多いですが、温度とかになると浮動小数が入るものがあるので。
デバイス/センサー名を調べる
ここにlm_sensorsのsensorコマンドが必要になってきます。
まず「sensors -u」を実行します、実際に手元のサーバで実行してみた結果の一部が以下の通り。
coretemp-isa-0000
Adapter: ISA adapter
Core 0:
temp2_input: 38.000
temp2_max: 74.000
temp2_crit: 100.000
temp2_crit_alarm: 0.000
Core 1:
temp3_input: 31.000
temp3_max: 74.000
temp3_crit: 100.000
temp3_crit_alarm: 0.000
Core 2:
temp4_input: 35.000
temp4_max: 74.000
temp4_crit: 100.000
temp4_crit_alarm: 0.000
Core 3:
temp5_input: 36.000
temp5_max: 74.000
temp5_crit: 100.000
temp5_crit_alarm: 0.000
出力の見方ですが、まず「coretemp-isa-0000」などの部分がデバイス名になります。
そしてセンサー名ですが、「temp2_input」などの「temp2」がセンサー名になります。
つまり、Core 0(temp2)のCPU温度を取得するにはZabbix上で「sensor[coretemp-isa-0000,temp2]」と登録すれば良いわけです。
実際に登録した例
実際に自分の持つサーバのうちの1つで取得した例が以下の通りです。
(ちょっと暑いかな?)
そしてこれらをコア数分だけまとめたのが以下の通り。
(気温や昼夜の具合がはっきりと表れていて面白いです)
グラフ的に面白くないので省きますが、ファンの回転数や電圧なんかも取得できます。
温度が原因でサーバがダウンする事は普通ではあまりないでしょうが、監視しておいて困る事はないかと思います。
このようにZabbixの機能だけでセンサーの温度が取得できます、とにかく「Zabbixの機能だけで出来る」ってのが言いたかったのです。