(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【IBMCloud】SysdigMonitorのAPIにcurlを打つことで特定の情報を取得する

スポンサーリンク

はじめに

IBM Cloud Monitoringサービスに対してcurlコマンドを打つことでCUIベースで情報を取得できます。
今回はサンプルとしてホスト名と時間を指定してCPU情報を取得する流れについて記載しました。

環境情報
$ curl --version
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL

事前準備

curlの構文は以下で規定されていて

# curl -X <METHOD> <MONITORING_ENDPOINT>/<API_URL> <-H HEADERS,> [-d DATA]

ヘッダー情報に以下が固有値として必須となっています。

-H "Authorization: $AUTH_TOKEN"
-H "IBMInstanceID: $GUID"

Tokenに関してはSysdigのダッシュボードにて確認できる"Sysdig Monitor API"が必要な情報で以下のような文字列になります。

Sysdig Monitor API Token
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

続いてGUIDに関してはインスタンスに一意の値なので以下コマンドにて今回情報を取得したいSysdigのNameを確認します。

$ ibmcloud monitoring service-instances --all-resource-groups
Listing service instances for jp-tok region and for all resource groups...
OK
Name                                  Region   State    Service Name     Platform Metrics
XX   jp-tok   active   sysdig-monitor Enabled

そこからは以下のコマンドで確認した名前を引数に指定すれば

$ ibmcloud resource service-instance "XX"
Retrieving service instance IBM Cloud Monitoring with XX in all resource groups under account ... as xx...
OK

Name:                  XX
ID:                    crn:v1:bluemix:public:sysdig-monitor:jp-tok:XX::
GUID:                  XX
Location:              jp-tok
Service Name:          sysdig-monitor
...

GUIDが取得できます。

curlコマンドによるCPU情報の確認


以下のようなファイルを用意した上で(start/endにはUnixTime形式の時刻)

{
  "start": "XX",
  "end": "XX",
  "sampling": 10,
  "metrics": [
    {
      "id": "host.hostName"
    },
    {
      "id": "cpu.used.percent",
      "aggregations": {"time": "avg"}
    }
  ],
  "dataSourceType": "host",
  "filter": "host.hostName = \"testserver\""
}

以下コマンドを押下すれば

curl -X POST https://jp-tok.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer XX" -H "IBMInstanceID: XX" -H "content-type: application/json" -d @metrics.json

JSON形式で値が以下のように確認できます。

{
  "data": [
    {
      "t": 163654XXXX,
      "d": [
        "testserver",
        5.583
      ]
    },
    {
      "t": 163654XXXX,
      "d": [
        "testserver",
        1.578
      ]
    }
  ],
  "start": 1636549xxx,
  "end": 1636549yyy
}

終わりに

今回はサーバに対してCPU情報を取得するmetrics.jsonファイルを用意しましたが、中を組み替えることで自由に値を取得可能となります。ちなみにAPIを取得するエンドポイントはLocationに記載のあるエリアを指定しないと以下エラーになる点はご注意ください。

{
  "timestamp": XX,
  "status": 401,
  "error": "Unauthorized",
  "message": "Bad credentials",
  "path": "/api/data"
}

以上です。