はじめに
Yellowfin の死活監視をする場合、サービスやプロセスの稼働状況を確認したり、特定 jsp ページが表示されるか否かを確認したりしている場合も多いかと思います。
この度、ログイントークン無しで、Yellowfin の死活監視ができる REST API が実装されました。リポジトリ DB の稼働状況も含めた結果を返すため、監視用の API としてとても役立つはずです。
設定
認証を受けることなく当該 API にアクセスするためには、Yellowfin 画面から [システム構成] > [認証] > [一般] と推移し、「認証不要なREST APIへのアクセス許可」を有効化します。
PHP プログラム
PHP のサンプルコードを使って、同 API の使い方を説明します。
全容
サンプルプログラムの全容は以下の通りです。
<?php
$time = ceil(microtime(true)*1000);
$url = 'http://localhost:9140/api/health/ping';
$header = array(
'Authorization:YELLOWFIN ts='.$time.', nonce=123',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo($httpCode);
curl_close($ch);
?>
内容の説明
プログラムの内容を簡単に説明します。
$time = ceil(microtime(true)*1000);
$url = 'http://yellowfin:8080/api/health/ping';
$header = array(
'Authorization:YELLOWFIN ts='.$time.', nonce=123',
);
\$time はミリ秒数の UNIX 時間を指定します。
\$url は各々の環境に合わせて内容を変更してください。要求する先の API は、ご覧の通り /api/health/ping です。
GET で戻り値を要求するために、\$header には Authorization 情報のみが必要です。
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo($httpCode);
curl_close($ch);
冒頭で宣言した変数の内容を使って、curl で GET の要求を行います。
GET 要求に対して、リポジトリ DB が稼働している場合は HTTP レスポンス 200 番が、稼働していない場合は 500 番がそれぞれ返ってきます。レスポンスは HEADER だけで、BODY はありません。そのため、以下の 2 行で HEADER 情報だけが必要であることを指定します。
curl_setopt($ch, CURLOPT_HEADER, true)
curl_setopt($ch, CURLOPT_NOBODY, true)
レスポンスから HTTP コードに関する情報だけを、以下の行で抜き出します。
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE)
動作確認
Yellowfin が正常に稼働している場合は、200 番が返ってきます。
>php health.php
200
Yellowfinのリポジトリ DB を停止すると、500 番が返ってきます。
>php health.php
500
最後に
Yellowfin の死活ポーリング監視をする際、この API を活用すれば、リポジトリ DB の稼働状況も含んだ結果を、True (200) / False (500) で返します。
是非、日ごろの運用にご活用ください。
では皆様、良いデータ分析を!