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
を使用して複数のヘッダーを渡すことができます。Authorization
とIBMInstanceID
は、認証に必要なヘッダーです。SysdigTeamID
はオプションです。 このヘッダーを指定すると、その要求は、指定したチームで使用できるデータおよびリソースに制限されます。AUTH_TOKEN
とGUID
を取得する方法については、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
を使用して複数のヘッダーを渡すことができます。Authorization
とIBMInstanceID
は、認証に必要なヘッダーです。SysdigTeamID
はオプションです。 このヘッダーを指定すると、その要求は、指定したチームで使用できるデータおよびリソースに制限されます。AUTH_TOKEN
とGUID
を取得する方法については、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 への通知の抽出
-
- 価格プランから、**「エンタープライズ・プラン (Enterprise Plan)」**を選択します。
- 必要に応じて、 Event Streams を Key Protect などの KMS プロバイダーをターゲットとする IAM の認証として設定し、ページを更新します。
- **「サービス・エンドポイント」**で、プライベート・ネットワークを使用するオプションを選択します。
-
Event Streams インスタンスがプロビジョンされるまで数分待ちます。
-
Event Streams の例では、
kafka-java-console-sample-topic
のような トピックを作成します。 -
プライベートクラウド・サービス・エンドポイント上で、Event Streams インスタンスに対する資格情報のサービス・キーを作成します。
<name>
サービスキーの名前を入力します。<event_streams_instance>
: Event Streams インスタンスの名前に置き換えてください。
ibmcloud resource service-key-create <name> Writer --instance-name <event_streams_instance> --service-endpoint private
-
前述のコマンドの出力から、REST 呼び出しを行うのに必要な詳細を入手します。
api_key
kafka_http_url
出力例:
api_key: 123465123456123465123465123465123465 kafka_http_url: https://mh-<id>.private.us-south.messagehub.appdomain.cloud
-
Monitoring ダッシュボードから、使用する Monitoring インスタンスのダッシュボードを開くをクリックします。
-
**「開始」>「通知チャネルの構成 (Configure a notification channel)」>「通知チャネルの構成 (Configure Notification Channel)」**をクリックします。 **「設定」**ページが開きます。
-
**「通知チャネルの追加 (+ Add Notification Channel)」をクリックして、「Webhook」**オプションを選択します。
-
Webhook 通知チャネルを構成します。 Webhook 通知チャネルを作成したら、続けてチャネル用の認証をセットアップする必要があります。
- For URL、サービスキーから
kafka_http_url
を入力し、/topics/<topic>/records
ルートを URL に追加します。<topic>
は、 Event Streams インスタンスで作成したトピックの名前です。 - **「名前」**には、Webhook 通知チャネルの名前を入力します。
- その他のフィールドは、デフォルト設定のままにします。
- **「保存」**をクリックして、チャネルを作成します。
- For URL、サービスキーから
-
IAM トークンを取得して、Monitoring API に対する要求を認証します。
-
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
}
},
- 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
- 再度 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"
...
- Event Streams 用に作成した Webhook 通知チャネルを使用するアラートをセットアップします。
これで、Event Streams からアラートがトリガーされる際に、Monitoring インスタンス内で詳細を確認できるようになります。