

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Prometheus 호환 API를 사용한 쿼리
<a name="AMP-onboard-query-APIs"></a>

[Amazon Managed Grafana](AMP-amg.md)와 같은 도구를 사용하는 것이 지표를 보고 쿼리하는 가장 쉬운 방법이지만, Amazon Managed Service for Prometheus는 지표를 쿼리하는 데 사용할 수 있는 몇 가지 Prometheus 호환 API도 지원합니다. 사용 가능한 Prometheus 호환 API에 대한 자세한 내용은 [Prometheus 호환 API](AMP-APIReference-Prometheus-Compatible-Apis.md) 섹션을 참조하세요.

Prometheus 호환 API는 Prometheus 쿼리 언어인 PromQL을 사용하여 반환하려는 데이터를 지정합니다. PromQL 및 해당 구문에 대한 자세한 내용은 Prometheus 설명서의 [Prometheus 쿼리](https://prometheus.io/docs/prometheus/latest/querying/basics/)를 참조하세요.

이러한 API를 사용하여 지표를 쿼리할 때는 AWS 서명 버전 4 서명 프로세스로 요청에 서명해야 합니다. [AWS 서명 버전 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)를 설정하여 서명 프로세스를 간소화할 수 있습니다. 자세한 내용은 [aws-sigv4-proxy](https://github.com/awslabs/aws-sigv4-proxy)를 참조하세요.

를 사용하여 through AWS SigV4 프록시에 서명할 수 있습니다`awscurl`. 다음 주제에서는 [awscurl을 사용하여 Prometheus 호환 APIs](AMP-compatible-APIs.md) 방법을 안내합니다. `awscurl` AWS SigV4

**Topics**
+ [awscurl을 사용하여 Prometheus 호환 API 쿼리](AMP-compatible-APIs.md)

# awscurl을 사용하여 Prometheus 호환 API 쿼리
<a name="AMP-compatible-APIs"></a>

Amazon Managed Service for Prometheus에 대한 API 요청은 [SigV4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)로 서명해야 합니다. [awscurl](https://github.com/okigan/awscurl)을 사용하여 쿼리 프로세스를 간소화할 수 있습니다.

`awscurl`을 설치하려면 Python 3와 pip 패키지 관리자가 설치되어 있어야 합니다.

Linux 기반 인스턴스에서는 다음 명령이 `awscurl`을 설치합니다.

```
$ pip3 install awscurl
```

macOS 시스템에서는 다음 명령이 `awscurl`을 설치합니다.

```
$ brew install awscurl
```

다음 예제는 `awscurl` 쿼리 샘플입니다. *리전*, *Workspace-id* 및 *QUERY* 입력을 사용 사례에 적합한 값으로 바꿉니다.

```
# Define the Prometheus query endpoint URL. This can be found in the Amazon Managed Service for Prometheus console page 
# under the respective workspace. 

$ export AMP_QUERY_ENDPOINT=https://aps-workspaces.Region.amazonaws.com/workspaces/Workspace-id/api/v1/query

# credentials are infered from the default profile
$ awscurl -X POST --region Region \
                  --service aps "${AMP_QUERY_ENDPOINT}" -d 'query=QUERY'  --header 'Content-Type: application/x-www-form-urlencoded'
```

**참고**  
쿼리 문자열은 URL로 인코딩해야 합니다.

`query=up`과 같은 쿼리의 경우 다음과 같은 결과를 얻을 수 있습니다.

```
{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {
          "__name__": "up",
          "instance": "localhost:9090",
          "job": "prometheus",
          "monitor": "monitor"
        },
        "value": [
          1652452637.636,
          "1"
        ]
      },
    ]
  }
}
```

`awscurl`이 제공된 요청에 서명하도록 하려면 다음 방법 중 하나로 유효한 보안 인증을 전달해야 합니다.
+ IAM 역할의 액세스 키 ID와 보안 키를 제공합니다. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 역할에 대한 액세스 키와 보안 키를 찾을 수 있습니다.

  예: 

  ```
  $ export AMP_QUERY_ENDPOINT=https://aps-workspaces.Region.amazonaws.com/workspaces/Workspace_id/api/v1/query
  
  $ awscurl -X POST --region <Region> \
                    --access_key <ACCESS_KEY> \
                    --secret_key <SECRET_KEY> \
                    --service aps "$AMP_QUERY_ENDPOINT?query=<QUERY>"
  ```
+ `.aws/credentials` 및 `/aws/config` 파일에 저장된 구성 파일을 참조합니다. 또한 사용할 프로파일의 이름을 지정하도록 선택할 수 있습니다. 지정하지 않으면 ` default ` 파일이 사용됩니다. 예제:

  ```
  $ export AMP_QUERY_ENDPOINT=https://aps-workspaces.<Region>.amazonaws.com/workspaces/<Workspace_ID>/api/v1/query
  $ awscurl -X POST --region <Region> \
                    --profile <PROFILE_NAME> 
                    --service aps "$AMP_QUERY_ENDPOINT?query=<QUERY>"
  ```
+ EC2 인스턴스와 연결된 인스턴스 프로파일을 사용합니다.

## awscurl 컨테이너를 사용하여 쿼리 요청 실행
<a name="awscurl-container"></a>

다른 버전의 **Python**을 설치하는데 관련 종속성을 실행할 수 없는 경우 컨테이너를 사용하여 `awscurl` 애플리케이션과 해당 종속성을 패키징할 수 있습니다. 다음 예제에서는 **Docker** 런타임을 사용하여 `awscurl`을 배포하지만 OCI 호환 런타임과 이미지가 모두 잘 작동합니다.

```
$ docker pull okigan/awscurl
$ export AMP_QUERY_ENDPOINT=https://aps-workspaces.Region.amazonaws.com/workspaces/Workspace_id/api/v1/query
$ docker run --rm -it okigan/awscurl --access_key $AWS_ACCESS_KEY_ID  --secret_key $AWS_SECRET_ACCESS_KEY \ --region Region --service aps "$AMP_QUERY_ENDPOINT?query=QUERY"
```