ZabbixでCPU温度の監視

ZabbixでWindows ServerのCPU温度監視の設定についての覚書。

ありがたいことに、今年のはじめにシステム室とサーバルームを会社に作ってもらいました。

これまでは、事務所の片隅にサーバラックと共に仕事をしていたのですが、日々の気温変化や、電源容量にいちいち神経をすり減らすことも大分なくなり、管理業務に集中できる日々が続いています。

とそんな矢先、サーバルームで出火(!)する夢を見てしまい、やはり意識の奥底にはサーバルームにまつわる不安を抱えているのか、、と改めて実感したわけです。

以前から、Windowsの実機サーバに対しては、Zabbixエージェントをインストールして、古いサーバ(Ubuntu10.04)にZabbix1.8を立てて監視していたのですが、今回はUbuntu16.04 LTSで稼働させている仮想マシンに入れたZabbix3.2から改めて監視させてみようと作業してみました。

使用環境

  • Windows Server 2008 R2
    • Speedfan4.4.9とSFSNMP 0.1.2 が導入済み
  • Ubuntu Server 16.04 LTS
  • Zabbix 3.2.11(Ubuntuのパッケージ使用)
  • Zabbix Agent 3.2 Windows用バイナリ

ゴール

  • CPUの温度を監視できるように設定
  • CPUの温度をグラフで表示
  • CPU温度の異常を検知してメール送信

Windows Serverでの作業

SpeedFan+SFSNMP

今回はすでに導入済みのため触れませんが、はじめから導入する際は、参考にしたサイトを元に導入します。

Zabbixエージェント

すでに、C:\Zabbixにエージェントがインストールされているとして・・・

古いZabbixのエージェントがサービスとして起動しているで、一旦サービスを削除。

ここからZabbixエージェントをダウンロード(Zabbixサーバのバージョンと合わせる)。

zipファイルを展開して、中身をC:\Zabbixに移動。

zabbix-agentd.win.confファイルを編集する。 1

Zabbixをサービスとしてインストール

インストール後、管理ツール->サービスでZabbix Agentを起動する。

Zabbixサーバでの作業

SNMPを取得できるか確認

snmpwalkコマンドを使って、CPU温度周りの情報を取得。

この場合、.1.3.6.1.4.1.30503.1.2.*がCPUのコア毎の温度であると推測できます。

ホストの登録

設定->ホストで、ホストの作成をクリック。

  • ホスト名、表示名にホスト名を入れる。
  • 所属グループは必要に応じて(例: Windows Servers など)。
  • エージェントのインターフェース: IPアドレスを入力し、接続方法:IPアドレス、ポート:10050。
  • SNMPインターフェース: IPアドレスを入力し、接続方法:IPアドレス、ポート:161。
  • 有効にチェック。
  • テンプレートタブに移動
  • テンプレートにTemplate OS WIndowsTemplate SNMP OS Windowsを追加。
  • ホストタブに移動「追加」ボタン

しばらくしてから、設定->ホストでホストの一覧を表示し、エージェントの状態を確認。

ZBX、SNMPがグリーンではなく赤い表示の場合は失敗しているので、設定を確認する。その他の確認事項としては、、

  • Windowsサーバ側のファイアウォール設定
  • Windowsサーバ側のSNMPサービスの設定
  • Windowsサーバ側で、SNMPサービス、Zabbix Agentサービスが起動しているか。

等があると思われます。

ホストにアイテムを追加

  • 設定-> ホストで、ホストの一覧
  • 一覧から先程追加したホストの、アイテムをクリックし、アイテムの一覧を表示。
  • アイテムの作成をクリック。
    • 名前: 任意(例: CPU0 Temp など)
    • タイプ:SNMPv2エージェント
    • キー: 任意(例: censors.cpu0.temp など)
    • ホストインターフェース: (例:192.168.0.1:161)
    • OID: 先の例では、.1.3.6.1.4.1.30503.1.2.1から.1.3.6.1.4.1.30503.1.2.4。
    • SNMPコミュニティ:public
    • ポート:161
    • データ型: 数値(整数)
    • データの形式: 10進数
    • 単位:℃
    • 乗数を使用:チェックを入れて、値を0.01に。
    • 更新間隔:30
    • その他は、デフォルトのままでOK
    • 有効にチェックをいれ、更新ボタンをクリック
  • これをCPUの数だけ繰り返します(アイテムの複写を活用)。

これも少し間を置いてから、アイテムの一覧を表示させてエラーが置きていないかどうか確認します。

メールを送信できるようにする

メディアタイプを設定

Zabbixの警告などをメールで送信できるように設定します。

ここでのメール送信サーバは以下のようなサーバを想定しています。

  • SMTPサーバー: mail.foo.ne.jp
  • SMTPサーバーポート: 465
  • 接続セキュリティ: SSL/TLS
  • 認証: ユーザー名とパスワード(PLAIN TEXT)
  • 管理 -> メディアタイプ でメディアタイプの一覧を表示。

  • Email をクリック。
    • 名前:Email
    • タイプ: メール
    • SMTPサーバー: mail.foo.ne.jp
    • SMTPサーバーポート番号: 465
    • SMTP helo: foo.ne.jp
    • 送信元: zabbix@foo.ne.jp
    • 接続セキュリティ: SSL/TLS
    • SSLピア検証:チェックを外す
    • SSLホスト検証: チェックを外す
    • 認証: Username and password
    • ユーザー名:hoge@foo.ne.jp
    • パスワード変更をクリックし、メールユーザのパスワードを入力。
    • 有効にチェックをいれ、更新

ユーザーにメディアを割りあて

ここでは、キー名がcensors.cpu0.tempの値(温度)が、60℃を超えたら警告を発砲して、メールで送信できるようにします。

  • 管理 -> ユーザーで、ユーザー一覧を表示。
  • メールを送信するユーザ(ここでは、Admin)をクリック。
  • メディアタブをクリック
    • タイプ: Emailにする。
    • 送信先: メールの送信先を入力(例: admin@foo.ne.jp)
    • 有効な時間帯: 1-7,00:00-24:00 (月曜から日曜、0時から24時まで)
    • 指定した深刻度の時に使用: デフォルト(全てチェック)のまま。
    • 有効にチェックをいれて、追加。

トリガーを設定

先に設定したCPU温度の監視アイテムで、過去5分間の平均温度が60℃を超えたら警告を発砲し、メールを送信するように設定します。

  • 管理 -> ホストでホスト一覧を表示。
  • 該当するホストのトリガーをクリック。
  • トリガーの作成をクリック。
    • 名前:WINSRV2008R2 CPU0 Avarage Temp is over 60c
    • 深刻度: 警告
    • 条件式: {WINSRV2008R2:censors.cpu0.temp.avg(5m)}>60
    • 正常イベントの生成: 条件式
    • 障害イベント生成モード: 単一
    • 正常時のイベントクローズ: すべての障害
    • その他はそのまま
    • 有効にチェックを入れ、追加

実際にトリガーを発砲させてみる

トリガーがきちんと作用して、メールが送信されるか確認。

  • 通常では発砲されないので、上記トリガーを設定の内容を一部変更。
  • 条件式の>60>10にして、トリガーを更新する。
  • しばらく間をおいてから、ダッシュボード上、あるいはメールで警告が発砲されているかどうか確認。

確認終了後、条件式を元に戻しておく。

参考にしたサイト


  1. 今回、1.8系から3.2系へのアップグレードに関しては、変更の必要は内容に思われますが念の為。