HipChatでサーバの死活監視を行う
HipChatのAPIをPHPから叩く
IT技術者御用達のチャットサービスのHipChatのAPIが気になって調べていたところ、
動的にPHPから操作できることが簡単にできたので、
ちょっと応用してグループ内へ通知を行う監視ツールを作成しました。
毎日日常的に利用しているチャットソフトにアラートが上がるのは効果的だと思います。
HipChatのAPIがバージョン2がbetaで出ていたので、
そちらも気になりますが、今回はAPI 1で作成しています。
APIのトークンはログイン後この辺りで取得できます
投稿先のルームナンバー取得
サーバステータス投稿先を取得しないと始まらないので、
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}¬ify={$alert}";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
var_dump(curl_exec($c));
こんな感じで投稿されます。
このスクリプトをvpsのcronなんかに仕掛けておけば簡易的な監視に利用できそうです。
-
前の記事
microtime() 関数でPHPの実行時間を計測する 2014.02.13
-
次の記事
PHPフレームワーク私的で感覚的な比較 2014.02.18
コメントを投稿するにはログインしてください。