IBM Cloud Docs
Monitoring API を使用した Monitoring インスタンスからのメトリックの抽出

Monitoring API を使用した Monitoring インスタンスからのメトリックの抽出

Monitoring API を使用することで、 IBM Cloud Monitoring インスタンスからメトリクスを抽出することができます。

cURL を使用したメトリックの取得

以下の cURL コマンドを使用して、メトリックを取得できます。

curl -X POST <SYSDIG_REST_API_ENDPOINT>/data -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json" -d DATA

説明

  • <SYSDIG_REST_API_ENDPOINT>は、REST API 呼び出しによってターゲットとされるエンドポイントを示します。 詳しくは、モニタリング REST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。

  • -H を使用して複数のヘッダーを渡すことができます。

    AuthorizationIBMInstanceID は、認証に必要なヘッダーです。

    SysdigTeamID はオプションです。 このヘッダーを指定すると、その要求は、指定したチームで使用できるデータおよびリソースに制限されます。

    AUTH_TOKENGUID を取得する方法については、IAM トークンのヘッダーを参照してください。

  • metrics.json を使用することによって、ファイル -d を渡してメトリックを抽出することができます (例えば、-d @metrics.json)。

以下のサンプルは、metrics.json ファイルのテンプレートを示しています。

{
  "start": "Number: seconds",
  "end": "Number: seconds",
  "last": "Number: last available seconds",
  "metrics": [
    {
      "id": "<>",
      "aggregations": {}
    }
  ],
  "sampling": "Number: <10|60|600|3600|86400>",
  "dataSourceType": "<host|container>",
  "filter": "<>",
  "paging": {
    "from": "Number",
    "to": "Number"
  }
}

メトリック・ディクショナリー

Sysdig によって事前に定義されたメトリクスについては 、「メトリクス辞書」 を参照してください。

Sysdig 対応の IBM Cloud サービスによって定義されている事前定義メトリックを確認するには、クラウド・サービスを参照してください。

データ集約

データ集計について詳しくは、 データ集計をご覧ください。

サンプル: プラットフォーム・メトリックの抽出

この例では、us-south の Cloud Foundry から過去 24 時間のプラットフォーム・メトリックを抽出する方法を示しています。

curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "content-type: application/json" -d @metrics.json

以下の metrics.json ファイルの例は、インスタンス ID、アプリのコンテナー経過時間、およびアプリで使用しているバイト数によってデータを抽出するようにファイルを構成する方法を示しています。

{
  "metrics": [
    {
      "id": "ibm_resource"
    },
    {
      "id": "ibm_cloudfoundry_app_container_age",
      "aggregations": {"group": "max", "time": "max"}
    },
    {
      "id": "ibm_cloudfoundry_app_memory_bytes_used",
      "aggregations": {"group": "avg", "time": "avg"}
    }
  ],
  "filter": "ibm_location = \"us-south\"",
  "sampling": 86400,
  "last": 86400
}

データ抽出の結果として、以下の情報が返されます。

{
  "data": [
    {
      "d": [
        "73a9d202-7e97-45b2-a107-3b1528856be3",
        316660942465643,
        18809015.575
      ],
      "t": 1587772800
    }
  ],
  "end": 1587772800,
  "start": 1587686400
}

サンプル: CPU データの抽出

この例は、開始、終了、およびサンプリングが制限されているホストによって CPU データを抽出する方法を示しています。

以下の metrics.json ファイルの例は、CPU データを抽出するようにファイルを構成する方法を示しています。

{
  "start":"1555404790",
  "end":"1555404850",
  "sampling": 10,
  "metrics": [
    {
      "id": "host.hostName"
    },
    {
      "id": "cpu.used.percent",
      "aggregations": {"time": "avg"}
    }
  ],
  "dataSourceType": "host"
}

データ抽出の結果として、以下の情報が返されます。

{
  "data": [
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.621
      ],
      "t": 1555404800
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.597
      ],
      "t": 1555404810
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.993
      ],
      "t": 1555404820
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.145
      ],
      "t": 1555404830
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        4.09
      ],
      "t": 1555404840
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        5.057
      ],
      "t": 1555404850
    }
  ],
  "end": 1555404850,
  "start": 1555404790
}

サンプル : 最新のメトリックを抽出する cURL サンプル

メトリックの最新の値を取得するには、メトリック名のみを指定します。 5 分以内に生成された直近の値が戻されます。

例えば、host_cpu_used_percent の最新の値を取得するには、次のようにします。

curl <SYSDIG_REST_API_ENDPOINT>/prometheus/api/v1/query?query=sysdig_host_cpu_used_percent -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"

説明

  • <SYSDIG_REST_API_ENDPOINT>は、REST API 呼び出しによってターゲットとされるエンドポイントを示します。 詳しくは、モニタリング REST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。

  • -H を使用して複数のヘッダーを渡すことができます。

    AuthorizationIBMInstanceID は、認証に必要なヘッダーです。

    SysdigTeamID はオプションです。 このヘッダーを指定すると、その要求は、指定したチームで使用できるデータおよびリソースに制限されます。

    AUTH_TOKENGUID を取得する方法については、IAM トークンのヘッダーを参照してください。

すべてのダッシュボードで、PromQL API が完全にサポートされています。 PromQL, で可能なことの詳細については 、 Prometheus のドキュメントを参照してください。

サンプル : チームの CPU データを抽出する cURL サンプル

この例は、特定のチームのコンテキストで使用できる CPU データを抽出する方法を示しています。

curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: 30785" -H "content-type: application/json" -d @metrics.json

サンプル: Monitoring から Event Streams へのメトリック・データの抽出

以下のコード例を使用して、メトリックを Monitoring インスタンスから Event Streams に抽出できます。

  • <region> を、 Monitoring インスタンスの地域( us-east など)に置き換えてください。
  • <apikey> を IBM Cloud IAM API キー・トークン に置き換えます。
  • <instance_id> を、お客様の Monitoring インスタンスのIDに置き換えてください。
  • metrics フィールドを、抽出するメトリックの JSON 配列に置き換えます。 この例のメトリックは cpu.cores.used です。
from sdcclient import IbmAuthHelper, SdMonitorClient
endpoint = "https://<region>.monitoring.cloud.ibm.com"
apikey = "<apikey>"
instanceID = "<instance_id>"
ibm_headers = IbmAuthHelper.get_headers(endpoint, apikey, instanceID)
sdclient = SdMonitorClient(sdc_url=endpoint, custom_headers=ibm_headers)
metrics = [
    {
    "id": "cpu.cores.used",
    "aggregations": {
        "time": "avg",
        "group": "sum"
    }
    }
]
filter = None
start = -120
end = 0
sampling = 60
ok, res = sdclient.get_data(metrics, start, end, sampling, filter=filter, datasource_type = "container")
print(ok)
print(res)
return res

サンプル: Monitoring REST API を使用した

Event Streams から Event Streams への通知の抽出

  1. Event Streams インスタンスを作成します

    • 価格プランから、**「エンタープライズ・プラン (Enterprise Plan)」**を選択します。
    • 必要に応じて、 Event Streams を Key Protect などの KMS プロバイダーをターゲットとする IAM の認証として設定し、ページを更新します。
    • **「サービス・エンドポイント」**で、プライベート・ネットワークを使用するオプションを選択します。
  2. Event Streams インスタンスがプロビジョンされるまで数分待ちます。

  3. Event Streams の例では、 kafka-java-console-sample-topic のような トピックを作成します

  4. プライベートクラウド・サービス・エンドポイント上で、Event Streams インスタンスに対する資格情報のサービス・キーを作成します。

    • <name> サービスキーの名前を入力します。
    • <event_streams_instance>: Event Streams インスタンスの名前に置き換えてください。
    ibmcloud resource service-key-create <name> Writer --instance-name <event_streams_instance> --service-endpoint private
    
  5. 前述のコマンドの出力から、REST 呼び出しを行うのに必要な詳細を入手します。

    • api_key
    • kafka_http_url

    出力例:

    api_key:      123465123456123465123465123465123465
    kafka_http_url:           https://mh-<id>.private.us-south.messagehub.appdomain.cloud
    
  6. Monitoring ダッシュボードから、使用する Monitoring インスタンスのダッシュボードを開くをクリックします。

  7. **「開始」>「通知チャネルの構成 (Configure a notification channel)」>「通知チャネルの構成 (Configure Notification Channel)」**をクリックします。 **「設定」**ページが開きます。

  8. **「通知チャネルの追加 (+ Add Notification Channel)」をクリックして、「Webhook」**オプションを選択します。

  9. Webhook 通知チャネルを構成します。 Webhook 通知チャネルを作成したら、続けてチャネル用の認証をセットアップする必要があります。

    • For URL、サービスキーから kafka_http_url を入力し、 /topics/<topic>/records ルートを URL に追加します。 <topic> は、 Event Streams インスタンスで作成したトピックの名前です。
    • **「名前」**には、Webhook 通知チャネルの名前を入力します。
    • その他のフィールドは、デフォルト設定のままにします。
    • **「保存」**をクリックして、チャネルを作成します。
  10. IAM トークンを取得して、Monitoring API に対する要求を認証します。

  11. Curl で Monitoring API を実行し、通知チャネルをリストします。

  • <region> を、 Monitoring インスタンスの地域( us-east など)に置き換えてください。
  • <token> を、以前に取得したIAMトークンに置き換えてください。
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq

出力で、通知チャネルの id に注目してください。options.url フィールドが、先ほど作成した URL と一致しています。

 {
     "id": 123,
     "version": 6,
     ...
     "options": {
         "notifyOnOk": true,
         "url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud",
         "notifyOnResolve": true
     }
 },
  1. Curl で Monitoring API を実行し、認証ヘッダーを Webhook 通知チャネルに追加します。
  • <region> を、 Monitoring インスタンスの地域( us-east など)に置き換えてください。
  • <id> を、以前に取得した通知チャネルのIDに置き換えてください。
  • <token> を、以前に取得したIAMトークンに置き換えてください。
curl -X PUT ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels/<id>' \
--header ‘Content-Type: application/json’
--header ‘Authorization: Bearer <token>’ -d @/tmp/notification.json
  1. 再度 Curl で Monitoring API を実行し、認証ヘッダーを使用して通知チャネルが更新されていることを確認します。
  • <region> を、 Monitoring インスタンスの地域( us-east など)に置き換えてください。
  • <token> を、以前に取得したIAMトークンに置き換えてください。
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq

出力で、additionalHeaders.X-Auth-Token フィールドが通知チャネルに追加されていることに注目してください。

{
"notificationChannel":
    {
        "id": 123,
        ....
        "options": {
            "notifyOnOk": true,
            "url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud/topics/kafka-java-console-sample-topic/records",
            "notifyOnResolve": true,
            "additionalHeaders": {
                "X-Auth-Token": "123456123456123456123456123465123456"
    ...
  1. Event Streams 用に作成した Webhook 通知チャネルを使用するアラートをセットアップします。

これで、Event Streams からアラートがトリガーされる際に、Monitoring インスタンス内で詳細を確認できるようになります。