경보 API를 사용하여 경보 관리

' Monitoring ' API를 사용하여 ' IBM Cloud Monitoring 인스턴스에서 알림을 관리할 수 있습니다.

cURL을 사용하는 방법을 알아보려면 cURL 명령을 참조하십시오.

사용자 경보에 대한 세부사항 가져오기

다음 cURL 명령을 사용하여 경보에 대한 정보를 가져올 수 있습니다.

curl -X GET <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"

여기서,

  • <REST_API_ENDPOINT> REST API 호출이 타겟팅하는 엔드포인트를 나타냅니다. 자세한 정보는 MonitoringREST API 엔드포인트를 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다. https://us-south.monitoring.cloud.ibm.com/api

  • -H를 사용하여 여러 헤더를 전달할 수 있습니다.

    AuthorizationIBMInstanceID는 인증에 필요한 헤더입니다.

    TeamID는 선택사항입니다. 이 헤더를 지정하면 지정된 팀에 사용 가능한 데이터 및 리소스로 요청이 제한됩니다.

    AUTH_TOKENGUID를 가져오려면 IAM 토큰에 대한 헤더를 참조하십시오.

  • <ALERT_ID> '은 수정하려는 알림의 ID를 정의합니다.

예를 들어, 경보의 응답 본문은 다음과 같습니다.

{
  "alert": {
    "autoCreated": false,
    "condition": "min(min(dallas_prod)) = 0",
    "createdOn": 1551358413000,
    "enabled": false,
    "id": 23211,
    "modifiedOn": 1551634372000,
    "name": "Monitoring Uptime Alert",
    "filter": "env in (\"prod\")",
    "notificationChannelIds": [
      4
    ],
    "segmentBy": [
      "host.hostname"
    ],
    "segmentCondition": {
      "type": "ANY"
    },
    "notificationCount": 60,
    "rateOfChange": false,
    "reNotify": false,
    "severity": 0,
    "severityLabel": "HIGH",
    "teamId": 493,
    "timespan": 60000000,
    "type": "MANUAL",
    "version": 9
  }
}

경보 작성

다음 cURL 명령을 사용하여 경보를 작성할 수 있습니다.

curl -X POST <REST_API_ENDPOINT>/api/alerts -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json

여기서,

  • <REST_API_ENDPOINT> REST API 호출이 타겟팅하는 엔드포인트를 나타냅니다. 자세한 정보는 MonitoringREST API 엔드포인트를 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다. https://us-south.monitoring.cloud.ibm.com/api

  • -H를 사용하여 여러 헤더를 전달할 수 있습니다.

    AuthorizationIBMInstanceID는 인증에 필요한 헤더입니다.

    TeamID는 선택사항입니다. 이 헤더를 지정하면 지정된 팀에 사용 가능한 데이터 및 리소스로 요청이 제한됩니다.

    AUTH_TOKENGUID를 가져오려면 IAM 토큰에 대한 헤더를 참조하십시오.

  • alert.json를 사용하여 -d 파일에서 경보를 작성하는 데 필요한 데이터를 전달할 수 있습니다.

    경보를 작성할 때 다음 매개변수를 포함하십시오. type, name, severity, timespan, condition, segmentby, segmentConditionn, filter, notificationChannelIds, enabled

    자세한 정보는 경보 스키마를 참조하십시오.

다음 샘플은 경보를 작성하기 위해 설정할 수 있는 요청 본문 매개변수를 표시합니다.

{
  "alert": {
    "version": null,
    "name": "My Alert!",
    "description": null,
    "teamId": null,
    "enabled": false,
    "filter": null,
    "type": "MANUAL",
    "condition": "avg(timeAvg(uptime)) <= 0",
    "timespan": 600000000,
    "notificationChannelIds": [],
    "reNotify": false,
    "reNotifyMinutes": 30,
    "segmentBy": [
      "host.hostName"
    ],
    "segmentCondition": {
      "type": "ANY"
    },
    "severityLabel": "LOW"
  }
}

경보 업데이트

기존 경보를 업데이트하려면 이 경보의 ID가 필요합니다.

다음 cURL 명령을 사용하여 경보를 업데이트할 수 있습니다.

curl -X PUT <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json

여기서,

  • <REST_API_ENDPOINT> REST API 호출이 타겟팅하는 엔드포인트를 나타냅니다. 자세한 정보는 MonitoringREST API 엔드포인트를 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다. https://us-south.monitoring.cloud.ibm.com/api

  • -H를 사용하여 여러 헤더를 전달할 수 있습니다.

    AuthorizationIBMInstanceID는 인증에 필요한 헤더입니다.

    TeamID는 선택사항입니다. 이 헤더를 지정하면 지정된 팀에 사용 가능한 데이터 및 리소스로 요청이 제한됩니다.

    AUTH_TOKENGUID를 가져오려면 IAM 토큰에 대한 헤더를 참조하십시오.

  • <ALERT_ID> '은 수정하려는 알림의 ID를 정의합니다.

  • alert.json를 사용하여 -d 파일에서 경보를 작성하는 데 필요한 데이터를 전달할 수 있습니다.

    자세한 정보는 경보 스키마를 참조하십시오.

다음 샘플은 경보를 업데이트하기 위해 설정할 수 있는 요청 본문 매개변수를 표시합니다.

{
  "alert": {
      "type": "MANUAL",
      "id": 23212,
      "version": 10,
      "name": "CheckNginxConnections",
      "description": "Active connections of nginx server",
      "enabled": false,
      "severity": 2,
      "timespan": 1000000,
      "condition": "avg(avg(nginx.net.connections)) > 1000",
      "segmentBy": [
          "host.hostName"
      ],
      "segmentCondition": {
          "type": "ANY"
      },
      "notificationChannelIds": [
          2
      ]
    }
}

경보 삭제

기존 경보를 삭제하려면 이 경보의 ID가 필요합니다.

다음 cURL 명령을 사용하여 경보를 삭제할 수 있습니다.

curl -X DELETE <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"

여기서,

  • <REST_API_ENDPOINT> REST API 호출이 타겟팅하는 엔드포인트를 나타냅니다. 자세한 정보는 MonitoringREST API 엔드포인트를 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다. https://us-south.monitoring.cloud.ibm.com/api

  • -H를 사용하여 여러 헤더를 전달할 수 있습니다.

    AuthorizationIBMInstanceID는 인증에 필요한 헤더입니다.

    TeamID는 선택사항입니다. 이 헤더를 지정하면 지정된 팀에 사용 가능한 데이터 및 리소스로 요청이 제한됩니다.

    AUTH_TOKENGUID를 가져오려면 IAM 토큰에 대한 헤더를 참조하십시오.

  • <ALERT_ID> '은 삭제하려는 알림의 ID를 정의합니다.

모든 사용자 경보 받기

다음 cURL 명령을 사용하여 모든 경보에 대한 정보를 가져올 수 있습니다.

curl -X GET <REST_API_ENDPOINT>/api/alerts?from=<START_TIMESTAMP>&to=<END_TIMESTAMP> -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID"

여기서,

  • <REST_API_ENDPOINT> REST API 호출이 타겟팅하는 엔드포인트를 나타냅니다. 자세한 정보는 MonitoringREST API 엔드포인트를 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다. https://us-south.monitoring.cloud.ibm.com/api

  • -H를 사용하여 여러 헤더를 전달할 수 있습니다.

    AuthorizationIBMInstanceID는 인증에 필요한 헤더입니다. AUTH_TOKENGUID를 가져오려면 IAM 토큰에 대한 헤더를 참조하십시오.

  • tofrom은 경보에 대한 정보를 원하는 기간을 구성하기 위해 정의해야 하는 조회 매개변수입니다.

응답 형식에 대한 자세한 정보는 경보 스키마를 참조하십시오.

경보 스키마: 요청 본문

{
  "alerts": [
    {
      "alert": {
        "version": null,
        "name": "",
        "description": null,
        "teamId": null,
        "enabled": false,
        "filter": null,
        "type": "",
        "condition": "",
        "timespan": 600000000,
        "notificationChannelIds": [],
        "reNotify": false,
        "reNotifyMinutes": 30,
        "segmentBy": [],
        "segmentCondition": {
          "type": ""
        },
        "severityLabel": ""
      }
    }
  ]
}

경보 스키마: 응답 본문

{
  "alerts": [
    {
    "alert": {
      "autoCreated": false,
      "condition": "",
      "createdOn": 1551358413000,
      "enabled": false,
      "id": 23211,
      "modifiedOn": 1551634372000,
      "name": "",
      "filter": "",
      "notificationChannelIds": [],
      "segmentBy": [],
      "segmentCondition": {
        "type": "ANY"
      },
      "notificationCount": 60,
      "rateOfChange": false,
      "reNotify": false,
      "severity": 0,
      "severityLabel": "",
      "teamId": 493,
      "timespan": 60000000,
      "type": "",
      "version": 9
      }
    }
  ]
}

오류 응답 코드

다음 표에는 공통 오류 응답 코드가 표시됩니다.

RC
RC 설명
400 경보 구성이 올바르지 않습니다.
401 권한이 없는 액세스입니다.
404 경보 ID가 인식되지 않습니다.
409 버전이 일치하지 않습니다.
422 경보 이름이 올바르지 않습니다. 이름이 이미 사용되고 있습니다.

본문 매개변수

id(정수)

경보 ID입니다.

condition(문자열)

경보에 대해 구성된 임계값을 정의합니다. 이 매개변수는 MANUAL 경보에만 필요합니다.

예를 들어 다음과 같이 컨센션을 정의할 수 있습니다: avg(timeAvg(uptime)) <= 0

createdOn(정수)

경보의 작성 시간(밀리초)을 정의합니다.

이 매개변수는 경보가 작성될 때 Unix 시간소인을 리턴합니다.

description(문자열)

이 매개변수는 경보에 대해 설명합니다.

설명은 모니터링 UI의 경보 섹션에서 경보를 볼 때 제공되며 알림 이메일에 포함됩니다.

enabled(부울)

경보의 상태를 정의합니다.

기본적으로 이 매개변수는 true로 설정되고 경보는 작성될 때 사용으로 설정됩니다.

filter(문자열)

세그먼트를 구성하여 경보 범위를 정의합니다.

이 필드가 비어 있으면 모든 메트릭 소스가 포함됩니다. 범위는 Everything으로 설정됩니다.

예를 들어, 다음과 같은 필터를 정의할 수 있습니다.

kubernetes.namespace.name='production'
container.image='nginx'*.
kubernetes.namespace.name='production' and container.image='nginx'*.

name(문자열)

경보의 이름입니다. 고유해야 합니다.

이름은 모니터링 UI의 경보 섹션에서 경보를 식별하는 데 사용되며 알림 이메일에 포함됩니다.

modifiedOn(정수)

경보가 마지막으로 수정된 시기(밀리초)를 정의합니다.

이 매개변수는 경보가 마지막으로 수정된 Unix 시간소인을 정의합니다.

notificationChannelIds(배열)

경보가 트리거될 때 알리도록 구성된 알림 채널을 나열합니다.

올바른 옵션은 EMAIL, PAGER_DUTY, WEBHOOK, VICTOROPSSLACK입니다.

"notificationChannelIds": [
      "EMAIL",
      "WEBHOOK"
    ]

notificationCount(정수)

지난 2주 동안 경보에 대해 전송된 알림 수를 정의합니다.

reNotify(부울)

경보 조건이 수신확인되고 분석될 때까지 후속 알림을 수신할지 여부를 정의합니다.

기본적으로 후속 알림은 사용되지 않으며 필드는 false로 설정되어 있습니다.

reNotifyMinutes(정수)

분석되지 않은 경보에 대한 알림을 수신할 빈도를 정의합니다.

리마인더가 전송되기 전까지의 시간(분)을 지정합니다.

severity(정수)

syslog 인코딩 경보 심각도를 정의합니다.

다음 표에는 설정할 수 있는 값이 나열되어 있습니다.

심각도 값
심각도(Severity) 정보
0 emergency
1 alert
2 critical
3 error
4 warning
5 notice
6 informational
7 debug

severityLabel(문자열)

경보의 임계도를 정의합니다. 올바른 값은 HIGH, MEDIUM, LOWINFO입니다. 값이 작을수록 더욱 높은 심각도를 나타냅니다.

다음 표에는 심각도 매개변수값에 따라 설정해야 하는 심각도 상태가 표시됩니다.

심각도 수준 값
심각도(Severity) 심각도 상태
0 HIGH
1 HIGH
2 MEDIUM
3 MEDIUM
4 LOW
5 LOW
6 INFO
7 INFO

segmentBy(문자열 배열)

추가 구분 기준을 정의합니다.

예를 들어, ['host.mac', 'proc.name']으로 CPU 경보를 세그먼트화할 수 있으므로 경보는 모니터링 인스턴스에서 데이터를 가져오는 시스템의 모든 프로세스에 대해 보고할 수 있습니다.

segmentCondition(문자열)

segmentBy 매개변수에 지정된 각 모니터된 엔티티에 대해 경보가 트리거될 때 정의합니다. 이 매개변수는 MANUAL 경보에만 필요합니다.

유효한 값은 다음과 같습니다.

  • ANY: 하나 이상의 모니터된 엔티티가 조건을 충족하면 경보가 트리거됩니다.
  • ALL: 모든 모니터된 엔티티가 조건을 충족하면 경보가 트리거됩니다.

teamId(문자열)

경보를 소유한 팀의 GUID를 정의합니다.

type (String)

경보 유형을 정의합니다. 올바른 값은 MANUAL, BASELINEHOST_COMPARISON입니다.

알림이 전송될 때 제어할 경보에 대해 MANUAL로 설정하십시오. 경보가 트리거되는 시기를 결정하는 임계값을 정의해야 합니다.

예기치 않은 메트릭 값이 발견되었을 때 이를 알리려는 경보에 대해 BASELINE으로 설정하십시오. 새 메트릭 데이터는 시간이 지나면서 수집되는 메트릭 값과 비교됩니다.

그룹의 하나의 호스트가 그룹의 나머지 호스트와 다른 메트릭 값을 보고할 때 이를 알리려는 경보에 대해 HOST_COMPARISON으로 설정하십시오.

timespan(정수)

경보가 트리거되기 전에 경보 조건을 충족해야 하는 최소 시간 간격(마이크로초)입니다.

최소값은 60000000마이크로초(즉, 1분)입니다.

이 매개변수의 값은 60000000마이크로초의 배수여야 합니다.

version(정수)

경보 버전입니다.

경보를 업데이트할 때마다 버전이 변경됩니다.

버전은 낙관적 잠금에 사용됩니다.

조회 매개변수

alertId(정수)

경보 ID입니다.

from(long)

정의된 경보에 대한 정보를 요청할 때 사용되는 시작 시간소인(마이크로초)을 정의합니다.

to(long)

정의된 경보에 대한 정보를 요청할 때 사용되는 종료 시간소인(마이크로초)을 정의합니다.