

# 사용자 지정 지표
<a name="dd-detect-custom-metrics"></a>

AWS IoT Device Defender 사용자 지정 지표를 사용하면 Wi-Fi 게이트웨이에 연결된 디바이스 수, 배터리 충전 수준 또는 스마트 플러그의 전원 사이클 수 등 플릿 또는 사용 사례에 고유한 지표를 정의하고 모니터링할 수 있습니다. 사용자 지정 지표 동작은 디바이스 그룹(사물 그룹) 또는 모든 디바이스에 대해 예상되는 동작을 지정하는 보안 프로파일에 정의됩니다. 경보를 설정하여 동작을 모니터링할 수 있습니다. 이 경보를 사용하면 디바이스와 관련된 문제를 감지하고 이에 대응할 수 있습니다.

**Topics**
+ [콘솔에서 사용자 지정 지표를 사용하는 방법](#dd-detect-custom-metrics-how-to-console)
+ [CLI에서 사용자 지정 지표를 사용하는 방법](#dd-detect-custom-metrics-how-to-cli)
+ [사용자 지정 지표 CLI 명령](#dd-detect-custom-metrics-cli-commands)
+ [사용자 지정 지표 API](#dd-detect-custom-metrics-apis)

## 콘솔에서 사용자 지정 지표를 사용하는 방법
<a name="dd-detect-custom-metrics-how-to-console"></a>

**Topics**
+ [AWS IoT Device Defender 에이전트 SDK(Python)](#dd-detect-custom-metrics-device-agent)
+ [사용자 지정 지표를 생성하여 보안 프로파일에 추가](#dd-detect-console-create)
+ [사용자 지정 지표 세부 정보 보기](#dd-detect-console-read)
+ [사용자 지정 지표 업데이트](#dd-detect-console-edit)
+ [사용자 지정 지표 삭제](#dd-detect-console-delete)

### AWS IoT Device Defender 에이전트 SDK(Python)
<a name="dd-detect-custom-metrics-device-agent"></a>

시작하려면 AWS IoT Device Defender Agent SDK(Python) 샘플 에이전트를 다운로드하세요. 에이전트는 지표를 수집하고 보고서를 게시합니다. 디바이스 측 지표가 게시되면 수집 중인 지표를 보고 경보 설정을 위한 임계값을 확인할 수 있습니다. 디바이스 에이전트 설정에 대한 지침은 [AWS IoT Device Defender 에이전트 SDK(Python) Readme](https://github.com/aws-samples/aws-iot-device-defender-agent-sdk-python/blob/master/README.rst)에서 확인할 수 있습니다. 자세한 내용은 [AWS IoT Device Defender 에이전트 SDK(Python)](https://github.com/aws-samples/aws-iot-device-defender-agent-sdk-python) 단원을 참조하세요.

### 사용자 지정 지표를 생성하여 보안 프로파일에 추가
<a name="dd-detect-console-create"></a>

다음 절차는 콘솔에서 사용자 지정 지표를 생성하는 방법을 보여줍니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **지표**를 차례로 선택합니다.

1. **사용자 지정 지표** 페이지에서 **생성**을 선택합니다.

1. **사용자 지정 지표 생성** 페이지에서 다음 작업을 수행합니다.

   1. **이름**에서 사용자 지정 지표의 이름을 입력합니다. 사용자 지정 지표를 생성한 후에는 이 이름을 수정할 수 없습니다.

   1. **표시 이름(선택 사항)**에서 사용자 지정 지표의 친근한 이름을 입력할 수 있습니다. 고유할 필요는 없으며 생성 후 수정할 수 있습니다.

   1. **유형**에서 모니터링할 지표의 유형을 선택합니다. 지표 유형은 **string-list**, **ip-address-list**, **number-list** 및 **number**를 포함합니다. 유형을 생성한 후에는 수정할 수 없습니다.
**참고**  
ML Detect는 **숫자** 유형만 허용합니다.

   1. **태그**에서 리소스와 연결할 태그를 선택할 수 있습니다.

   마쳤으면 **확인(Confirm)**을 선택합니다.

1. 사용자 지정 지표를 만든 후 **사용자 지정 지표** 페이지가 나타나면 새로 만든 사용자 지정 지표를 볼 수 있습니다.

1. 그런 다음 사용자 지정 지표를 보안 프로파일에 추가해야 합니다. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **보안 프로파일**을 차례로 선택합니다.

1. 사용자 지정 지표를 추가할 보안 프로파일을 선택합니다.

1. **작업(Actions)**, **편집(Edit)**을 선택합니다.

1. **보존할 추가 지표(Additional Metrics to retain)**를 선택한 다음 사용자 지정 지표를 선택합니다. **확인(Confirm)** 페이지가 나타날 때까지 다음 화면에서 **다음(Next)**을 선택합니다. **저장(Save)** 및 **계속(Continue)**을 선택합니다. 사용자 지정 지표가 성공적으로 추가되면 보안 프로파일 세부 정보 페이지가 나타납니다.
**참고**  
지표 값에 음수 값이 포함된 지표에서는 백분위수 통계를 사용할 수 없습니다.

### 사용자 지정 지표 세부 정보 보기
<a name="dd-detect-console-read"></a>

다음 절차는 콘솔에서 사용자 지정 지표의 세부 정보를 보는 방법을 보여줍니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **지표**를 차례로 선택합니다.

1. 세부 정보를 보려는 사용자 지정 지표의 **지표 이름**을 선택합니다.

### 사용자 지정 지표 업데이트
<a name="dd-detect-console-edit"></a>

다음 절차는 콘솔에서 사용자 지정 지표를 업데이트하는 방법을 보여줍니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **지표**를 차례로 선택합니다.

1. 업데이트하려는 사용자 지정 지표 옆에 있는 옵션 버튼을 선택합니다. 그리고 나서 **작업**에 **편집**을 선택합니다.

1. **사용자 지정 지표 업데이트** 페이지에서 표시 이름을 편집하고 태그를 제거하거나 추가할 수 있습니다.

1. 완료되면 **업데이트**를 선택합니다. **사용자 지정 지표** 페이지로 이동합니다.

### 사용자 지정 지표 삭제
<a name="dd-detect-console-delete"></a>

다음 절차는 콘솔에서 사용자 지정 지표를 삭제하는 방법을 보여줍니다.

1. 먼저 참조된 보안 프로파일에서 사용자 지정 지표를 제거합니다. 사용자 지정 지표 세부 정보 페이지에서 사용자 지정 지표가 포함된 보안 프로파일을 볼 수 있습니다. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **지표**를 차례로 선택합니다.

1. 제거할 사용자 지정 지표를 선택합니다. 사용자 지정 지표 세부 정보 페이지에서 **보안 프로파일** 아래에 나열된 보안 프로파일에서 사용자 지정 지표를 제거합니다. 

1. [AWS IoT 콘솔](https://console.aws.amazon.com/iot)의 탐색 창에서 **방어**를 확장한 다음 **감지**, **지표**를 차례로 선택합니다.

1. 삭제하려는 사용자 지정 지표 옆에 있는 옵션 버튼을 선택합니다. 그리고 나서 **작업**에 **삭제**를 선택합니다.

1. **사용자 지정 지표를 삭제하시겠습니까?** 메시지에서 **사용자 지정 지표 삭제**를 선택합니다.
**주의**  
사용자 지정 지표를 삭제하면 지표와 연결된 모든 데이터가 손실됩니다. 이 작업은 실행 취소할 수 없습니다.

## CLI에서 사용자 지정 지표를 사용하는 방법
<a name="dd-detect-custom-metrics-how-to-cli"></a>

**Topics**
+ [AWS IoT Device Defender 에이전트 SDK(Python)](#dd-detec-custom-metrics-cli-sdk)
+ [사용자 지정 지표를 생성하여 보안 프로파일에 추가](#dd-detect-custom-cli-create)
+ [사용자 지정 지표 세부 정보 보기](#dd-detect-custom-cli-read)
+ [사용자 지정 지표 업데이트](#dd-detect-custom-cli-edit)
+ [사용자 지정 지표 삭제](#dd-detect-custom-cli-delete)

### AWS IoT Device Defender 에이전트 SDK(Python)
<a name="dd-detec-custom-metrics-cli-sdk"></a>

시작하려면 AWS IoT Device Defender Agent SDK(Python) 샘플 에이전트를 다운로드하세요. 에이전트는 지표를 수집하고 보고서를 게시합니다. 디바이스 측 지표를 게시한 후에는 수집 중인 지표를 확인하고 경보 설정을 위한 임계값을 결정할 수 있습니다. 디바이스 에이전트 설정에 대한 지침은 [AWS IoT Device Defender 에이전트 SDK(Python) Readme](https://github.com/aws-samples/aws-iot-device-defender-agent-sdk-python/blob/master/README.rst)에서 확인할 수 있습니다. 자세한 내용은 [AWS IoT Device Defender 에이전트 SDK(Python)](https://github.com/aws-samples/aws-iot-device-defender-agent-sdk-python) 단원을 참조하세요.

### 사용자 지정 지표를 생성하여 보안 프로파일에 추가
<a name="dd-detect-custom-cli-create"></a>

다음 절차에서는 CLI에서 사용자 지정 지표를 생성하여 보안 프로파일에 추가하는 방법을 소개합니다.

1. `[create-custom-metric](https://docs.aws.amazon.com/cli/latest/reference/iot/create-custom-metric.html)` 명령을 사용하여 사용자 지정 지표를 만들 수 있습니다. 다음 예에서는 배터리 비율을 측정하는 사용자 지정 지표를 생성합니다.

   ```
   aws iot create-custom-metric \
       --metric-name "batteryPercentage" \
       --metric-type "number" \
       --display-name "Remaining battery percentage." \
       --region us-east-1
       --client-request-token "02ccb92b-33e8-4dfa-a0c1-35b181ed26b0" \
   ```

   출력:

   ```
   {
       "metricName": "batteryPercentage",
       "metricArn": "arn:aws:iot:us-east-1:1234564789012:custommetric/batteryPercentage"
   }
   ```

1. 사용자 지정 지표를 만든 후 `[update-security-profile](https://docs.aws.amazon.com/cli/latest/reference/iot/update-security-profile.html)`을(를) 사용하여 기존 프로파일에 사용자 지정 지표를 추가하거나 `[create-security-profile](https://docs.aws.amazon.com/cli/latest/reference/iot/create-security-profile.html)`을(를) 사용하여 사용자 지정 지표를 추가하는 새 보안 프로파일을 생성할 수 있습니다. 여기서는 새 *batteryPercentage* 사용자 지정 지표를 추가하기 위해 *batteryUsage*라는 새 보안 프로파일을 생성합니다. 또한 *cellularBandwidth*라는 Rules Detect 지표를 추가합니다.

   ```
   aws iot create-security-profile \
       --security-profile-name batteryUsage \
       --security-profile-description "Shows how much battery is left in percentile."  \
       --behaviors "[{\"name\":\"great-than-75\",\"metric\":\"batteryPercentage\",\"criteria\":{\"comparisonOperator\":\"greater-than\",\"value\":{\"number\":75},\"consecutiveDatapointsToAlarm\":5,\"consecutiveDatapointsToClear\":1}},{\"name\":\"cellularBandwidth\",\"metric\":\"aws:message-byte-size\",\"criteria\":{\"comparisonOperator\":\"less-than\",\"value\":{\"count\":128},\"consecutiveDatapointsToAlarm\":1,\"consecutiveDatapointsToClear\":1}}]" \
       --region us-east-1
   ```

   출력:

   ```
   {
       "securityProfileArn": "arn:aws:iot:us-east-1:1234564789012:securityprofile/batteryUsage",
       "securityProfileName": "batteryUsage"
   }
   ```

**참고**  
지표 값에 음수 값이 포함된 지표에서는 백분위수 통계를 사용할 수 없습니다.

### 사용자 지정 지표 세부 정보 보기
<a name="dd-detect-custom-cli-read"></a>

다음 절차에서는 CLI에서 사용자 지정 지표에 대한 세부 정보를 보는 방법을 보여줍니다.
+ `[list-custom-metrics](https://docs.aws.amazon.com/cli/latest/reference/iot/list-custom-metrics.html)` 명령을 사용하여 모든 사용자 지정 지표를볼 수 있습니다.

  ```
  aws iot list-custom-metrics \
      --region us-east-1
  ```

  이 명령의 출력은 다음과 같습니다.

  ```
  {
      "metricNames": [
          "batteryPercentage"
      ]
  }
  ```

### 사용자 지정 지표 업데이트
<a name="dd-detect-custom-cli-edit"></a>

다음 절차에서는 CLI에서 사용자 지정 지표를 업데이트하는 방법을 보여줍니다.
+ `[update-custom-metric](https://docs.aws.amazon.com/cli/latest/reference/iot/update-custom-metric.html)` 명령을 사용하여 사용자 지정 지표를 업데이트합니다. 다음 예제에서는 `display-name`을(를) 업데이트합니다.

  ```
  aws iot update-custom-metric \
      --metric-name batteryPercentage \
      --display-name 'remaining battery percentage on device' \
      --region us-east-1
  ```

  이 명령의 출력은 다음과 같습니다.

  ```
  {
      "metricName": "batteryPercentage",
      "metricArn": "arn:aws:iot:us-east-1:1234564789012:custommetric/batteryPercentage",
      "metricType": "number",
      "displayName": "remaining battery percentage on device",
      "creationDate": "2020-11-17T23:01:35.110000-08:00",
      "lastModifiedDate": "2020-11-17T23:02:12.879000-08:00"
  }
  ```

### 사용자 지정 지표 삭제
<a name="dd-detect-custom-cli-delete"></a>

다음 절차에서는 CLI에서 사용자 지정 지표를 삭제하는 방법을 소개합니다.

1. 사용자 지정 지표를 삭제하려면 먼저 연결되어 있는 보안 프로파일에서 분리합니다. `[list-security-profiles](https://docs.aws.amazon.com/cli/latest/reference/iot/list-security-profiles.html)` 명령을 사용하여 특정 사용자 지정 지표가 있는 보안 프로파일을 봅니다.

1. 보안 프로파일에서 사용자 지정 지표를 제거하려면 `[update-security-profiles](https://docs.aws.amazon.com/cli/latest/reference/iot/update-security-profiles.html)` 명령을 사용합니다. 사용자 지정 지표를 제외하고, 유지하려는 모든 정보를 입력합니다.

   ```
   aws iot update-security-profile \
     --security-profile-name batteryUsage \
     --behaviors "[{\"name\":\"cellularBandwidth\",\"metric\":\"aws:message-byte-size\",\"criteria\":{\"comparisonOperator\":\"less-than\",\"value\":{\"count\":128},\"consecutiveDatapointsToAlarm\":1,\"consecutiveDatapointsToClear\":1}}]"
   ```

   이 명령의 출력은 다음과 같습니다.

   ```
   {
     "behaviors": [{\"name\":\"cellularBandwidth\",\"metric\":\"aws:message-byte-size\",\"criteria\":{\"comparisonOperator\":\"less-than\",\"value\":{\"count\":128},\"consecutiveDatapointsToAlarm\":1,\"consecutiveDatapointsToClear\":1}}],
     "securityProfileName": "batteryUsage",
     "lastModifiedDate": 2020-11-17T23:02:12.879000-09:00,
     "securityProfileDescription": "Shows how much battery is left in percentile.",
     "version": 2,
     "securityProfileArn": "arn:aws:iot:us-east-1:1234564789012:securityprofile/batteryUsage",  
     "creationDate": 2020-11-17T23:02:12.879000-09:00
   }
   ```

1. 사용자 지정 지표를 분리한 후에는 `[delete-custom-metric](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-custom-metric.html)` 명령을 사용하여 사용자 지정 지표를 삭제합니다.

   ```
   aws iot delete-custom-metric  \
     --metric-name batteryPercentage \
     --region us-east-1
   ```

   이 명령의 출력은 다음과 같습니다.

   ```
   HTTP 200
   ```

## 사용자 지정 지표 CLI 명령
<a name="dd-detect-custom-metrics-cli-commands"></a>

다음 CLI 명령을 사용하여 사용자 지정 지표를 만들고 관리할 수 있습니다.
+ [create-custom-metric](https://docs.aws.amazon.com/cli/latest/reference/iot/create-custom-metric.html)
+ [describe-custom-metric](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-custom-metric.html)
+ [list-custom-metrics](https://docs.aws.amazon.com/cli/latest/reference/iot/list-custom-metrics.html)
+ [update-custom-metric](https://docs.aws.amazon.com/cli/latest/reference/iot/update-custom-metric.html)
+ [delete-custom-metric](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-custom-metric.html)
+ [list-security-profiles](https://docs.aws.amazon.com/cli/latest/reference/iot/list-security-profiles.html)

## 사용자 지정 지표 API
<a name="dd-detect-custom-metrics-apis"></a>

다음 CLI 명령을 사용하여 사용자 지정 지표를 만들고 관리할 수 있습니다.
+ [CreateCustomMetric](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCustomMetric.html)
+ [DescribeCustomMetric](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCustomMetric.html)
+ [ListCustomMetrics](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCustomMetrics.html)
+ [UpdateCustomMetric](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCustomMetric.html)
+ [DeleteCustomMetric](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteCustomMetric.html)
+ [ListSecurityProfiles](https://docs.aws.amazon.com/iot/latest/apireference/API_ListSecurityProfiles.html)