Dr.SumにはいくつかWeb APIが用意されており、中でもDr.Sumの稼働監視を行うWeb APIを使った仕組みを構築することでいち早く障害対応を行うことができます。本記事ではDr.Sumにおける稼働監視Web APIの利用方法について紹介します。
事前準備
Dr.Sumにおける基本的なWeb APIの使用方法については下記のページをご覧ください。特に本記事においては第一章の「事前準備」まで実施してください。
ping機能の有効化
稼働監視のWeb APIを利用する上ではping機能を有効化する必要があります。有効/無効はDr.Sum Cloudサーバー内のsetting.jsonファイルで管理されています。ファイルは「<Dr.Sum Cloud Hubのインストールフォルダー>\webconsole\conf\webconsole\setting.json」にあります。デフォルトでは「C:\DrSumXX\CloudHubServer\webconsole\conf\webconsole\setting.json」(XXはバージョン)にあるので確認してみてくださいね。
メモ帳などで当該ファイルを開き、”enable”と書かれている行の末尾が「true」になっているか確認しましょう。「false」となっている場合は「true」に変更し保存します。
"ping": {
// To enable ping, set true.
"enable": true
},
以上で事前準備は終了です。
cURLを使って実際にWeb APIを使ってみる
まずは簡易的にWeb APIを試せるcURLというコマンドで稼働監視Web APIを叩いてみましょう!コマンドプロンプトを開き、下記のフォーマットでコマンドを入力します。
curl -i --basic -u "[user ID]:[password]" -X GET http://[host name]/webconsole/service/ping
例えばDr.Sumサーバー内でcURLを実行、またuser IDが「user」、passwordが「pass」とした場合は下記のようになります。
curl -i --basic -u "user:pass" -X GET http://localhost:6580/webconsole/service/ping
コマンドが入力できたらEnterを押下し実行します。問題なく動作していれば下記の結果が表示されます。
HTTP/1.1 200
Cache-Control: no-store
Content-Length: 0
Date: Sun, 31 Dec 2023 12:34:56 GMT
一行目末尾の番号(例でいう200)はステータスコードと呼ばれ、Web APIの実行結果を示しています。どの番号がどういった状況に対応しているかはマニュアルより確認できます。
【番外編】Pythonで稼働監視プログラムを実行する
前章では手動で、かつ一度だけ稼働状況を確認する方法を紹介しました。実際は一定間隔で監視を実行し、エラーがあれば通知するような仕組みが必要です。手動で行うのは現実的ではないのでプログラムを使います。サンプルとしてPythonプログラムを用意しましたので参考にしてみてくださいね。
import requests
from requests.auth import HTTPBasicAuth
import time
interval = 5 # 稼働監視Web APIを実行する間隔(秒)
time_error_recovery = 60 # エラーが起こってから通常の稼働監視モードに戻るまでの時間(秒)
URL = "http://localhost:6580/webconsole/service/ping"
AUTH = HTTPBasicAuth("Administrator", "password") # IDとパスワードを指定
MESSAGE = {
200 : "正常に稼働しています。",
404 : "ping機能が無効になっています。「<Dr.Sum Cloud Hubのインストールフォルダー>\webconsole\conf\webconsole」配下にあるsetting.jsonを確認してください。",
500 : "サーバー内部エラーが発生しています。管理者に確認してください。",
503 : "Dr.Sum Serverに接続できませんでした。サービスが起動しているか確認してください。"
}
def get_DrSum_health(url: str, auth: requests.auth.HTTPBasicAuth) -> int:
res = requests.get(url = url, auth = auth)
return res.status_code
def handle_error() -> None:
"""エラー(ステータスコードが200以外)の場合の挙動を記述。メール通知など。
"""
pass
def main():
while(True):
status_code = get_DrSum_health(URL, AUTH)
print("------------------")
print(f"status code: {status_code}")
print(f"message: {MESSAGE[status_code]}")
if(status_code != 200):
handle_error()
print(f"{time_error_recovery} 秒 停止します。")
time.sleep(time_error_recovery)
time.sleep(interval)
if __name__ == "__main__":
main()
上記は5秒間隔でWeb APIを実行するプログラムとなっています。エラーが出た場合はステータスコードに対応したメッセージを出力し、一定時間監視を停止します。
下記はプログラム実行結果のサンプルです。正常稼働を確認後、意図的にサービスを停止させています。その後サービスを起動し、問題なくエラー復帰ができていることが確認できます。
エラー(ステータスコードが200以外)が発生した場合の挙動は、「handle_error」関数に追記してください。メール通知処理などがおすすめです。
さいごに
本記事ではDr.Sumの稼働状況を確認するWeb APIの使い方を紹介しました。cURLでの基本的な使い方に加え、Pythonプログラムを例に実際にどのように利用するかといった部分もご理解いただけたと思います。Dr.Sumには稼働監視以外にも様々なWeb APIが用意されているので、シーンに合わせて使いこなしていただければと思います!