はじめに
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" }
以上です。