HipChatでサーバの死活監視を行う

HipChatのAPIをPHPから叩く

IT技術者御用達のチャットサービスのHipChatのAPIが気になって調べていたところ、
動的にPHPから操作できることが簡単にできたので、
ちょっと応用してグループ内へ通知を行う監視ツールを作成しました。

毎日日常的に利用しているチャットソフトにアラートが上がるのは効果的だと思います。

HipChatのAPIがバージョン2がbetaで出ていたので、
そちらも気になりますが、今回はAPI 1で作成しています。

APIのトークンはログイン後この辺りで取得できます

HipChat - API Tokens 2014-02-14 02-14-44 2014-02-14 02-15-20

投稿先のルームナンバー取得

サーバステータス投稿先を取得しないと始まらないので、
APIドキュメントにPHPでルームナンバーを取得するサンプルがありましたので、
これでナンバーを取得します。
https://www.hipchat.com/docs/api/method/rooms/list

// using standard curl extension

$url = "https://api.hipchat.com/v1/rooms/list?auth_token=token";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);

echo curl_exec($c);

HTTPステータスを取得してHipChatへ状態を投稿

<?php
// 監視対象サーバのステータスをCURLにて取得
$server = curl_init();
$url = "https://www.laddy.info/";
curl_setopt($server, CURLOPT_URL, $url);
curl_setopt($server, CURLOPT_RETURNTRANSFER, 1);
curl_exec($server);
$info = curl_getinfo($server);

// HTTPのステータスコード
if ('200' == $info['http_code'])
{
    $message = 'ConnectServer+status:' . $info['http_code'];
    $alert   = '0';
    $color   = 'gray';
}
else {
    $message = 'ConnectServer+status:Down';
    $alert   = '1';
    $color   = 'red';
}

$room_id = 'XXXXXXXXX'; // ルームナンバー取得のAPIで受け取った番号
$name    = 'サーバ監視'; // 投稿者名

// APIを投稿するURL作成
$url = "https://api.hipchat.com/v1/rooms/message?auth_token=XXXXXXXXXXXXXX&room_id={$room_id}&from={$name}&message={$message}&color={$color}&notify={$alert}";

$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
var_dump(curl_exec($c));

こんな感じで投稿されます。

HipChat - Web Chat 2014-02-14 02-55-15 2014-02-14 02-55-38

このスクリプトをvpsのcronなんかに仕掛けておけば簡易的な監視に利用できそうです。