0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

REST API を使って Yellowfin の死活監視

Last updated at Posted at 2024-12-09

はじめに

Yellowfin の死活監視をする場合、サービスやプロセスの稼働状況を確認したり、特定 jsp ページが表示されるか否かを確認したりしている場合も多いかと思います。

この度、ログイントークン無しで、Yellowfin の死活監視ができる REST API が実装されました。リポジトリ DB の稼働状況も含めた結果を返すため、監視用の API としてとても役立つはずです。

設定

認証を受けることなく当該 API にアクセスするためには、Yellowfin 画面から [システム構成] > [認証] > [一般] と推移し、「認証不要なREST APIへのアクセス許可」を有効化します。

image.png

PHP プログラム

PHP のサンプルコードを使って、同 API の使い方を説明します。

全容

サンプルプログラムの全容は以下の通りです。

health.php
<?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 情報のみが必要です。

curl
$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) で返します。
是非、日ごろの運用にご活用ください。

では皆様、良いデータ分析を!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?