모니터링 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 엔드포인트 모니터링을 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다. 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 서비스에서 정의되는 사전 정의된 메트릭을 보려면 클라우드 서비스를 참조하십시오.

데이터 집계

데이터 집계에 대한 자세한 내용은 데이터 집계를 참고하세요.

샘플: 플랫폼 메트릭 추출

이 예제는 마지막 24시간 동안 us-south의 Cloud Foundry에서 플랫폼 메트릭을 추출하는 방법을 보여줍니다.

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 엔드포인트 모니터링을 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다. 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 CloudIAM 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 인스턴스를 작성하십시오.

    • 가격 플랜으로 엔터프라이즈 플랜을 선택하십시오.
    • 필요한 경우 Event Streams 에 대한 IAM에서 인증을 설정하여 Key Protect 와 같은 KMS 공급자를 타겟팅하고 페이지를 새로 고칩니다.
    • 서비스 엔드포인트의 경우 사설 네트워크가 있는 옵션을 선택하십시오.
  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. 시작하기 > 알림 채널 구성 > 알림 채널 구성을 클릭하십시오. 설정 페이지가 열립니다.

  8. + 알림 채널 추가를 클릭하고 웹훅 옵션을 선택하십시오.

  9. 웹훅 알림 채널을 구성하십시오. 웹훅 알림 채널을 작성한 후 채널에 대한 인증을 계속 설정해야 합니다.

    • ~을 위해 URL 서비스 키에서 kafka_http_url 를 입력하고 /topics/<topic>/records 경로를 URL 에 추가하십시오. <topic> 는 Event Streams 인스턴스에서 생성한 주제의 이름입니다.
    • 이름에 웹훅 알림 채널의 이름을 입력하십시오.
    • 기타 필드는 기본 설정으로 두십시오.
    • 저장을 클릭하여 채널을 작성하십시오.
  10. Monitoring API에 대한 요청을 인증하기 위한 IAM 토큰을 가져오십시오.

  11. Monitoring API에 대해 curl을 실행하여 알림 채널을 나열하십시오.

  • <region> 를 Monitoring 인스턴스의 지역으로 바꾸십시오(예: us-east).
  • <token> 를 이전에 검색한 IAM 토큰으로 대체합니다.
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq

출력에서 id 필드가 이전에 작성한 options.urlURL**과 일치하는 알림 채널의 **에 주목하십시오.

 {
     "id": 123,
     "version": 6,
     ...
     "options": {
         "notifyOnOk": true,
         "url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud",
         "notifyOnResolve": true
     }
 },
  1. Monitoring API에 대해 curl을 실행하여 웹훅 알림 채널에 인증 헤더를 추가하십시오.
  • <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. Monitoring API에 대해 curl을 다시 실행하여 알림 채널이 인증 헤더로 업데이트되었는지 확인하십시오.
  • <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에 대해 작성한 웹훅 알림 채널을 사용하는 경보를 설정하십시오.

이제 Event Streams에서 경보가 트리거될 때 Monitoring 인스턴스에서 세부사항을 검토할 수 있습니다.