IBM Cloud Monitoring with Sysdigサービスは、管理者、DevOpsチーム、開発者向けの、フル管理のエンタープライズ・グレードのモニタリング・サービスです。コンテナの深い可視性、サービス指向のビュー、包括的なメトリックが得られます。
Sysdig UI の Dashboard や Panel を利用して Metric 情報を確認することが一般的ですが、Monitoring API を使用することで、JSON Format で Metric Data を取得することが可能です。
Panel の Export 機能でも Metric Data を取得することができますが、Monitoring API は、より詳細な設定が可能です。
Monitoring API は、curl または python で利用することができます。
Extracting metrics from a Monitoring instance by using the Monitoring API
https://cloud.ibm.com/docs/monitoring?topic=monitoring-metrics_api
Extracting metrics from an instance by using the Monitoring Python client
https://cloud.ibm.com/docs/monitoring?topic=monitoring-metrics_python
ここでは、curl による Sysdig Monitoring API の利用方法をご紹介します。
curl syntax
基本的な curl の syntax は以下の通りです。
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
Sysdig の Endpoint を指定します。Endpoint は以下から確認できます。
REST API endpoints
https://cloud.ibm.com/docs/monitoring?topic=monitoring-endpoints#endpoints_rest_api
ここでは、以下の Endpoint を使用します。
export SYSDIG_REST_API_ENDPOINT="https://jp-tok.monitoring.cloud.ibm.com/api"
AUTH_TOKEN
Sysdig Instance へのアクセスに必要な認証トークンを指定します。これは、Sysdig UI から確認できます。
export AUTH_TOKEN="Bearer <Sysdig UI から確認した認証トークン>"
GUID
Sysdig Instance の GUID を指定します。GUID は以下から確認できます。
$ 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
my-sysdig-01 jp-tok active sysdig-monitor Enabled
$ ibmcloud resource service-instance my-sysdig-01 --output json | jq -r '.[].guid'
****-****-****-****-****
export GUID="****-****-****-****-****"
TEAM_ID
TEAM_ID の指定は必須ではありませんので、ここでは割愛します。
SysdigTeamID is optional. When you specify this header, you limit the request to the data and resources available for the team specified.
DATA
取得する Metirc 情報を指定します。例として、IBM Cloud Databases for Redis (Redis) の CPU 使用率を取得するために、以下のような JSON ファイルを作成してみます。
Monitoring Integration
https://cloud.ibm.com/docs/databases-for-redis?topic=databases-for-redis-monitoring
$ cat REDIS_CPU.json
{
"metrics": [
{
"id": "ibm_resource"
},
{
"id": "ibm_databases_for_redis_cpu_used_percent",
"aggregations": {"time": "max"}
}
],
"filter": "ibm_location = \"jp-tok\"",
"start": "1685199600",
"end": "1685285999",
"sampling": "3600"
}
curl による Metric の取得
以下のように curl を実行すると、Metirc が取得できます。
$ curl -X POST "$SYSDIG_REST_API_ENDPOINT"/data -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "content-type: application/json" -d @REDIS_CPU.json -o CPU_METRIC.json
$ jq -r . CPU_METRIC.json | head -n 30
{
"data": [
{
"t": 1685203200,
"d": [
"my-redis-01",
0.055926
]
},
{
"t": 1685203200,
"d": [
"my-redis-02",
0.035095
]
},
{
"t": 1685206800,
"d": [
"my-redis-01",
0.025385
]
},
{
"t": 1685206800,
"d": [
"my-redis-02",
0.001892
]
},
sampling が適切でない例
Sysdig では、Data Retention によって過去日の Metric 情報が更新されます。
Data Retention
https://docs.sysdig.com/en/docs/administration/data-retention/
前述の例は 1 hr: 3 months
に該当するため、"sampling": "3600"
と指定しました。
適切でない sampling
を指定すると、以下のように Metric 情報が取得されないため、注意が必要です。
$ cat 600SEC_REDIS_CPU.json
{
"metrics": [
{
"id": "ibm_resource"
},
{
"id": "ibm_databases_for_redis_cpu_used_percent",
"aggregations": {"time": "max"}
}
],
"filter": "ibm_location = \"jp-tok\"",
"start": "1685199600",
"end": "1685285999",
"sampling": "600"
}
$ curl -X POST "$SYSDIG_REST_API_ENDPOINT"/data -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "content-type: application/json" -d @600SEC_REDIS_CPU.json -o 600SEC_CPU_METRIC.json
$ jq -r . 600SEC_CPU_METRIC.json
{
"data": [],
"start": 1685199600,
"end": 1685285400
}