TECH BLOG

MENU

オンプレクラウド

Dr.Sum

Dr.Sum

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の実行結果を示しています。どの番号がどういった状況に対応しているかはマニュアルより確認できます。

Dr.Sumマニュアル:HTTPレスポンスステータスコード

 

【番外編】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が用意されているので、シーンに合わせて使いこなしていただければと思います!

この記事にリアクションしてみませんか?

  • 分かりやすい (1)
  • 問題が解決した (0)
評価いただいてありがとうございます!
プロフィールへ

宇根 昌和

新卒でウイングアーク1stへ入社、プリセールス活動を行っています。Pythonをベースに様々なツールからデータをDr.Sumへ集約しMotionBoardで可視化する仕組みを作ったり、Web APIを使ったデータ蓄積ノウハウをテーマにイベント登壇したりしています。Dr.Sum及びMotionBoardを中心とした役立つ情報を発信していきます!

Related article

Related article関連記事

Pick up

Pick upおすすめ記事

特定の文字列で分割して階層構造をつくりたい!~DS Scriptで分割する~1

  • #データ加工
  • #DS Script

2023.07.17

Dr.Sum

DS Scriptで必要なテーブルだけ再構築(リビルド)をしよう

  • #DS Script

2023.07.06

Dr.Sum

「データポイント数が、しきい値をオーバーしました」というエラーの解決方法【データベースで処理をしよう】

  • #データ加工

2023.06.13

MotionBoard

Ranking

Rankingランキング

1

Excelのデータを加工したい。~変換(横持ち⇔縦持ち)について~

  • #データ取り込み
  • #データ加工

2021.01.19

Dr.Sum

2

【Excelの取り込み】データベースにExcelデータをインポートしよ…

  • #データ取り込み

2020.08.14

Dr.Sum

3

【実は動く】フリーのSQL実行ツールでDr.SumのSQLを書こう

  • #外部接続
  • #SQL

2023.11.13

Dr.Sum

Info

Information

ウイングアーク1stからのお知らせ